代码的坏味道:“横向”编程
2013-04-07 23:21
190 查看
我已经不止一次的看到,有的人代码里有这样的函数
这个函数要处理A,B,C 3个对象,每个对象要进行XXX,YYY,ZZZ,3种处理。于是形成了上面的9个语句。读上面的代码是不容易理解的,因为A.XXX,B.xxxx往往是没有关系的。读者难以理解为什么放在一起。A.XXX A.YYY是有关系的,但是他们隔着很远的距离。直到A.ZZZ读者恍然大悟,原来代码的意图是这样。
这是很不好的设计。大概因为作者写代码的时候,发现ABC都需要做一件什么事情,写完后发现,还需要做另一件事情。这种走一步看一步的结果就导致上述的代码。我称之为横向编程,缺乏立体感,层次感。这会导致冗余代码增加,不容易修改。
最简单的修复的办法,就是函数:
此外如果需要的话,使用template模式,
总之层次化便于减少代码的冗余,便于理解方法之间的关系。
Technorati Tags: 重构,Template
A.XXX B.XXX C.XXX A.YYY B.YYY C.YYY A.ZZZ B.ZZZ C.ZZZ |
这是很不好的设计。大概因为作者写代码的时候,发现ABC都需要做一件什么事情,写完后发现,还需要做另一件事情。这种走一步看一步的结果就导致上述的代码。我称之为横向编程,缺乏立体感,层次感。这会导致冗余代码增加,不容易修改。
最简单的修复的办法,就是函数:
f(Obj){ Obj.XXX Obj.yyy Obj.zzz } |
f(A) f(B) f( C ) |
public class Tmp{ O{ XXX YYY ZZZ } void XXX void YYY void ZZZ } A extends Tmp; B extends Tmp; C extends Tmp; |
Technorati Tags: 重构,Template
相关文章推荐
- JavaScript:指飘器~(有点“象形名字”的味道,鼠标“指”上去,就“飘”起来了)BTW:顺便帮帮我……有点小麻烦……
- javascript编程中一种常见的代码坏味道:Pyramid of doom(金字塔厄运)
- 编程语法分析之“优先级”和“结合律”
- android编程之代码布局(二)
- 创建符合web标准的javascript横向不间断滚动文字代码
- 一起谈.NET技术,从数据到代码—通过代码生成机制实现强类型编程[下篇]
- AT编程常见问题与错误代码的意义
- 通过代码生成机制实现强类型编程
- UNIX-LINUX编程实践教程->第五章->实例代码注解->echostate.c
- 编程珠玑 Pearls(9. 代码调优)
- [重构]读书笔记:代码的坏味道的迹象
- 分布式编程->Remoting的一个代码示例(借助Remoting实现发送信息功能)
- android编程之代码布局(一)
- 编程小结之代码规范——变量
- Android安卓自定义圆角菜单控件,解决自定义xml,书写一大堆代码的烦恼,轻松编程
- 拼凑代码与编程
- 学到的好的代码,实际编程中很有用
- _FILE__,__LINE__,FUNCTION__实现代码跟踪调试(linux下c语言编程)
- Anycodes,在线编程网站上线啦!支持六种编程语言,语法高亮,行数显示,和代码自动折叠。小伙伴们,请速度围观!
- IOCP--Windows服务器编程之客户端代码