软件设计原则——DRY(Dont Repeat Yourself)和KISS( Keep It Simple, Stupid)

在本文中,我将探讨软件设计原则及其优点,为什么设计原则对我们有用,以及如何在日常编程中实现它们。我们将探索DRY和KISS软件设计原则。

DRY(Don’t Repeat Yourself)原则——不要重复你自己

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

违反DRY原则

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

如何实现DRY

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

DRY的好处

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

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

KISS( Keep It Simple, Stupid)原则——保持简单,愚蠢。

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

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

违反KISS原则

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

你会用哪个?

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

如何实现KISS原则

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

KISS原则的好处

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

总结

在编写任何代码或模块时,要记住软件设计原则,并明智地使用它们。让它们成为你的习惯,这样你就不需要每次都记住它们;它将节省开发时间,并使您的软件模块健壮、可维护和可扩展。

原文发布于微信公众号 - 程序你好(codinghello)

原文发表时间:2018-06-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏博岩Java大讲堂

Java虚拟机--Java发展史Java虚拟机

41670
来自专栏领域驱动设计DDD实战进阶

领域驱动设计之实体、值对象、领域服务

59690
来自专栏Java社区

前端小白入门系列课程教程视频

20530
来自专栏程序员互动联盟

如何提高编写代码的速度?

如何提高代码编写的速度,一直是一个逃避不了的问题。在天朝你得像打字员一样做程序员,不然老板和上司都觉得你是在玩耍。对项目的贡献体现在哪里?码农难道不是以code...

45480
来自专栏WeTest质量开放平台团队的专栏

浅谈软件工程师的代码素养

“程序是写给人读的,只是偶尔让计算机执行一下。” ——Donald Ervin Knuth(高德纳)

648130
来自专栏HansBug's Lab

【作业】HansBug的前三次OO作业分析与小结

OO课程目前已经进行了三次的作业,容我在本文中做一点微小的工作。 第一次作业 第一次作业由于难度不大,所以笔者程序实际上写的也比较随意一些。(点击就送指导书~)...

36160
来自专栏屈定‘s Blog

面经

从2016.7来到上海后记录下自己的面试经历,希望能对其他人有所帮助,同时给自己一个提醒.

15040
来自专栏程序员互动联盟

八招让你成为C/C++的编程大牛

这个题目的噱头太大,要真的写起来, 足够写一本书了。 本人是过来人, 结合自身的体会和大家交流一下,希望新人能少走弯路。 每个人的情况不一样,我下面的描述可能并...

42460
来自专栏大数据文摘

编程新手入门踩过的25个“坑”,你犯过其中哪些错误?

20730
来自专栏Crossin的编程教室

【Python 第41课】 用文件保存游戏(3)

你的小游戏现在已经可以保存成绩了,但只有一组成绩,不管谁来玩,都会算在里面。所以今天我还要加上一个更多的功能:存储多组成绩。玩家需要做的就是,在游戏开始前,输入...

27140

扫码关注云+社区

领取腾讯云代金券