命名規則は、より良いメンテナンス可能なコードを作ることができますか?
-
30-09-2019 - |
質問
私は自分の変数、方法、オブジェクトの説明的な名前を与えるのが好きです。明らかに船外に出ることはありませんが、いくつかの例を挙げましょう。
public class Account
{
public decimal Balance { get; set; }
}
Account account = new Account();
account.Balance = 1000;
一部の人々は、あなたが怠zyなタイピストでない限り、以下に行くことを選択することを選択します。
Account acc = new Account();
acc.Balance = 1000;
問題は、これらの略語で論理がある場合です。あなたは何が起こっているのかについて非常に混乱します。
次のオブジェクトを想像してください。
public class Account { public DebitOrder DebitOrder { get; set; } }
public class DebitOrder { BankDetail BankDetail { get; set; } }
public class BankDetail {}
Account acc = new Account();
DebitOrder do = new DebitOrder();
BankDetail bd = new BankDetail();
if(acc.DebitOrder.SomeProperty == do.SomeProperty)
{
}
読みやすさは排水溝を下ります。 Intellisenseという議論が常にあり、変数の上にホバリングして、それらがどんなタイプであるか、またはそれらが何であるかを確認します。読みやすいコードは、簡単に理解できるコードを作成します。
命名規則は、より良いメンテナンス可能なコードを作ることができますか?
解決
はい, もちろん、命名規則は、より良い保守可能なコードを作り出します。
そのため、プログラミングクラスの最初の日に、講師が変数Xまたは私を呼び出すとあなたを叩きます...
変数/メソッド/クラスなどの名前は、純粋にプログラマー向けであることを覚えておく必要があります。コンパイルされた場合、これらはメモリのアドレスのみになります。
読みやすく、自明の命名命名規則、優れたコメント、適切に構造化されたコードの適切なバランスを使用して、より良いメンテナンス可能なコードを作成する必要があります。
他のヒント
はい、スコープが非常に限られていない変数について。
変数の範囲が非常に限られている場合、およびコードがその変数を中心に展開する場合、スローアウェイ変数名で逃げることができます。
たとえば、ループ内のカウンターには、ループ本体が小さく、カウンターが他の意味を持っていない場合、単純な名前を持つことができます。
for (int i = 0; i < 10; i++) arr[i] = 0;
Lambda式は、短い名前を使用してより読みやすくなります。
var items = source.Select(n => n.ToString() + ".");
ただし、短い名前を使用する場合は、何かを省略しようとしないでください。単一の文字またはよく知られている略語がそれを行わない場合、あなたは同じように長い名前を得ることができます。
たとえば、使用 n
上記のラムダ排出のように、数値の場合、機能します。より長いものを使用すると、それはまだ略語です。 itnum
また itmid
名前をより多くの情報を伝えますが、役に立つほど十分ではないので、 itemNumber
また itemId
方が良いだろう。
C#のような言語でプログラムするとき、入力が簡単で、画面上でより多くのコードを適合させるという理由だけで、変数に短い名前を与えることがよくあります。これは、あなたがゾーンにいて、すべてが何であるかを正確に知っているときにうまく機能しますが、まさにあなたが言及した理由のために、それは部外者、あるいは数時間後にもあなた自身に非常に混乱するでしょう。 Nice IDEは変数の名前を簡単に変更できます。これは、夜にプロジェクトから離れる前、または確かに共有する前に、間違いなく行うことをお勧めします。
Guffaは、短い変数名が適切な場合にいくつかの良い点を提起します。