`
bolutes
  • 浏览: 890025 次
文章分类
社区版块
存档分类
最新评论

编写好代码的10条戒律

 
阅读更多

来源:伯乐在线 作者:唐尤华

一、DRY:不要重复你自己(Don’t repeat yourself)
DRY是一条最容易理解但又是相对比较难以应用的原则。它是指当你在两处或者更多的地方发现相似代码时,我们应当把它们抽象成一个新的函数,在之前重复的地方调用新的函数并带上适当的参数。
DRY也许是最普遍的一条编程原则,我从未发现一个开发人员认为编写重复的代码是件好事。但是我发现一些开发人员在编写单元测试时忘记了这条原则,例如:设想一下你改变了一个类的接口,之前已经为这个类编写了很多的单元测试,如果你没有应用DRY原则,这时你需要手动去修改所有使用这个类接口的调用,来与每一个测试实例的新签名匹配。

二、编写短小的函数/方法
有三个非常好的理由,选择编写短小的函数。
1、代码会更容易阅读。
2、代码会更容易重用(短小的函数更容易产生松耦合)。
3、代码会更易于测试。
编者注:松耦合:在软件领域中,“耦合”一般指软件组件之间的依赖程度。耦合度松的软件会有较好的扩展性。

三、给类、函数和变量使用好的命名
直接使用其他开发者的代码而不需要阅读说明文档,没有什么比这更好的事情了,因为代码中的类名、函数名已经能够告诉我们所有需要的信息。所以,采用这种方法,每次在为你的代码中任何元素进行命名的之前请花上几秒钟(思考),这会让大家的生活变得更轻松。

四、为每个类分配正确的职责
一个类只承担一个职责(单一权责),听起来和有些人知道的SOLID原则 很相似,但是这里不是指任意的职责,而是正确的职责。所以,如果我们要设计一个顾客类,我们不会给它创建一个销售的行为,我们只会让它处理所有与一个客户相关的数据。
编者注:SOLID:面向对象设计的五项原则 (是SRP单一职责原则、OCP开闭原则、LSP李式代换原则、ISP依赖反转原则和 DIP接口分离原则,首字符的缩写)。

五、保持代码的条理性
代码条理性分两个层次。
物理上的条理性:无论你采用了哪种结构,包、命名空间、文件夹等等,用一种更容易并且凭直觉就能找到代码存放在哪里的方式来组织你编写的类。
逻辑上的条理性:不论逻辑上从属关系如何,(只要有逻辑从属关系)类都应该能够互相访问彼此的成员变量,但是如果从属于不同的逻辑结构就应当只能通过接口来访问。这种逻辑分组通常会被实现成(逻辑)层、服务等。

六、编写很多的单元测试
测试越多越好,它们是所有代码变动的安全保证,我们会在将来的某一天需要运行这些测试代码。

七、尽早且经常地重构代码(Refactor often and sooner)
软件开发是一个持续发现的过程,为了编写保持与新增/改变的需求匹配的高质量代码,随着开发的进行,重构代码是必不可少的。由于重构是一项带有风险的任务,需要有两个主要的前提条件,来避免由于重构给系统引入新的错误。
1、编写很多的单元测试。
2、每一次重构的幅度要比较小。在开发软件过程中,开始重构2000行代码,3个小时以后发现所有的代码都不能工作,并且导致问题的原因无从查找,因此需要恢复到最初版本,几乎没什么事能比这更让人抓狂了。

八、注释是恶魔
这条特殊戒律有一点争议,我们大多数人学到的是“注释是一个好的习惯”,并且在一段晦涩的代码中有一段注释会比仅仅只有代码好的多,这里我的观点是:给晦涩的代码加注释还不如仅仅留下代码,只需要重构这段代码直到它变得可读为止。(编注:当然了,除了作者说的这种类型的代码,在其他情况下,还是得添加必要的注释,这不仅方便自己日后查看,更有利于后来者维护,请参阅《提高代码可读性的10个注释技巧 》一文。

九、要面向接口编程,不要面向实现编程
Code to an interface, not to an implementation
这是一条经典的原则,面向接口编程会让我们从实现的细节中解放出来,我们只要定义一个协议,并且依据协议调用定义的操作,期望(对方,即被调用的代码)能把实际的实现或者运行时态的实现传递给我们的代码。

十、对代码进行复查
我们都会犯错误,没有什么能比请别人对我们代码做一个非正式快速复查更好的办法来查找错误了。最好不要等到代码都完成以后再复查,当某些重要部分的代码完成后,或者离上一次复查相隔几天之后,就进行复查。
原文出自:Alberto Gutierrez
译文出自:伯乐在线

分享到:
评论

相关推荐

    给Java开发者的10条戒律

    【Java 开发者 10 条戒律】 1. 注释的重要性:代码注解是开发者之间交流的桥梁,能够帮助理解...遵循这10条戒律,Java 开发者可以提高编程效率,降低维护成本,同时提升代码质量和职业素养,成为更专业的开发人员。

    Java开发者十大戒律

    第十条:版本控制和代码审查 使用版本控制系统(如Git)管理代码,进行代码审查,可以发现潜在问题,提高团队协作效率,确保代码质量。 以上十条戒律旨在帮助Java开发者养成良好的编程习惯,提高代码质量和团队合作...

    JAVA开发人员的十大戒律(TXT文件)

    在编写代码时,要注意及时关闭文件流、数据库连接等外部资源,并妥善处理垃圾回收机制,以确保程序高效运行。 #### 十、持续学习与适应新技术 随着技术的不断发展,新的编程语言、框架和工具层出不穷。作为一名...

    Java开发者的十大戒律.pdf

    这意味着编写尽量少的代码,但这并不意味着要舍弃代码的质量和可读性。 Java 开发者应该尽量减少代码的行数,但同时也要确保代码的可读性和可维护性。 四、请不要硬编码 硬编码是指在代码中硬编码变量的值,这可能...

    Java开发者的十大戒律

    #### 戒律十:持续学习与进步 技术更新迭代迅速,作为一名Java开发者,应当不断学习新的编程语言、框架以及最佳实践,以保持竞争力。同时也要注重软技能的培养,如团队协作能力和沟通能力,这些都将有助于职业发展和...

    verilog RTL级代码编写指导(20篇精华文章)

    verilog RTL级代码编写指导(20篇精华文章)目录: Actel HDL Coding Style Guide; Advanced High-level HDL Design Techniques for Programmable Logic; Designing Safe Verilog State Machines with Synplify; ...

    优秀员工的十条戒律

    在进行代码审查时,重点应该是指出代码中存在的问题,而不是针对编写者的个人攻击。通过建设性的反馈可以帮助作者改进代码质量,同时也促进了整个团队的技术进步。 总而言之,作为一名优秀的程序员,不仅要具备扎实...

    程序员编程十条戒律

    1. DRY原则(Don't Repeat Yourself):DRY原则是编程界公认的最佳实践之一,它要求开发者在编写代码时,避免重复。当发现两段或多段代码存在重复时,应当抽象出一个通用的模块或函数,让其他部分通过调用这个通用...

    Java开发人员需知的十大戒律

    【Java开发人员需知的十大戒律】是Java开发者应当遵循的重要原则,旨在提升代码质量、可维护性和可读性。以下是对这十大戒律的详细解析: ...通过遵循这些戒律,Java开发者可以编写出更健壮、更易于理解和维护的代码。

    每个程序员都该知道的10大编码原则

    因此,在着手编写代码之前,应该先进行周密的计划和设计。虽然这可能会暂时减缓开发进度,但从长远来看,它能显著提高代码的质量和可维护性,减少后期修复和重构的成本。 #### 8. 关心自己的代码 对待自己的代码就...

    C程序员十戒

    《C程序员十戒》是C语言编程领域内的一份宝贵指南,由Henry ...通过遵循这些戒律,程序员能够编写出更加健壮、安全且易于维护的代码。值得注意的是,这些原则不仅适用于C语言,对于其他编程语言同样具有参考价值。

    MATLAB 编程风格指南(第二版)中文翻译版.pdf

    同时,指南强调了风格不是戒律,其目的是帮助开发者写出好的代码。尽管具体的风格规则可能因组织和项目的不同而有所调整,但大多数组织和项目都能从一定的风格指导中受益。随着MATLAB语言的持续进化,清晰的代码编写...

    程序员成功之路

    这些戒律可能是为了提高代码质量、团队协作和项目成功率而提出的原则,可能包括: - 写可读性强的代码:注释清晰,遵循命名规范。 - 避免硬编码:减少依赖,提高代码复用性。 - 测试先行:编写单元测试,确保...

    程序员10大职业生存技巧

    程序员10大职业生存技巧 1. 你是最棒的 要相信自己是最棒的程序员,充满自信。随着时间的推移,你的崇拜者会越来越多。... Weinberg的《无我编程10戒律》来反驳,那我可以告诉你,这玩意写于1971年,早就完全out了。

    FPGA设计进阶(复位、毛刺、重利用)

    9. **代码可读性和可维护性**:编写易于理解的代码,便于后期修改和调试。 10. **文档记录**:详尽的文档可以帮助团队协作和后续的维护工作。 **提高同步系统的运行速度** 要提高同步系统的运行速度,首先需要优化...

    struts2+spring+hibernate整合jar包

    这样,整个应用程序的各个部分就可以松耦合,提高了代码的可测试性和可维护性。 在实际项目开发中,整合SSH涉及以下几个步骤: 1. 引入相关jar包:如描述中的压缩包,包含了这三个框架的基本库和其他依赖。 2. 配置...

Global site tag (gtag.js) - Google Analytics