内聚性:将功能类似、相关的API组合在一起的程度。
前两天公司培训CMMI认证,有一个地方和编程差不多,在公司中,如何评估这个员工的效率?这里就要引入一个量化标准的概念。量化的标准体现在编程里就是拆分的最小粒度。
低内聚的表现在代码散落,高内聚应该有以下3个表现:可读性、可复用和可维护。
public class AppManager {
public void saveUserInfor(String name) {
//进行存储操作
}
public void saveFile() {
}
public void showToast() {
}
}
1.如果我们刚接手一个项目,看到以上的代码,在一个类中有很多方法,这些方法还没有注释
2.我们不知道有什么方法,当我们需要一个方法时,我们就回去自己去写一个(没有找到),还会吐槽这公司怎么连这个方法也没有= =
3.这就会造成代码越来越糟
4.我们应该把AppManager 拆分成更多的类 ,例如 关于文件的操作,我们应该写一个FileUtilsl类。
如果在saveUserInfor()方法中,我们有个一个新的参数,我们是不是要先找到调用它的LoginActivity类,然后在回调中修改方法。
class LoginActivity {
//登陆成功
SignHandler.onSignIn(String,listener);
}
class SignHandler {
public static void onSignIn(String response, ISignListener listener) {
//进行操作和修改
}
}
interface ISignListener {
void onSignInSuccess();
}
这样我们在修改时,改动SignHandler就行了,也不用去找对应的Activity了。
总结一下,耦合度和内聚有没有关系呢?答案是有的,当我们低耦合的时候(上面登陆这个例子),都拆分开之后,自然就高内聚了,可读、可复用和可维护。要想高内聚,低耦合是必须的。