zoukankan      html  css  js  c++  java
  • 代码的坏味道【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 
    欢迎转载,但任何转载必须保留完整文章,在显要地方显示署名以及原文链接。如您有任何疑问或者授权方面的协商,请给我留言
  • 相关阅读:
    Java.io.outputstream.PrintStream:打印流
    Codeforces 732F. Tourist Reform (Tarjan缩点)
    退役了
    POJ 3281 Dining (最大流)
    Light oj 1233
    Light oj 1125
    HDU 5521 Meeting (最短路)
    Light oj 1095
    Light oj 1044
    HDU 3549 Flow Problem (dinic模版 && isap模版)
  • 原文地址:https://www.cnblogs.com/liuyoung/p/7819969.html
Copyright © 2011-2022 走看看