`
sinokaka
  • 浏览: 320306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

重构范围小议

阅读更多
  昨天给小组的几个新员工讲解一下重构,主要是因为这两天在对应新员工的一些代码,发现了一些问题,希望他们后面能注意一下,也顺便讲解一下重构,就拿他们的代码讲解了一下重构实战。过后对与重构的定义范围做了一些思考。觉得重构不仅仅是个狭义的范畴--以前我理解的。
   Refactoring is a disciplined technique for restructuring an existing body of code,altering its internal structure without changing its external behavior
   1:大一些来说,重构的对象可以是一个系统,只要不改变软件的外在行为,即软件的功能,那么对整个系统进行大的手术,也是重构。对于用户来说可能什么都没有发生变化,效果可能影响的对象,架构师--可以更快更好的扩展等,编码人员--今后可以更快的响应用户的需求。
   2:次一些,重构的对象可以是一个功能点,不能改变的地方是对外的接口,也就是充当facade的那个类的所有public方法,那么这个功能点内部的剩余的所有方法都可以更改,进行重构,不管是否是public的。影响的对象,今后的维护人员,可以更快的定位问题的所在,可以更快的响应用户的变更需求。
   3:再次,重构的对象就是一个类了,那么不能改变得就是这个类的所有对外的public接口和protected接口,别的都可以修改。影响对象同上。
   4:最后就是方法,字段等了。影响同上。
所以站在不同的角度,站在不同的重构对象上,可以修改的东西也是不同的,就像public方法,如果站在系统和功能点上来说,有时还可以修改的了。这些都应该不是问题。当然了,作为api对外发布的就不一样了。
    罗里罗嗦的说了这么多,主要就是中午自己胡思乱想了很多,就把这些记录下来,看看自己的成长历程。
分享到:
评论
2 楼 badqiu 2007-01-14  
很多情况下重构经常与增加新功能是同时进行
边重构边增加功能
要分清重构与增加新功能这两种情况
1 楼 LucasLee 2007-01-13  
我完全同意你的观点。
我以前也跟同事讨论过这个问题,基本观点是一样的,重构说的改变内部结构不改变外部特征,是可以放在不同的层次和粒度上看的。

相关推荐

Global site tag (gtag.js) - Google Analytics