C++的兩個特性在大型工程裏是很危險

第一個是建構和析構函數,在函數裏面聲明瞭一個變量,

好像什麼都沒做,但在建構和析構函數裏調用了一大坨的東西,

review代碼的時候就容易被忽略掉。

第二個是同名的方法,隱式調用。對一個多次繼承的指針的同名方法的調用,

一眼看過去,不知道調用的是那個父類的方法,

這些父類的方法雖然同名但實際作用可能完全不同。

上述兩個特性都是要在瞭解工程全部來龍去脈後才能正確使用,

這就對大型工程的維護提出了難題,當只閱讀局部代碼是搞不清楚

狀況甚至誤解導致出錯。

 第三個問題是界定某個函數的使用範圍破費腦筋。

很可能的情況是在某個類需要建立一個方法來解決某個問題,

又發現其他同父的類也需要這個方法,就把這個類提升到父類,

又可能發現其他的類也需要這個方法,

兩難,是把這個方法放到兩個不同的類裏面,還是把原本不是一個父類的

兩個類繼承同一個父類,或者乾脆新建了一個父類給這兩個類去繼承。

無論如何想單獨維護這個方法的想法就變得極複雜。

搞不好最後又變成了靜態函數可以全局使用。

總結下來這東西純粹是在自己玩自己。

 

繼續增加

在c++一個類裏面對數據的管理基本是失控狀態,尤其數據比較多的類。

數據的實效性沒有管理都是隨着類的創建而創建刪除而刪除,

一個方法使用數據的範圍完全是隱式的,函數參數成了個擺設,

不知不覺就可能橫跨幾個類使用數據,造成類和類之間的數據耦合埋下隱患。

對一個類的修改也會力不從心,一眼望去很難看出有多少數據地雷埋在下面。

發佈了121 篇原創文章 · 獲贊 19 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章