これにはおそらく答えられないことはわかっていますが、プライベートメンバーを直接使用するか、クラスメソッド内でパブリックアクセサーを使用するかについて、何らかのガイダンスがあるかどうかを探しています。
たとえば、次のコードを考えてみましょう (Java のコードですが、C++ でも非常によく似ています)。
public class Matrix {
// Private Members
private int[][] e;
private int numRows;
private int numCols;
// Accessors
public int rows(){ return this.numRows; }
public int cols(){ return this.numCols; }
// Class Methods
// ...
public void printDimensions()
{
// [A] Using private members
System.out.format("Matrix[%d*%d]\n", this.numRows, this.numCols);
// [B] Using accessors
System.out.format("Matrix[%d*%d]\n", this.rows(), this.cols());
}
このprintDimensions()
関数は、同じ情報を取得する 2 つの方法を示しています。[A] プライベート メンバーを使用する方法 ( this.numRows, this.numCols
) または [B] アクセサーを使用する方法 ( this.rows(), this.cols()
) です。
一方では、プライベート メンバー変数の値を誤って変更する可能性がないため、アクセサーを使用することを好むかもしれません。一方、不要な関数呼び出しを削除することを期待して、プライベート メンバーに直接アクセスすることを好む場合があります。
私の質問は、事実上の標準なのか、それとも優先されているのかということです。