一些软件设计原则
1. Don’t Repeat Yourself (DRY)
DRY原则表示不要重复你自己
,意味着当在两个或多个地方存在一些相似代码时,我们需要把它们的共性抽象出来形成一个唯一的新方法,并且改变现有地方的代码让它们以一些合适的参数调用这个新的方法。
DRY的好处:
减少冗余,增加代码可维护性,降低了代码出现bug概率
如何实现DRY:
模块化
业务和非业务代码分离
通用代码下沉
2. Keep It Simple, Stupid(KISS)
保持简单,一目了然,有时也称为keep it short and simple
,keep it small and simple
等。
这个词是由洛克希德公司的首席工程师 凯利约翰逊(U-2 和 SR-71 黑鸟飞机等的设计者)所创造的。约翰逊向一群设计喷射引擎飞机工程师提供了一些工具,他们所设计的飞机,出现故障时,一名普通的机械工程师可以使用这些工具完成维修。
Stupid
并非愚蠢的意思,而是指设计出的产品要足够的简单,使人理解。
宜家简约的家装设计、苹果iPhone和iPad设计无不遵循了这一原则。
在软件设计领域,遵循KISS原则,可以增加代码可维护性,同时为构建复杂工程打下基石。
3. You aren’t gonna need it(YAGNI)
YAGNI
原则是极限编程(XP)的一个原则,指出程序员应该只考虑和设计必须的功能,避免过度设计。
XP 联合创始人罗恩·杰弗里斯 (Ron Jeffries) 写道:”始终在您真正需要的时候实施,而不是在您预见到需要时才实施。”
原话:
Always implement things when you actually need them, never when you just foresee that you need them.
4. Program to an interface, not an implementation
注重接口,基于接口而非实现(或者基于抽象而非实现)编程 是提高代码灵活性的有效手段。
将接口和实现分离,封装多样性的实现,对外暴露稳定的接口,即使实现变了,接口的调用方无感知,也无需修改。
5. Law of Demeter(LoD)
迪米特法则 (Law of Demeter),又称“最少知识原则”(Principle of Least Knowledge),产生于 1987 年美国东北大学(Northeastern University)的一个名为迪米特(Demeter)的研究项目,由伊恩·荷兰(Ian Holland)提出,被 UML 创始者之一的布奇(Booch)普及,后来又因为在经典著作《程序员修炼之道》(The Pragmatic Programmer)提及而广为人知。
迪米特法则的定义是:只与你的直接朋友交谈,不跟”陌生人”说话(Talk only to your immediate friends and not to strangers)。其含义是:如果两个软件实体无须直接通信,那么就不应当发生直接的相互调用,可以通过第三方转发该调用。其目的是降低类之间的耦合度,提高模块的相对独立性。