首页 > 其他 > 详细

<翻译> Code Smells:代码的直感

时间:2019-03-01 21:48:50      阅读:156      评论:0      收藏:0      [点我收藏+]

编写Python代码时最好遵循的一些规则

参考来源:https://www.ndepend.com/default-rules/NDepend-Rules-Explorer.html?ruleid=ND1000#!

欢迎讨论交流,如有侵权请联系本人!

  • 避免类的代码过多

    类的代码长度最好不要超过200行,当然这一规则仅仅对直接写在类内的代码生效,而且不包括注释所占的长度。一般来说,过长的代码会让后续的开发和维护变得十分复杂。当你发现你的类代码过长的时候,你很有可能是在编写一个万能类。万能类通常会控制过多的行为和变量,而且会突破自身所需功能的逻辑限制,实现过多的功能。做事情的多少不是评判一个类好坏的准则,而是能否恰当的完整本身的任务,所以编写人员应当对此注意。

    改正方法:

    包含过多内容的类应当被拆分成更多的函数和类。类的重构是一件比较繁琐的事情,我们对此有一些简单的建议:

    • 类中相对独立的部分可以分离出来并重构为一个(私有)类,这样可以在当前类中嵌套使用这些功能完整的独立的类别,以达到减少单一类中代码量的目标。
    • 当一个类中的方法不涉及到类或类的实例的数据成员,那么一般情况下,这个方法会用修饰符@staticmethod修饰为静态方法。但如果一个静态方法仅供内部使用,并且不希望此方法被外部调用,那么这个静态方法应当被移到类的外面并声明为模块私有函数。
    • 在重构的过程中,最好事先写好模块测试代码,并且尽量保持接口不变。这样在重构完成后,可以快速测试重构的代码是否功能正确。
  • 避免类的方法过多

    类的方法最好不超过20个,否则将难以理解和维护。类的初始化方法以及其他的类似的默认存在的方法不包括在内。一个拥有过多方法的类,通常承担了过多的责任,也就是说,很有可能属于已经提到的万能类。

    改正方法:

    与前一个问题的改正方法类似,同样需要将类拆分或重构。
  • 避免类的数据成员过多

    类的数据成员最好不要超过15个。过多的数据成员同样会使代码难以理解和维护。

    改正方法:

    • 检查是否有相互包含的数据成员。
    • 将某些类似或相关的数据成员封装起来。可以用内部数据结构(比如说字典)封装,也可以用一个新的类封装。
  • 避免方法代码太多,过程太复杂

    方法的代码最好不要超过35行。代码的折行,空行以及注释所占的行数不算在内。

    改正方法:

    • Python作为高级语言,有许多高级的语法可以使用。使用高级语法的情况下,可以大量缩减代码的行数,不过前提是不能牺牲代码的可读性而强行使用高级语法。
    • 将方法拆分为多个方法,或者将方法内部相对独立的部分拆分成新的方法,并在本方法内部调用,以减少代码行数。方法的使用不仅仅是为了提高代码的复用程度,也是为了让代码能够更加的模块化,从而减少编程过程中以及阅读代码时遇到的困难。
  • 避免方法的参数过多

    方法的参数一般不超过6个,过多的参数会给使用者带来麻烦,并且也不易于编写。

    改正方法:

    与类的数据成员过多的问题的解决方法相似。
  • 避免方法缺少注释或者注释不充分

    方法注释的代码占比不应小于10%。如果方法总体代码不足20行,那么方法的注释比例一般应当要更高。虽然命名良好,逻辑清晰,行文优雅的代码能够让人在缺少注释的情况下同样能够理解代码,但是注释仍然有利于代码编写时理清自己的逻辑,并且能够加块维护人员理解的速度。在代码中使用了特殊的方法,或者针对某一特殊问题作出优化时,注释则是非常必要的了,否则很有可能使后续的维护变的不可能。对于方法参数和功能的注释可以使调用者在不必通读代码的情况下,就能够轻松使用方法,在这一层面上,注释也是十分必要的。

    改正方法:

    • Pylint会提示编写者在合适的地方添加注释。编写者可以根据提示完善程序的注释。
    • 使用reStructuredText格式编写注释之后,可以使用Sphinx自动生成代码的文档。
  • 避免方法内部的耦合性过低

    方法内部的代码应当着重于处理一件事情,也就是所谓的高耦合性。低耦合的代码会破坏方法的逻辑完整性,同样也不利于代码的理解和维护。在这种情况下,即使代码长度并不很长,也应当对方法进行修改或重构。

    改正方法:

    和方法代码过多,过程过于复杂的问题的改正方法类似。
  • 避免方法内部存在过多的局部变量

    方法的局部变量一般不超过15个。8个以上的局部变量就会使代码的阅读变的困难,而15个局部变量会使得代码过于复杂,这种情况下方法最好重构。

    改正方法:

    可以结合使用局部变量封装和方法分解重构的方法避免这一问题的发生。这两种方法以上均提到过具体的步骤,此处不再赘述。

<翻译> Code Smells:代码的直感

原文:https://www.cnblogs.com/icemaster/p/10458839.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!