這篇講的不是什麼技術面,而是每種物件導向程式語言都會碰到的情況。如何存取物件裡面的屬性。把屬性設成公開固然是一種解法,不過這就違反了Information Hiding的原則。各種程式語言作法都不同,這邊講我比較熟悉的部份(C++/C#/Java)。
從Java開始
這次從Java開始談,是因為最單純,沒有任何取巧的空間。
1 | class Person { |
每個getter/setter都要手刻,雖然可以藉由IDE的幫助,不過還是很麻煩。同樣在JVM上的城市語言,Scala就有在這點著墨。
C++的作法
藉由原本就有的Macro幫助,可以少打幾個字。
1 |
|
不過也只是少打幾個字而已,IDE對於的Macro的支援度不同,Code completion可能會有問題。
加上Macro天生就很難除錯,Google C++ Coding Style建議能不用Macro就不用。
C#的Property
C#的Property算是一種語法糖,不過由於編譯器的支援,簡化了遇到的問題。以下以C# 4.0的示範
1 | class Person |
雖然是語法糖,不過這樣表示新蜥易懂,也有很多人試著把這個特性家入到C++中,就知道這特性沒有無所謂,卻很實用。