面向对象

面向对象(二)

2017-03-12  本文已影响3人  万州大牛

方法太长了,方法內局部变量太多,并且繁杂在一起

此时建立一个,方法对象类,局部变量就变成,类的私有字段,原宿主类私有字段,通过原宿主对象传递,再将方法,进行提取为更多小方法。

替换算法

对象间

对象设计

移动字段,移动方法,

提取类,内联并移除类

移动方法非常重要,因为方法代表的就是职责。

用对象取代数值项

简单的例子,一开始,你可能以简单的字符串表示电话号码,可是到后面,逻辑变多复杂,需要灵活维护扩展,你就需要新建电话号码对象。

方法,主要是用来,改变对象的状态,或者,获取对象的状态。要把改变,获取,这两种行为分开。

考虑,你取对象的属性作为一个方法的参数,对比直接传递这个对象?

考虑,调用一个方法获得返回值,然后把这返回值作为参数传给另一个方法,对比在另一个方法里直接调第一个方法?

考虑,有的方法参数总是一起传递,对比把一起传递的参数封装为一个对象?

考虑,对象构建时的常量,readonly

方法,没有公开,就要私有。

考虑,将构造函数改为静态工厂方法,在基类构造子类。

函数返回值,尽量是确切类型,不要object,使用泛型很好。

用异常取代错误码

用检查取代 try catch

字段,方法,移动到父类

父类字段,方法移动到具体子类

相似类,提炼出一个父类

父类,子类合并在一起

组合取代继承

继承取代组合

单一职责,职责暂且就是指方法,职责有大小,职责有粒度,驾驶员开车是职责,开车的具体操作分很多细小的职责。

保安门卫的职责是什么,具体细分的职责是什么。

面对软件开发,初期可能就是从大的职责出发,面对小的职责,可能变化的职责,单独提取出来并封装,保证软件设计的灵活可维护性。

考虑,在需求问题中寻找名词,将名词转换为对象。

面向对象分析,功能分解方法。

功能分解是一种自然的处理复杂问题的方法,所谓大事化小,小事化了。

功能分解,大功能处理步骤,小功能处理步骤,小小功能处理步骤。

功能分解的问题,通常需要主程序控制子程序。

功能分解的问题,应对需求变化的无能为力。

如果一个人关注的东西过多,他是忙不过来的,最终导致关注的事情失败。

如果代码对象关注的东西太多,那后面的需求变更,修改,就坐等bug到来。

未来太多的变化,一切事物都处在变化之中,唯一不变的就是变。

对于一个大方法,更好的方法是分解为更多的小方法。

关注,方法的输入

关注,方法內用到的对象字段

关注,方法是否是对象的职责

低内聚,功能繁杂,和所有对象都似乎有关联,俗称,上帝对象。

我们应该创建的对象是,高内聚,松耦合的对象。

君子生非异也,善假于物也!

超乎能力者不是生来与众不同,而是善于借助外物而已。

上一篇下一篇

猜你喜欢

热点阅读