代码重构之单一职责原则在实际中使用

单一职责原则:Single Responsibility Principle,以下举例说明我在代码重构方面对单一职责原则的使用。

1、单行代码职责单一

private double GetSubtotalAmount(doube singlePrice,int productCount)
 {
   return singlePrice*productCount;
 }

上文中的return语句行代码职责不单一,将其改为:

double subtotalAmount=singlePrice*productCount;

 return subtotalAmount;

2、单个变量职责单一

 private string GetFirstName(string name)
        {
            name = name.Substring(0, 6);
            return name;
        }

上文中的参数变量name被当作返回值使用,改为:

string firstName= name.Substring(0, 6);

return firstName;

3、方法职责单一

 private void OnPageLoad()
        {
            LoadCountryData();
        }
  private void LoadCountryData()
        {
            //... Load Data
            //Set Item Index=0;
        }

将上文中的注释部分//Set Item Index=0提取为一个方法:

private void SetCountryListIndex(int countryIndex)
   {
    //Set Item Index=0;
    }

这样在OnPageLoad里面改为

private void OnPageLoad()
        {
            LoadCountryData();
        SetCountryListIndex(0);
        }

4、类或接口或结构体职责单一,以类为例说明

class UserInfor
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }

        public void UpdateAddress(string newAddress)
        {

        }
    }

可改为:

 class UserInfor
    {
        public string Name { get; set; }
        public int Age { get; set; }
        public string Address { get; set; }
     }

  class UserBehavior
    {
        public void UpdateAddress(UserInfor user)
        {

        }
    }

5、模块职责单一

比如一个系统,有人员基本信息模块、考勤模块、工资管理模块,这三块之间相互独立又有关联,考勤和工资都要具体到每个人,各自分工职责很清楚,而且各模块职责单一。

以上是我在工作中对单一职责的理解和使用,在此抛砖引玉,欢迎斧正批评。

时间: 2024-10-12 19:30:26

代码重构之单一职责原则在实际中使用的相关文章

设计模式之单一职责原则(iOS开发,代码用Objective-C展示)

单一职责原则:就一个类而言,应该只有一个引起它变化的原因. 在iOS开发中,我们会很自然的给一个类添加各种各样的功能,比如随便写一个简单的应用程序,一般都会生成一个viewController类,于是我们将各种各样的代码,商业运算的算法.http请求的参数(params)封装.使用FMDB.coreData时的数据库访问语句都放在这个类里面,这就意味着,无论任何需求变化,都要来修改viewController这个类,这其实是很糟糕的,维护麻烦.复用不可能.缺乏灵活性. 也许上面说的略微夸张,因为

设计模式六大原则(1):单一职责原则

单一职责原则 定义: 不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障. 解决方案: 遵循单一职责原则.分别建立两个类T1.T2,使T1完成职责P1功能,T2完成职责P2功能.这样,当修改类T1时,不会使职责P2发生故障风险:同理,当修改T2时,也不会使职责P1发生故障风险. 单一职责原则是最简单的面向对象设计原则,它用于控制类的粒

设计模式六大原则(1):单一职责原则(转载)

设计模式六大原则(1):单一职责原则 定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责. 问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障. 解决方案:遵循单一职责原则.分别建立两个类T1.T2,使T1完成职责P1功能,T2完成职责P2功能.这样,当修改类T1时,不会使职责P2发生故障风险:同理,当修改T2时,也不会使职责P1发生故障风险. 说到单一职责原则,很多人都会不屑一顾

单一职责原则--设计模式系列

定义 一个类只负责一项职责 职责扩散 什么叫职责扩散,就是职责再进行细化,就拿公司来说,好比客户的需求,需求是不断变化的,而且存在极大的不确定性,说不定哪天上司找到你要重新细化某个需求 所以最好在职责扩散到我们无法控制的程度之前,立刻对代码进行重构 栗子 我们先下面这段代码: class Animal: def __init__(self,name): self.name = name def breathe(self): print('%s用肺呼吸'%self.name) niu = Anim

面向对象五大原则之一:单一职责原则(自我理解)

http://www.cnblogs.com/seacryfly/archive/2011/12/29/2305965.html 只有类对应的(唯一)职责(需求)的变更才会引起代码的重构. The single responsibility principle states that every module or class should have responsibility over a single part of the functionality provided by the so

设计模式六大原则: 单一职责原则

定义:不要存在多于一个导致类变更的原因.通俗的说,即一个类只负责一项职责.  问题由来:类T负责两个不同的职责:职责P1,职责P2.当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障. 解决方案:遵循单一职责原则.分别建立两个类T1.T2,使T1完成职责P1功能,T2完成职责P2功能.这样,当修改类T1时,不会使职责P2发生故障风险:同理,当修改T2时,也不会使职责P1发生故障风险. 说到单一职责原则,很多人都会不屑一顾.因为它太简单了.稍有经验的程序员即

小王和你一起学习系列之设计模式-单一职责原则

单一职责原则,从字面上理解就是做一件事情. 单一职责原则应用的场景包括: 一个接口只做同一类事情 一个类只做同一类事情 一个方法只做一件事情 一段代码只做一件事情 咱们具体分析各个应用场景吧 一.一段代码 ? 一段代码代表一种逻辑.代码是最细粒度,接口.类.方法都是由代码组成的. 二.一个方法 ? 如果方法中的代码逻辑比较简单,哪怕有分支,有不同的逻辑处理,那么也是允许的.如果方法中的代码逻辑很复杂,各种条件判断,如果以后需求发生变更,导致代码发生更改, 修改的时候必然会小心翼翼,生怕改的代码对

php设计模式的六大原则(一):单一职责原则

<?php //单一职责原则 class Modem{ public function dial(){ return "dialing...."; } public function hangup(){ return "hangup!!!"; } public function send(){ return "send info!!!"; } public function receive(){ return "received!

Android与设计模式:用单一职责原则为Activity解耦

一.什么是单一职责原则 单一职责原则(SRP:Single responsibility principle)又称单一功能原则,其定义为:一个类,应该只有一个可以导致变化的原因.光看概念会让人很头疼,我先讲点小例子吧: 二.单一职责原则能解决什么问题 回顾我们的 Android 开发经历,很多人都会发现 Activity 类中的代码总会不知不觉地变得很多,这会让读我们代码的人非常痛苦.而造成这种情况的其中一个原因是:Activity 中需要与用户进行大量的交互,用户的操作会改变 Activity