加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

函数的单一职责原则(SRP)

发布时间:2020-12-13 20:02:40 所属栏目:百科 来源:网络整理
导读:结构化编程强调单一出口的原则,其目的在于增强函数流程的逻辑性。本身这个原则有些过于死板,但其保持代码逻辑性的目的是非常正确的。在面向对象设计,我们都知道要遵循单一职责原则(SRP),而函数也应遵循这一原则,以保证函数体逻辑的清晰并且高内聚。 以

结构化编程强调单一出口的原则,其目的在于增强函数流程的逻辑性。本身这个原则有些过于死板,但其保持代码逻辑性的目的是非常正确的。在面向对象设计,我们都知道要遵循单一职责原则(SRP),而函数也应遵循这一原则,以保证函数体逻辑的清晰并且高内聚。

以下示例中,UpdateValue函数与下面m_value的赋值语句造成了逻辑的分散

当需要变更m_value的赋值逻辑时,往往会修改UpdateValue函数,而忽略了下面的赋值语句,这就会引起新的问题。顾此失彼嘛!

这种情况在代码维护时最容易引入。我们解Bug时,如果只是头疼医头,脚疼医脚,就容易留下一个个补丁,而每个补丁就可能是一个个逻辑碎片。

这样的分散的逻辑会加重维护的成本和风险。为了减少这种风险,首先在设计时和解Bug时要努力保持逻辑的一致性。遇到问题,不是将问题掩盖起来,而是要实实在在的解决它。不要形成破窗,使得风险不断累积。请参考<<如何有效地解Bug (RED方法) >>


在上图的例子中,应当尽量将下面的赋值语句移入UpdateValue函数中,这样将UpdateValue视为m_value的经纪人,统一管理m_value的值的设定。当然,也许m_value所依赖的条件可能分散于各处,这是可以提供较低层次的函数来形成m_value的赋值入口,比如setValue()。这就是setter/getter的概念了。

总之,当设计一个函数时就要明确它的职责,让相关的事务放到内部处理,而不是分散各处。当发现逻辑碎片产生时,应当及时加以清除,以免扩散到影响系统的维护。

转载请注明出处:http://blog.csdn.net/horkychen

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读