3D 空間での位置を表す非常に単純なクラスを作成しています。
現在、ユーザーが個々のX
、Y
およびZ
値に直接アクセスして変更できるようにしています。つまり、パブリック メンバー変数です。
template <typename NumericType = double>
struct Position
{
NumericType X, Y, Z;
// Constructors, operators and stuff...
};
これの背後にある理由NumericType
は、 はテンプレート パラメーターであるため、値の健全性をチェックするための適切な方法があるとは言えません。(ユーザーが位置を負の値で表現することを望まないことをどのように知ることができますか?) したがって、ゲッターやセッターを追加してインターフェイスを複雑にする意味はなく、簡潔さのために直接アクセスを優先する必要があります。
Pos.X = Pos.Y + Pos.Z; // Versus...
Pos.SetX(Pos.GetY() + Pos.GetZ());
これは良い慣行の例外ですか?私のコードの(仮想の)将来のメンテナーは私を追い詰めて顔を殴りますか?