私はいくつかのAndroidコードを見つけました(リンク):
public void getSize(Point outSize) {
synchronized (this) {
updateDisplayInfoLocked();
mDisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);
outSize.x = mTempMetrics.widthPixels;
outSize.y = mTempMetrics.heightPixels;
}
}
そして、疑問に思っているのは、この作品の作者がそのような方法でそれを実装した理由は何ですか? (なぜ、新しいオブジェクトを返す代わりにパラメーターを変更するのですか? Get メソッドは通常、愚かで、戻り値があり、パラメーターを変更しません。私は間違っていますか?)
私が頭のてっぺんから得ることができる唯一の理由は、効率です。このメソッドのユーザーは、作成される Point オブジェクトの数を制御できます。しかし、そのような API を設計することは良い習慣でしょうか?
更新:
私は次のように実装します(または同様の方法で):
public Point getSize() {
Point outSize = new Point();
synchronized (this) {
updateDisplayInfoLocked();
mDisplayInfo.getAppMetrics(mTempMetrics, mCompatibilityInfo);
outSize.x = mTempMetrics.widthPixels;
outSize.y = mTempMetrics.heightPixels;
}
return outSize;
}