超级干货:你应该知道的那些编程原则!
日期: 2021-02-01 分类: 个人收藏 527次阅读
本文翻译自Programming Principles(http://java-design-patterns.com/principles/)。
每个程序员都可以从理解编程原理和模式中受益。这篇概述用于我个人参考,同时我也把它放在这。也许这在设计、讨论或复查中对你有所帮助。但请注意,这还远远不够,你常常需要在相互矛盾的原则之间做出权衡。
本文受The Principles of Good Programming(http://www.artima.com/weblogs/viewpost.jsp?thread=331531)启发。我觉得这份列表已经足够了,但这并不完全符合我个人的想法。此外,我还需要更多的论证、细节以及其他资料的链接。
KISS
大多数系统如果保持简单而不是复杂,效果最好。
为什么
更少的代码可以花更少的时间去写,Bug更少,并且更容易修改。
简单是复杂的最高境界。
完美境地,非冗杂,而不遗。
相关资料
KISS principle(http://en.wikipedia.org/wiki/KISS_principle)
Keep It Simple Stupid (KISS)(http://principles-wiki.net/principles:keep_it_simple_stupid)
YAGNI
YAGNI的意思是“你不需要它”:在必要之前不要做多余的事情。
为什么
去做任何仅在未来需要的特性,意味着从当前迭代需要完成的功能中分出精力。
它使代码膨胀;软件变得更大和更复杂。
怎么做
在当你真正需要它们的时候,才实现它们,而不是在你预见到你需要它们的时候。
相关资料
You Arent Gonna Need It(http://c2.com/xp/YouArentGonnaNeedIt.html)
You’re NOT gonna need it!(http://www.xprogramming.com/Practices/PracNotNeed.html)
You ain’t gonna need it(http://en.wikipedia.org/wiki/You_ain’t_gonna_need_it)
做最简单的事情
为什么
仅有当我们只解决问题本身时,才能最大化地解决实际问题。
怎么做
扪心自问:“最简单的事情是什么?”。
相关资料
Do The Simplest Thing That Could Possibly Work(http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html)
关注点分离
关注点分离是一种将计算机程序分离成不同部分的设计原则,以便每个部分专注于单个关注点。例如,应用程序的业务逻辑是一个关注点而用户界面是另一个关注点。更改用户界面不应要求更改业务逻辑,反之亦然。
引用Edsger W. Dijkstra(https://en.wikipedia.org/wiki/Edsger_W._Dijkstra) (1974)所说:
我有时将其称为“关注点分离”,即使这不可能完全做到,但它也是我所知道的唯一有效的思维整理技巧。这就是我所说的“将注意力集中在某个方面”的意思:这并不意味着忽略其他方面,只是对于从某一方面的
视角公正地来看,另一方面是不相关的事情。
为什么
简化软件应用程序的开发与维护。
当关注点很好地分开时,各个部分可以被重用,并且可以独立开发和更新。
怎么做
将程序功能分成联系部分尽可能少的模块。
相关资料
Separation of Concerns(https://en.wikipedia.org/wiki/Separation_of_concerns)
保持事情不再重复
在一个系统内,每一项认识都必须有一个单一的、明确的、权威的表示。
程序中的每一项重要功能都应该只在源代码中的一个地方实现。相似的函数由不同的代码块执行的情况下,抽象出不同的部分,将它们组合为一个函数通常是有益的。
为什么
重复(无意或有意的重复)会造成噩梦般的维护,保养不良和逻辑矛盾。
对系统中任意单个元素的修改不需要改变其他逻辑上无关的元素。
此外,相关逻辑的元素的变化都是可预测的和均匀的,因此是保持同步的。
怎么做
只在一个处编写业务规则、长表达式、if语句、数学公式、元数据等。
确定系统中使用的每一项认识的唯一来源,然后使用该源来生成该认识的适用实例(代码、文档、测试等)。
使用三法则(Rule of three)(http://en.wikipedia.org/wiki/Rule_of_three_(computer_programming)).
相关资料
Dont Repeat Yourself(http://c2.com/cgi/wiki?DontRepeatYourself)
Don’t repeat yourself(http://en.wikipedia.org/wiki/Don’t_repeat_yourself)
Don’t Repeat Yourself(http://programmer.97things.oreilly.com/wiki/index.php/Don’t_Repeat_Yourself)
相似资料
Abstraction principle(http://en.wikipedia.org/wiki/Abstraction_principle_(computer_programming))
Once And Only Once(http://c2.com/cgi/wiki?OnceAndOnlyOnce) is a subset of DRY (also referred to as the goal of refactoring).
Single Source of Truth(http://en.wikipedia.org/wiki/Single_Source_of_Truth)
A violation of DRY is WET(http://thedailywtf.com
除特别声明,本站所有文章均为原创,如需转载请以超级链接形式注明出处:SmartCat's Blog
精华推荐