Code Complete这本书已经听过很久,却一直没时间读一下,这两天把第一二章读完了。

工作了也有一年多了,也自己在项目中总结了一些东西:

1.相同的东西要拎出来抽象成方法使用:

  这个东西是吃了大亏的,其实抽象方法这种东西你要是每次第二次要调用它的时候就把他抽象出来的话,那样是很清楚的,但要是第二次图省事就copy paste大法,到后来如果要改这段代码的话就需要改好多个地方的,如果别人问你要这个功能,你给他的是一段代码的话,他那边用过去,你这边改了需求,最后就会出现integration的错误,数据上显示出来之后去找真正的错误原因就要找好久,虽然在重构一书中有这么一句为了追求工程速度与代码优美的取舍,如果第二次你可以采取copypaste,但实际上如果真这么干的话,第三次一般会犯拖延症,然后就各种难看以及难维护的代码就出现了。

2.transaction script:

  在刚工作那段时间的时候,都是跟着别人代码的风格来写,比如写个数据存储的transaction code,本来的风格是写个注释,然后跟个十几行的调用dao代码,最后一个transaction得写个100+行,代码可读性就是基于那几行注释了,但别人来看就会很累,而抽象成方法,就那么几行调用方法名的代码,而且能很清楚的知道干了什么,自己以后有什么需求要改,只需要改那个对象的相对应方法。

3.关于if else以及switch:

  这个东西一般取决于从页面上取个值,然后都是'1' '2' '3'或者英文缩写这些,如果代码里出现个if ('1'.equals(direction)),不是你自己,别人不看html代码是肯定不能看懂的了,然后我就会把'1' '2'这些变量提取为consts,比如MODULENAME_DIRECTION_APPROVED='1',这样之后写这些equals代码也会好读很多,但如果一个模块有10+个else if,那就又变得很难看了,用switch的话就会好看一些,但如果多个对象都要有这个方法处理的话,其实更好的方法是在做之前就做好设计,也就是code complete一书里所提到的无论多么紧急的项目,在coding之前都要做好设计,不然扩展性问题就会很严重,就比如两个类Lion和Cat,两个都是猫科动物,两个又都是动物,那肯定是再抽象一个父类出来,之后对他们的对象处理可以在父类中加方法,之后继承的子类要么调用父类的方法,需求不同override掉方法,这样就会方便得多,也不会出现各种else if的难看方法。

4.eclipse refactor的一些常用快捷键
  eclipse提供有refactor功能,你可以使用快捷键alt+shift+t调出来,然后一般平时用到的也就4个:

    1.extract method:顾名思义,就是把方法提出出来,提取后会默认在你的类中,如果你要移动它到其他类中,你可以使用:

    2.move:点击move后者按快捷键m就可以有一个class的查找功能的对话框,找好后移过去就可以了

    3.extract local variable:在你多次调用一个方法返回的变量时候,你可以使用这个给他一个有意义的名字,提高代码的可读性,如果你只用了较少的次数,你也可以用:

    4.inline:把提取出来的local variable去除掉,重新用方法名替换掉。


winterfellding
157 声望2 粉丝