十二班每日投稿无戒学堂:365天极限挑战日更营程序员

由单一职责想到的

2017-12-31  本文已影响26人  老祝读书

昨天帮一个同事B调bug,看到他的代码很乱,一个方法里有几百行代码,而且为了实现一个复杂功能,把很多小功能都相互嵌套在了一起,导致代码看起了很乱。

我就建议同事B把这个方法拆成多个小方法,每个方法只做一件事情,不然现在的代码出现Bug了很难找。其实就是遵循设计模式六大原则中的单一职责。单一职责是指不管一个模块,一个类,还是一个方法都只负责一件事。

至于同事B有没有调整他的代码,我不知道,但是由此我想到了一个问题,就是世间的一切都遵循着单一职责。

物质的最小单位是原子,而原子是由中子,质子,电子组成。不同的中子,质子和电子数量组成了不同的原子。比如,1个质子和1个电子组成了氢气原子,由79个质子,79个电子,118个中子组成金原子。

这估计是最基本的单一职责了吧。原子只遵循原子的职责,中子只遵循中子的职责,电子只遵循电子的职责。但不同数量的原子,中子,电子缺组成了不同的原子。

两个氢原子和一个氧原子组成了水分子H2O,一个碳原子和两个氧原子组成了二氧化碳分子CO2。多个碳原子,多个氢原子和多个氧原子组成了有机化合物,最终形成了生命。在这些分子和有机化合物中的氢原子,碳原子,氧原子都是相同原子,也就是说氢原子,碳原子,氧原子都遵循着单一职责。

不光是简单的分子,有机化合物遵循着单一职责,生命体也是。比如人体,人体内的器官有大脑,胃,肺,肝脏等。大脑负责记忆,运算。胃负责消化食物。肺负责吸收氧气,释放二氧化碳。肝脏负责新陈代谢。也都遵循着单一职责。

其中,大脑又分为左脑和右脑,左脑负责理性思维,右脑负责感性思维。而且大脑还划分了很多区域,不同的区域负责不同的功能,有的区域负责语言,有的区域负责视觉,有的区域负责听觉等等这些也都遵循这单一职责,这些不同的区域又是有相同的神经元组成,而神经元又是由碳,氢,氧,这些原子组成。

好的系统,就应该像人体一样,不同的模块负责不同的功能,模块内部又分为不同的功能区,不同的功能区又使用了共同的工具类,而工具类又是由一些小的工具方法组成。

不光有生命的系统遵循单一职责,无生命的系统也遵循的着单一职责。比如,一个公司中,有的部分负责销售,有的部门负责研发,有的部门负责推广,有的部门负责后勤等等。每个部门也都遵循单一职责,负责好自己部分的事情,公司这个系统才能稳定。研发部门中,有的人负责设计,有的人负责开发,有的人负责测试。每个人遵循着单一职责,负责好自己的事情,才能开发出好产品。

不光是那些自然界或人工的系统需要遵循单一职责。我们个人做事也要遵循单一职责,一次只做一件事。我们的大脑其实是单线程的。比如在开车时打电话,就很容易出事故。据统计,开车时打电话出的事故比酒驾还多。然而,很多人觉得自己的大脑是多线程的。比如在工作时听音乐,但是你自己回忆一下,听音乐时的工作是体力上的,还是脑力上的。

而且大脑中线程的切换很耗费精力,不信可以试一下,用5分钟写东西,然后用5分钟背单词,再用5分钟阅读,这样循环2两小时,你会发现自己不但身心俱疲,而且还什么都没有做。不如,集中40分钟写东西,再用40分钟背单词,再用40分钟背阅读。同样是两个小时,后一种方法要比前一种的效率高很多倍。

世间万事万物都遵循着单一职责的原则,它不只适用于软件开发,更适用于生活,工作的各个方面。

无戒365挑战营 43

上一篇下一篇

猜你喜欢

热点阅读