第一個是建構和析構函數,在函數裏面聲明瞭一個變量,
好像什麼都沒做,但在建構和析構函數裏調用了一大坨的東西,
review代碼的時候就容易被忽略掉。
第二個是同名的方法,隱式調用。對一個多次繼承的指針的同名方法的調用,
一眼看過去,不知道調用的是那個父類的方法,
這些父類的方法雖然同名但實際作用可能完全不同。
上述兩個特性都是要在瞭解工程全部來龍去脈後才能正確使用,
這就對大型工程的維護提出了難題,當只閱讀局部代碼是搞不清楚
狀況甚至誤解導致出錯。
第三個問題是界定某個函數的使用範圍破費腦筋。
很可能的情況是在某個類需要建立一個方法來解決某個問題,
又發現其他同父的類也需要這個方法,就把這個類提升到父類,
又可能發現其他的類也需要這個方法,
兩難,是把這個方法放到兩個不同的類裏面,還是把原本不是一個父類的
兩個類繼承同一個父類,或者乾脆新建了一個父類給這兩個類去繼承。
無論如何想單獨維護這個方法的想法就變得極複雜。
搞不好最後又變成了靜態函數可以全局使用。
總結下來這東西純粹是在自己玩自己。
繼續增加
在c++一個類裏面對數據的管理基本是失控狀態,尤其數據比較多的類。
數據的實效性沒有管理都是隨着類的創建而創建刪除而刪除,
一個方法使用數據的範圍完全是隱式的,函數參數成了個擺設,
不知不覺就可能橫跨幾個類使用數據,造成類和類之間的數據耦合埋下隱患。
對一個類的修改也會力不從心,一眼望去很難看出有多少數據地雷埋在下面。