第一个是建构和析构函数,在函数里面声明了一个变量,
好像什么都没做,但在建构和析构函数里调用了一大坨的东西,
review代码的时候就容易被忽略掉。
第二个是同名的方法,隐式调用。对一个多次继承的指针的同名方法的调用,
一眼看过去,不知道调用的是那个父类的方法,
这些父类的方法虽然同名但实际作用可能完全不同。
上述两个特性都是要在了解工程全部来龙去脉后才能正确使用,
这就对大型工程的维护提出了难题,当只阅读局部代码是搞不清楚
状况甚至误解导致出错。
第三个问题是界定某个函数的使用范围破费脑筋。
很可能的情况是在某个类需要建立一个方法来解决某个问题,
又发现其他同父的类也需要这个方法,就把这个类提升到父类,
又可能发现其他的类也需要这个方法,
两难,是把这个方法放到两个不同的类里面,还是把原本不是一个父类的
两个类继承同一个父类,或者干脆新建了一个父类给这两个类去继承。
无论如何想单独维护这个方法的想法就变得极复杂。
搞不好最后又变成了静态函数可以全局使用。
总结下来这东西纯粹是在自己玩自己。
继续增加
在c++一个类里面对数据的管理基本是失控状态,尤其数据比较多的类。
数据的实效性没有管理都是随着类的创建而创建删除而删除,
一个方法使用数据的范围完全是隐式的,函数参数成了个摆设,
不知不觉就可能横跨几个类使用数据,造成类和类之间的数据耦合埋下隐患。
对一个类的修改也会力不从心,一眼望去很难看出有多少数据地雷埋在下面。