函数的单一职责原则(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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值