Fork me on GitHub

代码的坏味道【1】


 返回总目录


一、Duplicated Code(重复代码)

我们写代码的时候应该遵循DRY原则:Don't Repeat Yourself。如果你在一个以上的地点看到相同的程序结构,那么可以肯定:设法将他们合而为一,程序会变得更好。

1、同一个类的两个函数含有相同的表达式

这时候你要做的就是将重复的代码提炼到一个单独的函数中,然后让这两个函数去调用它。

2、两个互为兄弟的子类含有相同的表达式

要避免这种情况,只需要将两个类的重复的代码提炼出来,然后再将提炼出来的代码推入基类中。

3、不相干类含有相同代码

你应该将重复的代码提炼到一个独立类中,然后在两个类中调用这个新类。

相同表达式只在一个类的一个方法出现,供其他方法调用

二、Long Method(过长函数)

函数的第一规则是要短小,第二规则是还要更短小。这个断言无法被证明。也没有研究结果表明小函数更好。

但是,通常拥有短函数的对象会活得比较好、比较长。

函数到底该多长?我们来看看《代码整洁之道》的作者的一段话:

我们似乎有点偏离话题。好吧,那我们来说说,在长函数中该如何提炼?

1、寻找注释

如果代码前方有一行注释,可以将这段代码替换成一个函数,而且可以在注释的基础上给这个函数命名。

2、条件表达式和循环

可以将这两个分别提炼到独立的函数中

每个方法只做一件事,方法要定义完善、命名准确

 三、Large Class(过大的类)

1、一个类中有太多实例变量

如果想利用单个类做太多的事情,其内部往往就会出现太多的实例变量。一旦如此,重复代码就接踵而至了。

可以将几个变量一起提炼至新类内。提炼时应该选择类内彼此相关的变量,将他们放在一起。通常如果类内的数个变量有着相同的前缀或字尾,这就意味着有机会把他们提炼到某个组件内。

2、一个类中有太多代码

某些字段和方法只被某些实例用到,那就将这些字段和方法移到子类中。

每个类负责一组具有内在的相互关联的任务

 To Be Continued...

 

本次分享到此结束。如果这篇文章对你有帮助的话,评论或推荐下吧!

作者:NaYoung
出处:http://www.cnblogs.com/liuyoung/p/7819969.html 
欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言

 

posted @ 2017-11-13 17:43  NaYoung  阅读(1809)  评论(2编辑  收藏  举报