美文网首页面向对象
面向对象(一)

面向对象(一)

作者: 万州大牛 | 来源:发表于2017-03-12 13:32 被阅读3次

    忌过程耦合,忌封装性差,

    三个原则,一是封装,二是继承,三是多态

    注意保护,类的私有成员变量。

    SOLID原则

    单一,开闭,里氏替换,接口分离,依赖倒置

    私有成员,内部状态

    构造注入

    属性注入

    方法参数注入

    属性返回内部状态

    方法返回内部状态

    类,明确用途

    生命周期,何时创建,状态变化,何时销毁

    关联哪些资源,资源的状态变化

    很难找到修改点,修改就容易引入BUG

    单一职责SRP

    分解长方法,移至短小方法

    switch单独一个方法

    提取方法之后,重新命名方法內变量,参数的名字

    提取方法之后,观察方法內依赖的对象,方法的意图,思考方法是否仍然属于当前类的职责。

    多数情况下,方法依赖什么对象,简单来说,方法的参数,是什么对象,那么方法就应该存在于那个对象所在的类中。

    在将方法移动到依赖对象类中后,可能参数不再需要,方法名字继续变化,根据实际进行调整测试通过。

    对于循环內多行语句,多个职责,可以考虑提取方法,每个方法都进行循环,执行单个职责。

    switch语句不要用在另一个对象的某个属性上,最好在属性自己所在对象上使用switch

    方法再次移动到某个类后,可能需要原类属性作为传入参数调整。

    始终记住,职责,意图,单一职责,单一意图

    我们将方法都归位之后,通俗讲就是,方法足够小,并居住在他应该在的类中。

    我们要开始考虑继承了。。。。

    通常适合继承的是,类型,有多少种类型呢,换句话说,有多少个子类呢?

    有了继承,子类的关系,我们就可以利用多态,替换掉 switch 判断。

    多态,往往更能表达灵活清晰的条件逻辑,switch 判断,if else 判断。

    重复代码。

    相同的程序结构。

    同一个类中,两个方法有相同的代码逻辑。

    两个类,兄弟子类,含有相同的类似代码逻辑,提取出来,放到父类。这时候,有多个选择,父类一个方法,父类一个默认实现,子类重写,父类做一个模板方法模式,子类重写等。

    两个毫不相干的类,出现重复类似代码。提取出来,放在一个新类里面。

    方法太长

    方法內的相同功能逻辑块,if,switch,while 等,这些都是可以提取为更小方法的信号。

    过大的类

    参数过多

    一个原则,方法的参数,应该大多数可以在其宿主类中获得。

    参数实在太多,应该传递对象参数。

    代码发散式变化

    代码散乱式变化

    依恋情节

    将数据和对数据的操作行为包装在一起。

    有个方法,过多的使用另外一个类数据,方法。此时应该把这个方法移动到那个类。

    数据泥团

    a字段,b字段总是一起出现,a参数,b参数总是一起出现,

    这种情况,就需要为a,b封装一个对象

    临时变量,不要重复赋值,重复赋值,说明变量的意图改变,当然除了在循环中。

    不要给方法参数赋值。

    返回值有多个,的方法,思考分隔为几个小方法,思考返回一个对象。

    相关文章

      网友评论

        本文标题:面向对象(一)

        本文链接:https://www.haomeiwen.com/subject/sxgnittx.html