软件设计原则DRY、KISS和YAGNI

学编程 木人张 7个月前 (04-05) 86次浏览 0个评论 扫描二维码
文章目录[隐藏]

DRY(Dont Repeat Yourself)

DRY(Don’t Repeat Yourself)原则——不要重复你自己
DRY代表“不要重复自己”,这是软件开发的一个基本原则,目的是减少信息的重复。干原理是这样表述的:“每一个知识或逻辑必须在一个系统中有一个单一的、明确的表示。”

违反DRY原则
“我们喜欢敲代码”(或者“浪费每个人的时间”):“我们喜欢敲代码”意味着一遍又一遍地写同样的代码或逻辑。这样让管理代码变得很困难的,如果任何逻辑发生变化,那么我们必须在代码中的所有地方进行更改,从而浪费时间。

如何实现DRY
为了避免违反DRY原则,需要把你的系统分成几部分。将代码和逻辑划分为更小的可重用单元,并通过在需要的地方调用代码来使用这些单元代码。不要编写过于冗长的方法,要进行逻辑拆分,并尽量使用现有方法中已经写好的逻辑。

DRY的好处
更少的代码是好的,它节省了时间和精力,易于维护,并且减少了bug的几率。

DRY原则的一个很好的例子是企业库enterprise libraries中的helper类,其中每行代码都在库libraries和helper类中是惟一的。

KISS( Keep It Simple, Stupid)

KISS( Keep It Simple, Stupid)原则——保持简单,愚蠢。
KISS原则使代码简单、清晰、易于理解。编程语言是为人类所理解的,所以保持编码的简单和直接,让人类理解。保证你的方法尽量很小;每个方法都不应该超过40-50行代码。

每个方法应该只解决一个小问题,而不是实现很复杂的功能。如果你在方法中有很多条件,把它们分解成更小的单独的方法。它不仅更易于阅读和维护,而且可以更快地发现bug。

违反KISS原则
我们都经历过在项目中由于一些糟糕的代码,需要大家努力加班解决问题。“既然我们可以只用2-3行就完成同样的事情,他们为什么要写这些不必要的行和条件呢?”看看下面显示的两个代码。

你会用哪个?
如果有两种方法实现的功能是一样的,第一种代码多,但很容易读懂。第二种呢,代码很简练,相对第一代码而言,没那么好理解,你会选哪一种呢?

如何实现KISS原则
为了避免违反KISS原则,尝试编写最简单的代码。为您的问题考虑许多解决方案,并选择最好的解决方案,并将其转换为代码。只要有冗长的代码,就将其分为多个方法,右键单击并在编辑器中重构。试着写一些小的代码块来完成一个任务。

KISS原则的好处
如果我们有一个开发人员编写的一些糟糕的功能,如果我们要求其他开发人员对代码进行修改,那么他首先必须理解代码,这将比必须要花费更多的时间。如果简单地编写代码,那么理解该代码就不会有任何困难,它将更容易修改,而且花费的时间也会大大减少。

YAGNI (You Ain’t Gonna Need It)

第三条准则是适可而止。只有当你需要的时候才去添加额外的功能,不要过度设计。

我们经常会在开发当中尽可能的迎合未来可能的需求。而为了迎合某些产生概率极低的需求而设计的成本是非常高的,这种过度设计的收益非常低。可能你深思熟虑的设计花了不少时间成本,却在未来的两三年内这个设计却完全没有派上用场。一些设计是否必要,更多的应该基于当前的情况。而不是为了应对未来的各种变化,画蛇添足的设计。

如果淘宝一开始就往日均交易上亿的情况进行设计的话,那么可能就不会有今天的淘宝了。因为创业公司的时间是非常宝贵的,比其他公司早一步退出新的服务就能抢占先机。并不是说淘宝不需要考虑以后交易量暴增的情况,而是不应该以当前日均交易才几万的情况下去设计编码日均交易上亿的项目。过度设计往往会延缓开发迭代的速度。


木人张,版权所有丨如未注明 , 均为原创,禁止转载。
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址