Readable Members 的存取權限在 class 中的位置按何順序排列為佳?
本來C++程序的習慣也是像Java一樣把private成員放在最開始。然而,C++社區迅速的認識到這是一個有害的規範,這個規範現在已經被修正。 public 接口應該放在class的最開始,其次是protected成員,最後是private成員。原因是:
◆程序員應該更關心接口而不是具體實現。 ◆當程序員需要用一個類的時候,他們需要的是接口而不是實現。 把接口放在開始是非常有意義的。把實現部分,私有部分,放在開始是一個歷史遺留問題。最後還是要反覆強調一下,一個類的接口的重要性超過實現細節。 同樣,倫敦大學帝國學院關於C++的指面中也說到:把公有的部分放在前面,讀者會更感興趣閱讀,然後是保護的部分,最後是私有的部分。 有人會持反對意見,認為讀者可以使用程序文檔來理解類,而不是直接看源代碼。這種理由似乎不成立,因為程序文檔中沒有相關的實現細節,這時看源代碼是很有必要的。 所有的技術文檔,通常都把難理解的資訊放在開頭,比如抽象的學術論文。為什麼Java不打破這種常規呢?把私有成員放在最開頭部分看起來是不是打破常規的好習慣。這種習慣似乎是sun早期的編碼規範造成的。 將代碼按照javadoc的順序編排是非常好的:首先是構造方法,然後是非私有方法,最後是私有部分和方法。這樣讀者閱讀的時候很自然的從抽象層次的高向低運動。 |
C08.論文研究(Research) >