我正在使用C++和C#開發一段時間後的Java項目,並且對構造函數中字段初始化的最佳做法有疑問。基本上,假設我有一個簡單的Point類。在C++中構造我的字段初始化會是什麼樣子:類構造函數中的字段初始化:直接或通過「setter」?
class Point {
public:
// Default constructor
Point(double x, double y) : x(x), y(Y) { }
protected:
// Coordinates
double x, y;
};
在C#...
class Point {
// Coordinates, with automatic properties
public double X { get; protected set; }
public double Y { get; protected set; }
// Default constructor
Point(double x, double y) {
X = x;
Y = y;
}
}
在Java ...最佳實踐建議來定義的getter/setter方法必須是場從外面訪問。但是最好從課堂內部使用它們?這個疑問來自於Eclipse看起來很舒服,即將類代碼中的每個this.field = field
轉換爲setField(field)
以獲得具有getter/setter的字段,即使我在類代碼中發生讀/寫操作(因此我不需要使用類接口)。
這基本上爲每個訪問添加一個函數調用。現在,除了設置字段涉及其他一些操作(即驗證,處理等)的情況是否有這種意義?常識意味着使用getters/setters類似於使用C#屬性,但在這裏我特別關注C#的自動屬性,它只涉及基本訪問權限,不進行任何處理。所以問題是:在類代碼中沒有額外處理的情況下調用getter/setter是否有好處?
謝謝
Tunnuz
這就是要點。 +1以獲得更清晰的答案。 – 2011-02-09 11:02:05