`
cooler1217
  • 浏览: 367833 次
  • 性别: Icon_minigender_1
  • 来自: 长春
社区版块
存档分类
最新评论

程序员必须遵守的规则

阅读更多
好的编程原则跟好的系统设计原则和技术实施原则有着密切的联系。下面的这些编程原则在过去的这些年里让我成为了一名优秀的程序员,我相信,这些原则对任何一个开发人员来说,都能让他的编程能力大幅度的提高,能让他开发出可维护性更强、缺陷更少的程序。

我不要自我重复 — 这也许是在编程开发这最最基本的一个信条,就是要告诉你不要出现重复的代码。我们很多的编程结构之所以存在,就是为了帮助我们消除重复(例如,循环语句,函数,类,等等)。一旦程序里开始有重复现象的出现(例如很长的表达式、一大堆的语句,但都是为了表达相同的概念),你就需要对代码进行一次新的提炼,抽象。
http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

提炼原则 — 跟“不要自我重复原则”相关,这一原则是说“程序中任何一段具有功能性的代码在源代码文件中应该唯一的存在。”
http://en.wikipedia.org/wiki/Abstraction_principle_(programming)

保持简单 — 简单化(避免复杂)永远都应该是你的头等目标。简单的程序让你写起来容易,产生的bug更少,更容易维护修改。
http://en.wikipedia.org/wiki/KISS_principle

不要开发你目前用不到的功能 — 除非你真正需要用到它,否则不要轻易加上那些乱七八糟用不到的功能。
http://en.wikipedia.org/wiki/YAGNI

用最简单的方法让程序跑起来 — 在开发时有个非常好的问题你需要问问自己,“怎样才能最简单的让程序跑起来?”这能帮助我们在设计时让程序保持简单。
http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html

不要让我动脑子 — 这实际上是Steve Krug 关于web界面操作的一本书的书名,但也适用于编程。主旨是,程序代码应该让人们花最小的努力就能读懂和理解。如果一段程序对于阅读者来说需要花费太多的努力才能理解,那它很可能需要进一步简化。
http://www.sensible.com/dmmt.html

开放/封闭原则 — 程序里的实体项(类,模块,函数等)应该对扩展行为开放,对修改行为关闭。换句话说,不要写允许别人修改的类,应该写能让人们扩展的类。
http://en.wikipedia.org/wiki/Open_Closed_Principle

为维护者写程序 — 任何值得你编写的程序在将来都是值得你去维护的,也许由你维护,也许由他人。在将来,当你不得不维护这些程序时,你对这些代码的记忆会基本上跟一个陌生人一样,所以,你最好还是当成一直在给别人写程序。一个有助于你记住这个原则的办法是“写程序时时刻记着,这个将来要维护你写的程序的人是一个有严重暴力倾向,并且知道你住在哪里的精神变态者”。
http://c2.com/cgi/wiki?CodeForTheMaintainer

最少意外原则 — 最少意外原则通常是使用在用户界面设计上,但这个原则同样适用于编写程序。程序代码应尽可能的不要让阅读者感到意外。也就是说应该遵循编码规范和常见习惯,按照公认的习惯方式进行组织和命名,不符常规的编程动作应该尽可能的避免。
http://en.wikipedia.org/wiki/Principle_of_least_astonishment

单一职责原则 — 一个代码组件(例如类或函数)应该只执行单一的预设的任务。
http://en.wikipedia.org/wiki/Single_responsibility_principle

最小化耦合关系 — 一个代码片段(代码块,函数,类等)应该最小化它对其它代码的依赖。这个目标通过尽可能少的使用共享变量来实现。“低耦合是一个计算机系统结构合理、设计优秀的标志,把它与高聚合特征联合起来,会对可读性和可维护性等重要目标的实现具有重要的意义。”
http://en.wikipedia.org/wiki/Coupling_(computer_programming)

最大化内聚性 — 具有相似功能的代码应该放在同一个代码组件里。
http://en.wikipedia.org/wiki/Cohesion_(computer_science)

隐藏实现细节 — 隐藏实现细节能最小化你在修改程序组件时产生的对那些使用这个组件的其它程序模块的影响。
http://en.wikipedia.org/wiki/Information_Hiding

笛米特法则(Law of Demeter) — 程序组件应该只跟它的直系亲属有关系(例如继承类,内包含的对象,通过参数入口传入的对象等。)
http://en.wikipedia.org/wiki/Law_of_Demeter

避免过早优化 — 只有当你的程序没有其它问题,只是比你预期的要慢时,你才能去考虑优化工作。只有当其它工作都做完后,你才能考虑优化问题,而且你只应该依据经验做法来优化。“对于小幅度的性能改进都不该考虑,要优化就应该是97%的性能提升:过早优化是一切罪恶的根源”—Donald Knuth。
http://en.wikipedia.org/wiki/Program_optimization

代码复用 — 这不是非常核心的原则,但它跟其它原则一样非常有价值。代码复用能提高程序的可靠性,节省你的开发时间。
http://en.wikipedia.org/wiki/Code_reuse

职责分离 — 不同领域的功能应该由完全不同的代码模块来管理,尽量减少这样的模块之间的重叠。 http://en.wikipedia.org/wiki/Separation_of_concerns

拥抱变化 — 这是Kent Beck的一本书的副标题,它也是极限编程和敏捷开发方法的基本信条之一。很多的其它原则都基于此观念:面对变化,欢迎变化。事实上,一些经典的软件工程原则,例如最小化耦合,就是为了让程序更容易面对变化。不论你是否采用了极限编程方法,这个原则对你的程序开发都有重要意义。http://www.amazon.com/gp/product/0321278658


原文:http://www.aqee.net/principles-of-good-programming/
分享到:
评论

相关推荐

    C#程序员参考手册(pdf文件)

    本书是C#语言和在每个C#程序中都要用到的核心.net类库的一个综合参考资料。本书可以为成三个主要部分: 第一部分详细讨论了C#语言...第三总部是附录,讲述在C#中代表特殊含义的关键字,和C#编程应该遵守的命名规则。

    《C#程序员参考手册》

    第一部分详细讨论了C#语言本身的各种功能 第二部分讨论了常用的类库中定义的类型和他们的方法和属性,并举例说明了她们的用法。...第三部分是附录,讲述了C#中代表特殊含义的关键字和C#变成应该遵守的命名规则。

    XML轻松学习手册--XML肯定是未来的发展趋势,不论是网页设计师还是网络程序员,都应该及时学习和了解

    XML的parser发展为两类:一种是"非确认类paeser",只检测文档是否遵守XML语法规则,是否用元素标识建立了文档树。另一种是"确认类paeser",它不但检测文档语法,结构树,而且比较解析你使用的元素标识是否遵守了相应...

    程序员需要经常刷题吗-object-calisthenics:我们入职体验的第一天

    遵守规则,看看你的结局。 如果它不舒服,退后一步,看看你可以利用什么让你感到舒服。 您可能会发现,如果您继续努力,您会发现您的代码自然地符合这些规则。 大多数值得做的新事物都很困难,让自己有机会将它们...

    C_编码规范(中文)

    为了使应用程序的结构和编码风格标准化,便于阅读和理解编码,以提高开发效率和产品的标准化,制订一套开发规范和标准势在必行。...本规范主要针对C#程序员,但是其中许多规则同时适用于其他语言的程序员。

    C++test 代码静态检查规则制作方法

    在一个团队进行软件开发的过程中,一般都会制定一个大家共同遵守的编码规范,程序员遵循良好的编码规范写程序有很多好处:

    程序员为什么还要刷题-Clean-JavaScript-Code:干净的JavaScript代码

    并非此处的每一项原则都必须严格遵守,普遍同意的就更少了。 这些只是指导方针,仅此而已,但它们是由Clean Code的作者根据多年的集体经验编纂的。 我们的软件工程Craft.io只有 50 多年的历史,我们仍在学习很多东西...

    C++Test代码静态检查规则制作方法

    在一个团队进行软件开发的过程中,一般都会制定一个大家共同遵守的编码规范,程序员遵循良好的编码规范写程序有很多好处:1.有助于程序的维护,降低软件生命周期成本,符合项目管理的规律;2.使团队中相关人员的流动...

    Go语言编程规范中文版-Google出品

    - 成为在可读性审查时的详尽的意⻅清单 列出所有的规则,期望每个人在任何时候都能记住并遵守 - 在语言特型和⻛格的使用上取代良好的判断力 - 为了消除⻛格差异,证明大规模的改变是合理的 不同 Go 程序员之间以及...

    Google开源项目风格指南 C++ 4.4.5 (2016) 最新中文版

    保持统一编程风格并遵守约定意味着可以很容易根据 “模式匹配” 规则来推断各种标识符的含义. 创建通用, 必需的习惯用语和模式可以使代码更容易理解. 在一些情况下可能有充分的理由改变某些编程风格, 但我们还是...

    谈谈Linux内核驱动的编码风格

    不过, 在不遵守规则的程序员队伍里,我并不是孤独的。如果去看drivers/staging下的代码,会发现很多驱动程序都没有严格遵守内核的coding style,而且在很多驱动程序的TODO文件里,都会把”checkpatch.pl fixes”...

    《DoitPHP编码规范》.zip

    标准化的重要性和好处 “不以规矩,不成方圆”,当一个软件项目的开发遵守公共一致的标准时,整个团队成员形成并保持一致的编码风格,整个项目文件如同一人所写。每个程序员的代码都易于为他人所理解,提高了代码的...

    高薪程序员必备刷题软件-ER2020-ExplicaJa-MariaDB-NodeJS-AngularJS:需求工程项目。创建在线辅导WebA

    鉴于当前的流行病情况,该公司被迫进行自我改造,即重新定义其经营范围,以遵守社会距离规则并确保其经济生存。 因此,该公司选择“现代化”并开始以最安全的方式提供服务,即在线。 最初,它只应该创建一个交互式...

    汇编语言全接触.chm

    在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用...

    汇编语言全接触(全)

    在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用...

    汇编语言全接触——Win32Masm!!!

    在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用...

    汇编语言全接触

    在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用...

    汇编语言全接触CHM

    在Win32下编程,有许多重要的规则需要遵守。有一条很重要的是:Windows 在内部频繁使用 ESI,EDI,EBP,EBX 寄存器,而且并不去检测这些寄存器的值是否被更改,这样当您要使用这些寄存器时必须先保存它们的值,待用...

Global site tag (gtag.js) - Google Analytics