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

简介: 结构化编程强调单一出口的原则,其目的在于增强函数流程的逻辑性。本身这个原则有些过于死板,但其保持代码逻辑性的目的是非常正确的。在面向对象设计,我们都知道要遵循单一职责原则(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

目录
相关文章
|
设计模式 安全 Java
设计原则之接口隔离原则
设计原则之接口隔离原则
50 0
设计原则之接口隔离原则
|
设计模式
单一职责原则|设计原则
本文带大家学习和了解第一种设计原则,单一职责原则
|
Java API 开发工具
接口隔离原则|设计原则
今天为大家带来的依旧是 设计原则 的知识: 接口隔离原则
|
设计模式
里氏替换原则|设计原则
里氏替换原则的内容可以描述为: “派生类(子类)对象可以在程序中代替其基类(超类)对象。”
|
XML JSON 数据格式
单一职责原则详解
单一职责原则详解
171 0
|
程序员 数据库管理
设计原则(二):SRP 单一职责原则
设计原则(二):SRP 单一职责原则
126 0
|
算法
设计原则(四):LSP 里氏替换原则
设计原则(四):LSP 里氏替换原则
130 0
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
设计原则与思想 --- 单一职责原则(SRP)
面向对象基本原则(1)- 单一职责原则与接口隔离原则
面向对象基本原则(1)- 单一职责原则与接口隔离原则 面向对象基本原则(2)- 里式代换原则与依赖倒置原则 面向对象基本原则(3)- 最少知道原则与开闭原则
|
数据安全/隐私保护 iOS开发
单一职责原则(Single Responsibility Principle,SRP)(中)
单一职责原则(Single Responsibility Principle,SRP)(中)
200 0
单一职责原则(Single Responsibility Principle,SRP)(中)