优秀编程的原则

programming May 04, 2019 阅读量:

长久以来,不论是初出茅庐的程序员还是业界的老前辈,都在强调着编程原则和设计原则的重要性。Bob大叔在他的《整洁架构之道》中提到,“写这本书就是为了讲述这些规则,这些永恒的,不变的软件架构规则。”

在学习各种编程原则的时候,看到了 Christopher Diggins 的这篇优秀编程(Good Programming)的原则,其中罗列了各种原则以及相应的链接,认为多年来这些编程原则帮助让其成为更好的程序员,且可以帮助任何开发人员来提高效率,写出更加易于维护、BUG更少的代码。

DRY-Don‘t repeat yourself - 这是编程中的一个基本原则,就是避免重复。许多编程结构仅用于此目的(例如循环,函数,类等)。一旦你开始重复自己(例如一个长表达式,一系列语句,相同的概念),就将其提取出来进行抽象化。 http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

抽象原则 - 与DRY相关的抽象原则是“程序中的每一个重要功能都应该在源代码中的一个地方实现”。http://en.wikipedia.org/wiki/Abstraction_principle_(programming

KISS(保持简单,愚蠢!) - 简单并避免复杂性应该始终是一个关键的目标。简单的代码编写起来花的时间更短,错误更少,更容易修改。 http://en.wikipedia.org/wiki/KISS_principle

避免创建 YAGNI(You aren‘t going to need it) - 尝试先不添加功能,直到你需要它的时候,再去创建。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/Coupling_(computer_programming))

最大化内聚 - 同一组件中应该能够找到具有类似功能的代码。 http://en.wikipedia.org/wiki/Cohesion_(computer_science

隐藏实现的过程 - 隐藏实现的过程,以便于更容易修改代码组件的实现,同时应当减小对使用该组件的任何其他模块的影响。 http://en.wikipedia.org/wiki/Information_Hiding

迪米特法则 - 一个组件只应与它的直接关系进行通信(例如它继承的类,它包含的对象,通过参数传递的对象等) http://en.wikipedia.org/wiki/Law_of_Demeter

避免过早优化 - 除非你的代码有效,否则不要考虑优化,但要比你想要的慢。只有这样才能开始考虑优化,然后才能借助经验数据。“我们应该忘记小的效率,大约97%的时间说:过早的优化是所有邪恶的根源” - 唐纳德克努特。 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

参考文献: