代码的坏味道

来源:互联网 发布:ff14好看的猫女数据 编辑:程序博客网 时间:2024/05/17 09:40
 最近在看Martin Flower的《重构》。
    我认为大师的过人之处在于:大师善于记录、总结、提炼,最后成就一本经典著作,文笔流畅、娓娓道来、寓教于乐。
   而我们的教科书,生硬古板,即使能把书上的东西背下来,也不知道有何用、在何处用、怎样用。
   刚看完代码《代码的坏味道》这章。Martin总列出了22种坏味道。以下这几条我大致能够看懂:
  1、重复代码;
  2、过长的函数;
  3、过大的类;
  4、过长参数列;
  5、过多的注释。
   我准备结合最近做的事情,谈一下重复代码和过多的注释。
   最近我在开发一个数据交换功能,以XML为交换文件。周四就大致完成了。周五再看看代码,觉得非改不可。
   先谈一下重复代码。
   在解析xml时,我需要把不同的node解析成相应的数据对象。我在开发过程中就感觉修改困难,要在几个地方作同样的修改。于是引进一个超类Parser,大部分操作写在超类中,用一个toPojo()函数解析不同的数据对象。
    原来的各个解析函数返回不同值对象,如Item,Law,Answer等,现在公用的toPojo()函数只能有一种类型的返回值。怎么办呢?于是引进一个标记接口IItem,Item,Law,Answer等类实现这个接口。
    感觉这样做也不地道,存在平行继承(Parser类和IItem类);而Item,Law,Answer类之间本身没有联系,
现在生硬地给它们一个标记接口。但不管怎么样,重构之后,结构清晰得多了。
   接下来谈一下过多的注释。
    我习惯写注释,总怕人错误地调用我这个函数。比如,我给参数添加说明,总是喜欢说:应该先调用某个函数,填充这个参数的某些数据项,然后才调用本函数。
   很明显,这是坏味道。我在用面向对象的语言写面向过程的代码。
   总之,任重道远,我仍旧是面向对象的初学者。以前我几乎是想怎样写就怎样,只管实现功能。写的过程中精神高度紧张,总担心改动此处会影响它处。而面向对象,能够减轻我们的负担,因为结构清晰、低耦合。那怎样进行面向对象的设计,就要努力学习了。我打算接下来会逐一学习Martin的名著。
原创粉丝点击