函数的单⼀职责原则(SRP)value函数什么意思
结构化编程强调单⼀出⼝的原则,其⽬的在于增强函数流程的逻辑性。本⾝这个原则有些过于死板,但其保持代码逻辑性的⽬的是⾮常正确的。在⾯向对象设计,我们都知道要遵循单⼀职责原则(SRP),⽽函数也应遵循这⼀原则,以保证函数体逻辑的清晰并且⾼内聚。
以下⽰例中,UpdateValue函数与下⾯m_value的赋值语句造成了逻辑的分散:
当需要变更m_value的赋值逻辑时,往往会修改UpdateValue函数,⽽忽略了下⾯的赋值语句,这就会引起新的问题。顾此失彼嘛!
这种情况在代码维护时最容易引⼊。我们解Bug时,如果只是头疼医头,脚疼医脚,就容易留下⼀个个补丁,⽽每个补丁就可能是⼀个个逻辑碎⽚。
这样的分散的逻辑会加重维护的成本和风险。为了减少这种风险,⾸先在设计时和解Bug时要努⼒保持逻辑的⼀致性。遇到问题,不是将问题掩盖起来,⽽是要实实在在的解决它。不要形成破窗,使得风险不断累积。请参考<< >>
在上图的例⼦中,应当尽量将下⾯的赋值语句移⼊UpdateValue函数中,这样将UpdateValue视为m_value的经纪⼈,统⼀管理m_value的值的设定。当然,也许m_value所依赖的条件可能分散于各处,这是可以
提供较低层次的函数来形成m_value的赋值⼊⼝,⽐如setValue(…)。这就是setter/getter的概念了。
总之,当设计⼀个函数时就要明确它的职责,让相关的事务放到内部处理,⽽不是分散各处。当发现逻辑碎⽚产⽣时,应当及时加以清除,以免扩散到影响系统的维护。