例を挙げると、次のような多くの C# コードを見てきました。
XmlNode n = GetXmlNode();
String[] attributes = new String[n.Attributes.Count];
for (int x = 0; x < n.Attributes.Count; x++)
{
//do something
}
これが Java の場合、次のようなコードを記述できますが、メソッドを 2 回呼び出すことは罪になります。getAttributes()
私の間違いでなければ、同じメソッドを複数回呼び出すのではなく、メソッド呼び出しによって返されたオブジェクトへの参照を保持する変数を宣言し、その変数を必要な回数だけ使用します。
Node n = GetXmlNode();
String[] attributes = new String[n.getAttributes().getLength()];
for (int x = 0; x < n.getAttributes().getLength(); x++)
{
//do something
}
しかし、C# のプロパティは getter メソッドと setter メソッドが 1 つの型メンバーにカプセル化されているだけなので、同じ規則に従う必要があるのでしょうか?
それとも、標準ライブラリの C# プロパティと Java get メソッドへの呼び出しは、集中的な作業を実行するのではなく、フィールドへの参照を返すだけであると想定するのが「安全」であるため、この場合、ルールは適用されませんか?