java吧 关注:1,253,323贴子:12,742,163

回复:【职场-技能系列の作死和不作死的区别,纪念当年的新手路】

只看楼主收藏回复

过于庞大的类
这和上一点——混乱的类有些类似:很多东西一点一点地都添加到类中,然后它不可避免地就臃肿了。在这种情况下,这样一个类仍然是有意义的,但就是长得太大个了点。这么个庞然大物不但繁琐,而且很容易出现bug,因为大量的代码需要用于操作同一个私有成员变量,所以我们很容易忽视一些细节。
分割一个已经长得很大的类其实是相当枯燥的。这也会成为一个挑战,如果类中的代码高度交织在一起的话。再加上它已经在工作,修复时不能添加新功能,这样一来,我不得说,分割一个过于庞大的类,不能严格地自我规范是不行的。
根据在Ronimo的普遍经验,类保持在500行代码以下、函数保持在50行代码以下是最合适的。不过有时候,这样做反倒不可行,也不明智。但是一般说来,一旦类或函数超出了那个界限我们就可以想办法重构,并将之分割为更小更易于管理的片段了。


268楼2015-01-10 18:52
收起回复
    关于代码注释
    几乎所有的示例代码都会包含注释好了的代码片段,而不说明为什么。这段代码需要修复吗?旧的代码是否已经被取代了?为什么那儿要写这些代码?大家都知道没有注释的代码常常不知所言,但不知何故,很多人都会忘记在自己的代码上注释。
    并行逻辑和代码重复
    还有一个问题就是我经常能在若干个代码段处看到相似的逻辑。
    例如,我们可以从纹理这个名称知道它大概的目标对象,比如说是“TreeBackground.dds”。为了知道纹理是否可以用于tree,我们检查了文件名以便知道它是不是以“tree”开的头。可能使用SDK的话我们用filename.beginsWith(“tree”)可以很快地检测出来。只是这句代码这么短,我们往往会选择哪个地方需要,就直接复制粘贴。当然这样就是代码重复了,而正如每个人都知道的,我们应该避免重复代码,但如果复制的代码是如此之短,我们往往会忘记这一点,很自然地就直接copy了。此处我们面对的问题也是显而易见的:也许后面我们检查某个纹理是否适合tree的方法就得变了,然后我们就不得不实行“霰弹式修改”(即到处修改)策略,一处一处地修复。
    此处的一般规律是,如果是非常具体的代码,那就不要复制,即使原本的代码超级之短,调用函数甚至比直接写需要更多的代码,也应该封装成函数。
    上面讨论的这些内容已经讲得非常透彻了。很多内容甚至你在大学中就学过。但是现在要面临的挑战是你需要一步步地从被动遵守到主动铭记于心养成一种习惯。这也是为什么Ronimo中的实习生最重要的不是学习知识,而是学会自我规范。


    269楼2015-01-10 18:53
    收起回复
      大神,能否留个qq 号,大四狗有事好讨教


      IP属地:北京来自Android客户端270楼2015-01-11 20:25
      回复
        太棒了!


        IP属地:广东271楼2015-01-11 23:05
        回复
          写这么长还不带书签,你是要累死我


          来自Android客户端272楼2015-01-12 00:02
          回复
            no zuo no die


            来自Android客户端273楼2015-01-12 00:19
            回复
              唉,新手碰见如此高深的大神只有膜拜的份


              IP属地:陕西来自手机贴吧275楼2015-01-12 01:48
              回复
                求教:恶补java基础要看什么书


                来自Android客户端276楼2015-01-12 11:08
                收起回复


                  IP属地:河南来自Android客户端279楼2015-01-12 15:36
                  收起回复
                    楼主在哪个城市?薪资待遇如何?


                    IP属地:广东280楼2015-01-12 16:20
                    回复
                      不是会员好意思水帖?我一个帖子是你的6倍经验!这就叫任性!这才有逼格!就是有钱!不说了我得赶快去水帖了不然7天试用过了水的就慢了


                      IP属地:上海来自Android客户端281楼2015-01-12 21:04
                      收起回复
                        已收藏,明天继续。


                        来自Android客户端282楼2015-01-12 23:25
                        收起回复
                          回复 liuhanlcj :这个要看个人习惯的


                          283楼2015-01-13 16:46
                          回复
                            Mark


                            IP属地:广东来自iPhone客户端285楼2015-01-13 19:34
                            回复