马克·扎克伯格会是人工智能吗?
|
关于纵向过长的问题其实就是这个方法或者函数职责不够单一,一个函数中堆积太多功能。 重构的手段很简单:Extract Method,积极抽取函数或方法,隐藏细节保持职责单一。 坏味道:Large Class(过大的类) 过大的类也常常被成为上帝类(God Class),上帝类一般是指维护了太多功能(违反单一职责原则),连上帝也看不懂你的代码。 知识小百科 设计模式的六大原则有: Single Responsibility Principle:单一职责原则 Open Closed Principle:开闭原则 Liskov Substitution Principle:里氏替换原则 Law of Demeter:迪米特法则 Interface Segregation Principle:接口隔离原则 Dependence Inversion Principle:依赖倒置原则 六个原则的首字母联合起来就是 SOLID,两个 L 当成一个。 那如何判断一个类是不是上帝类呢? 一般一个类同时满足以下3个条件就是上帝类: (1)CPFD (Capsules Providing Foreign Data) 从多个不相关类(模块)中引用数据。 (2)WOC (Weighted Operation Count) 类的所有函数的圈复杂度之和超过65。 (3)TCC (Tight Capsule Cohesion) TCC < 1/3 类需要具有低内聚的特性(类中直接相关的方法与全部方法之比小于1/3),也就是较少的private方法。 为什么过大的类是一种坏味道? 过大的类承担了过多的职责,往往有很多重复代码,并且这些重复代码你还不容易发现,这基本就是坏味道的开始。 过大的类被子类继承会导致其他坏味道,比如遗留的馈赠。 如何解决过大的类这种问题呢? 通过观察这个过大类的属性,看有没有一些属性有关联,如果有可以使用 Extract Class 将这些关联属性抽象到一个新类中,并将与这些属性相关的操作都 Move 到新的类中。 通过观察这个过大类的方法,看有没有一些函数或方法存在兄弟关联,如果有可以使用 Extract Subclass(提炼子类)的手段将这些方法提炼到子类中,子类可以继承父类。将相似的行为方法聚集在一个类中拆分到多个类中,可以进一步将发放调用解耦开。 以上方法循环往复,一个大类就可以拆分为多个小的且职责单一的类。 坏味道:Duplicated Code(重复代码) Robert C.Martin:重复可能是软件中一切邪恶的根源。 重复代码一般是由于复制粘贴造成的。需求迭代过程中为了不影响已有功能,通常是将之前的代码copy一份改改,然后匆匆上线。 那为什么重复的代码是一种坏味道呢? 最直接的弊端就是如果你想修改一段代码逻辑,可能会遗漏,甚至需要多次修改才能确保全部修改完。 如何解决重复代码的问题? 下面结合代码实践分几个场景分别描述。
场景1:同一个类中两个方法含有相同的表达式 (编辑:孝感站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
