`
cloudmail
  • 浏览: 271267 次
  • 来自: 广州
社区版块
存档分类
最新评论

优秀程序设计的18大原则

 
阅读更多

良好的编程原则与良好的设计工程原则密切相关。本文总结的这些设计原则,帮助开发者更有效率的编写代码,并帮助成为一名优秀的程序员。

1.避免重复原则(DRY – Don’t repeat yourself)

编程的最基本原则是避免重复。在程序代码中总会有很多结构体,如循环、函数、类等等。一旦你重复某个语句或概念,就会很容易形成一个抽象体。

 

2.抽象原则(Abstraction Principle )

与DRY原则相关。要记住,程序代码中每一个重要的功能,只能出现在源代码的一个位置。

 

3.简单原则(Keep It Simple and Stupid )

简单是软件设计的目标,简单的代码占用时间少,漏洞少,并且易于修改。

 

4.避免创建你不要的代码 Avoid Creating a YAGNI (You aren’t going to need it)

除非你需要它,否则别创建新功能。

 

5.尽可能做可运行的最简单的事(Do the simplest thing that could possibly work)

尽可能做可运行的最简单的事。在编程中,一定要保持简单原则。作为一名程序员不断的反思“如何在工作中做到简化呢?”这将有助于在设计中保持简单的路径。

 

6.别让我思考(Don’t make me think )

这是Steve Krug一本书的标题,同时也和编程有关。所编写的代码一定要易于读易于理解,这样别人才会欣赏,也能够给你提出合理化的建议。相反,若是繁杂难解的程序,其他人总是会避而远之的。

 

7.开闭原则(Open/Closed Principle)

你所编写的软件实体(类、模块、函数等)最好是开源的,这样别人可以拓展开发。不过,对于你的代码,得限定别人不得修改。换句话说,别人可以基于你的代码进行拓展编写,但却不能修改你的代码。

 

8.代码维护(Write Code for the Maintainer)

一个优秀的代码,应当使本人或是他人在将来都能够对它继续编写或维护。代码维护时,或许本人会比较容易,但对他人却比较麻烦。因此你写的代码要尽可能保证他人能够容易维护。用书中原话说“如果一个维护者不再继续维护你的代码,很可能他就有想杀了你的冲动。”

 

9.最小惊讶原则(Principle of least astonishment)

最小惊讶原则通常是在用户界面方面引用,但同样适用于编写的代码。代码应该尽可能减少让读者惊喜。也就是说,你编写的代码只需按照项目的要求来编写。其他华丽的功能就不必了,以免弄巧成拙。

 

10.单一责任原则(Single Responsibility Principle)

某个代码的功能,应该保证只有单一的明确的执行任务。(这点非常重要,也很容易实现!)

 

11.低耦合原则(Minimize Coupling)

代码的任何一个部分应该减少对其他区域代码的依赖关系。尽量不要使用共享参数。低耦合往往是完美结构系统和优秀设计的标志。

 

12.最大限度凝聚原则(Maximize Cohesion)

相似的功能代码应尽量放在一个部分。

 

13.隐藏实现细节(Hide Implementation Details)

隐藏实现细节原则,当其他功能部分发生变化时,能够尽可能降低对其他组件的影响。

 

14.迪米特法则又叫作最少知识原则(Law of Demeter)

该代码只和与其有直接关系的部分连接。(比如:该部分继承的类,包含的对象,参数传递的对象等)。

 

15.避免过早优化(Avoid Premature Optimization)

除非你的代码运行的比你想像中的要慢,否则别去优化。假如你真的想优化,就必须先想好如何用数据证明,它的速度变快了。

“过早的优化是一切罪恶的根源”——Donald Knuth

 

16.代码重用原则(Code Reuse is Good)

重用代码能提高代码的可读性,缩短开发时间。

 

17.关注点分离(Separation of Concerns)

不同领域的功能,应该由不同的代码和最小重迭的模块组成。

 

18.拥抱改变(Embrace Change)

这是Kent Beck一本书的标题,同时也被认为是极限编程和敏捷方法的宗旨。

许多其他原则都是基于这个概念的,即你应该积极面对变化。事实上,一些较老的编程原则如最小化耦合原则都是为了使代码能够容易变化。无论你是否是个极限编程者,基于这个原则去编写代码会让你的工作变得更有意义。

作者简介:Christopher Diggins是加拿大一位有25年编程经验的资深技术人员,曾效力于Microsoft和Autodesk,并创办过两家赢利的互联网公司。

他是《C++ Cookbook》的作者之一,并自己编写了一门编程语言Heron。

原文:http://sd.csdn.net/a/20110729/302424.html

文章作者:程序猿
转自:http://sighlife.com/69.html

 

分享到:
评论

相关推荐

    论程序设计方法(牛人写的)

    结构化程序设计方法强调程序的模块化、抽象化和高内聚低耦合的设计原则,提高了程序的易读性、可维护性和重用性。 在结构化程序设计方法中,程序设计师需要考虑程序的整体架构、模块之间的交互、数据流和控制流等...

    程序设计方法学

    程序设计原则是一系列指导程序员如何编写高质量代码的规则,比如SOLID原则(单一职责原则、开放封闭原则、里氏替换原则、接口隔离原则、依赖倒置原则),遵循这些原则可以帮助开发者编写出更易于维护和扩展的代码。...

    java程序设计课件

    总的来说,天津大学的这门Java程序设计课件涵盖了从基础知识到进阶主题的全面内容,无论对初学者还是有经验的开发者都有很大的学习价值。通过深入学习和实践,可以提升编程技能,为未来的软件开发打下坚实的基础。

    第讲-程序和程序设计算法结构化程序设计方法优秀文档.ppt

    【程序与程序设计】 程序是控制计算机运行的指令序列,它是实现特定功能的逻辑组合。程序设计则是设计、编写和检查这些程序的过程。程序设计语言是软件系统的重要组成部分,是描述计算机指令的工具。通常,我们可以...

    Web程序设计11 Web程序设计11 Web程序设计11

    此外,了解并应用响应式设计原则,以确保应用在不同设备和屏幕尺寸上都能提供优秀的用户体验。 总的来说,Web程序设计11是一门全面的课程,覆盖了Web开发的各个层面,从基础到高级,从理论到实践,旨在帮助学员掌握...

    java 程序设计思想

    Java程序设计思想是编程领域的核心概念,它不仅仅...通过深入阅读《Java程序设计思想》这本书,新手程序员可以系统地学习以上知识点,并逐步提升自己的编程技能和思维深度,为成为一名优秀的Java开发者打下坚实的基础。

    程序设计方法学 课件

    《程序设计方法学》是一门深入探讨编程艺术与科学的学科,旨在教授如何高效、有组织地编写程序,以及如何解决复杂问题。...通过学习,学生不仅能掌握编程技术,更能理解如何优雅地解决问题,成为一名优秀的程序设计者。

    程序设计之道(程序设计中的秘籍)

    书中的内容分为四个部分,分别探讨了编程的哲学、古代大师的经验、设计原则和代码编写的艺术。 在第一部分“寂静虚无篇”中,作者通过寓言的形式阐述了程序设计的本质。程序设计之道被视为一切编程的基础,从操作...

    面向对象程序设计.docx

    根据给定文件的信息,我们可以提炼出关于“面向对象程序设计”的一些关键知识点。这份文档似乎是为大学本科生期末考试准备的题库,包含了单项选择题和主观题,并且附带了详细的答案解析。接下来,我们将围绕面向对象...

    fortran程序设计教程

    这部分内容包括了程序与程序设计的概念,算法及其描述,结构化程序设计和面向对象程序设计的基本原则。同时,还介绍了Fortran语言的发展历程,以及Fortran程序的基本结构和书写格式。 第二章深入探讨了顺序结构程序...

    acm国际大学生程序设计竞赛培训计划 PDF

    - **《数据结构与算法》**(傅清祥,王晓东编著):被赞誉为优秀的算法教材,适合初学者掌握数据结构的基本概念和算法设计原则。 - **《程序设计导引及在线实践》**(李文新):结合理论与实践,引导学生通过在线...

    ACM考试题 ACM程序设计

    - **区域竞赛**: 6月参加东北四省区大学生程序设计大赛,进一步提升团队实力。 - **亚洲区比赛**: 10月至11月期间参加多个ACM/ICPC亚洲区比赛,目标至少参加4至5个分赛区的比赛,增强国际竞争力。 - **月赛与练习赛*...

    《JavaWeb程序设计》整体设计.doc

    课程设计遵循以市场需求为导向,以职业岗位能力培养为核心的原则,参考国内外优秀职业教育经验,采用基于工作过程的课程开发。教学内容围绕Java Web程序员的岗位技能进行模块化设计,通过理论与实践的融合,运用多种...

    第四章-模块化程序设计优秀文档.ppt

    模块化程序设计的原则: 1. 模块的划分:模块的划分要根据其功能来确定,每个模块的功能要明确、单一。 2. 模块的独立性:模块的独立性要强,模块的功能由该模块自身完成,不依赖其他模块。 3. 模块间的关系:模块...

    程序设计实践(通用)

    此外,面向对象编程、设计模式、软件工程原则也是程序设计实践中不可忽视的部分。 在进行程序设计时,通常遵循一定的流程:需求分析,定义问题域,选择合适的编程语言,设计算法,实现代码,测试与调试,最后是文档...

    面向对象程序设计概论优秀文档.ppt

    面向对象程序设计(Object-Oriented Programming,简称OOP)是一种...总的来说,面向对象程序设计是一种强大的编程范式,它通过类和对象的概念,以及抽象、封装、继承和多态等原则,为现代软件开发提供了坚实的基础。

Global site tag (gtag.js) - Google Analytics