今天在写一个程序,其中有几个类是原来的项目中已经存在的,为了图方便我就把这几个类一个一个的拷贝过来了。
每当我拷贝一个的时候我都编译一遍。
当拷贝第一个类的时候,编译时出现错误,提示找不到A类,
把A类再拷贝过来,编译后又说找不到B类,找到B类又说找不到C类,
如此拷贝了半天才把所需要的东西拷贝过来,编译成功。
觉得:
这样A类调用B类,B类调用C类,...他们之间的这些关系太让人郁闷了。应归程序是以前自己写的,少了类知道向哪儿找去,如果是别人写的,估计光找关联的类要找老半天。
由此推想,不刚是拷贝类的时候会出现混乱,这样的时候毕竟很少。别人看代码的时候,出现这样的现象最让人郁闷,正在查看这A类,又要去B类看看怎么回事,很可能这下又从B类到了C类,想象也让人头大,特别是看代码喜欢看究竟的人。
为什么会出现这样的强耦合呢?
第一:缺少规划:
缺少规划是出现这样强耦合的原因之一,写程序很随意,写道哪儿是哪儿,哪儿有写好的函数名就直接拿来用。
第二:设计过度
能出现这么多一环套一环的类,还有一种可能就是设计过度了。自己觉得抽象的很好,把公共部分都抽象在相应的函类里了,越设计类越多,到最后就是这个样子了。
如果说这是设计过度也可以,但是,也可以说这是设计不到位,因为你只把精力放在代码上了,而忽略了设计服务的对象是人,是用代码看代码的人,设计应该是让用代码的人感觉好用,感觉方便,感觉易懂,而不是感觉每个类抽象的很好,但是每个类关联都很多。
所以,如果我们设计代码的时候发现类很多,相互关联【引用】很多,就应该是站在人的角度反思设计的时候了。
设计过度其实还有一种情况就是把函数拆分成n个很小的函数,每个函数是很清楚,但让人理解一个功能却要跳来跳去找n个函数。
第三:没有站在用户的角度考虑【用户:用代码和看代码的人】
我所说的用户是调用你的程序的程序员。
没有站在用户的角度来思考,而仅仅是站在面向对象,技术的角度来思考代码是不好的,就像第二条所说。
给类,函数,变量起一个好名字,添加好的注释,都应该站在用户的角度考虑。
为别人看代码着想,起个好名字,把注释写明白,明白到别人看到一个函数后,根据名称,根据注释就知道这个函数要干什么,不需要查看函数的每句代码去查看作者的意图。
第四:出现了杂烩类
一个类既要干这件事又要干那间事,这期间就可能要引用很多的类,增大了类耦合的可能性。