他の人が簡単に読めるコードを書くにはどうすればよいでしょうか。
13 に答える
他の人がコードを読めるようにする最善の方法は、コードが明確で簡潔であることを確認することです。すなわち、
- 変数、関数、およびクラスには自己文書化された名前を使用します。
- 複雑なアルゴリズムにコメントを付けて、読者がそれが何をするのかを理解するのに長い時間を費やす必要がないようにします。
- タブと改行がコード全体で一定であることを確認してください。
それを超えて、少し主観的かもしれない領域に入り始めますが、ほとんどの人はこれらの項目に同意するはずです.
この質問は主観的なものであり、 FAQに従って、StackOverflow では避ける必要があります。
ここで聞いてはいけない質問とは?
主観的、論争的、または長時間の議論を必要とする質問をすることは避けてください 。答えられる質問の場です!
簡単な答えは次のとおりです。
過度のコメントは避けてください。
// add one to the count: i++;
適切な変数名とメソッド名を使用してください。
int x = i + j; int runSum = prevSum += newValue;
可能な場合は、コーディングの省略形を使用します。
if (x == y) { z = a; } else { z = b; } z = (x == y) ? a : b;
Robert C. Martin によるClean Codeをご覧になることをお勧めします。コードを確実に読みやすくするための多くの有用なプラクティスを提供します。
さらに、コードを徹底的にテストする多数の単体テストによってコードがサポートされている場合、テストの実行内容を確認することで、ユーザーがコードを理解する方法が提供されます。また、テスト駆動開発プロセスに従い、機能の各ビットに対してテストを作成すると、機能が小さくなり、1 つのことだけを適切に実行し、単なるストーリーよりもストーリーのように流れる傾向があることがわかります。 「もの」の大規模で複雑なウェブ。
テストは、コメントよりも最新の状態を維持する傾向があります。コメントはすぐに時代遅れになるという単純な事実のために、私はしばしばコメントを無視します。
コードを美しく、明確かつシンプルに保ちます。何をしているのかが明らかな場合は、コメントしないでください (たとえば、foreach や if が何をするか知っている場合、通常は説明は必要ありません)。
シンプルなものをより少ない行数で作成するコード トリック (自動プロパティなど) も有効です。
コードコンプリートを購入して読む2 。そこには、読みやすく/保守しやすいコードを書くことに関するものがたくさんあります。
主観的な質問ではないと思いますが、範囲が広すぎます。コメントを付けて適切な変数名を付けるだけではありません。人間がコードを理解する方法を扱います。したがって、システムは、読者が次の 2 つの方法で設計のメンタル モデルを簡単に構築できるように実装する必要があります。
トップダウン: ユーザーがシステム ドメインを知っていると仮定すると、ユーザーはそれがどのように実装されるかを推測する傾向があるため、システム パッケージとクラスをスキャンして、識別できるエンティティを探します。クラスに適切な名前を付けて適切にモジュール化すると、非常に役立ちます。
ボトムアップ: ユーザーがコードの一部に到達すると、そこからナビゲーションを開始し、知識の塊を構築します。システムの結束が低く、多くの暗黙の依存関係がある場合、ユーザーは失われます。
Kent Beck は、コミュニケーション、シンプルさ、柔軟性という 3 つの原則を採用しています。もちろん、シンプルさと柔軟性を犠牲にしなければならないこともあれば、その逆もあるでしょう。
これは延々と続く可能性があります。この質問に対する答えは、大きな本に収まります。@rmbarnes が提案したように、Code Complete 2 を購入して読んでください。また、Kent Beck による実装パターンもお勧めします - それはあなたの質問に非常に関連しています。
- なぜそれが何をするのかについて、コードを文書化します。
- すべての変数関数などの名前が一貫してわかりやすいものであることを確認してください
- 空白を使用してコードの論理部分をグループ化し、読み取り中に流れるようにします。
- 関数/メソッドなどを論理的な順序で配置します。
- (これは私の個人的な好みです) 水平方向にスクロールしなくても、コードが画面上で簡単に読み取れるようにしてください (垂直方向にもスクロールすると言う人もいますが、これは気にならないようです)。
この質問を読んだときに私が考えていることを他の人がほとんど言ったので、この主題に関連してあなたが読むことに興味があるかもしれない2冊の本を共有します. これらの書籍では、オープン ソース コードの例を使用して、高品質のコードを読み書きする方法を説明しています。Code Complete に加えて、どの言語でも優れたコードを書きたい場合に役立つリソースだと思います。
私のルール:
- すべてに意味のある名前を付け、それが何であるかと呼びます。変数に「x」と「y」を使用しないでください。
- 何も省略しないでください。変数名の長さは気にしません。コメントを付けても、省略しないでください。略語の解釈は主観的です。Cmpはコンピューターを意味しますか?コンピューター?会社?褒め言葉?強力なルールを作り、例外を設けず、従いやすいものにします。
- 同じ行に複数のステートメントを入れないでください。各行は単一のアクションを実行します。
- ペストのようなハンガリー語表記は避けてください。それともntHungarianですか?
- 単一行 (if、for) の部分構造にも括弧を使用します。インデントの違いは簡単に失われます。
私はおそらく少数派ですが、空白は気にしません。ホワイトスペースが大好きです。コンパイラーがそれを取り出し、HD スペースが非常に安いので、コードに空白を入れるのが好きです。
たとえば、私は好きです:
int total = 10;
int sum = 0;
for (int i = 0; i < total; i++)
{
sum += i;
}
// Next coding statement is a space below the bracket
return sum;
好きではない:
int total = 10;int sum = 0;
for (int i = 0; i < total; i++)
{
sum += i;
}
return sum;
技術的には必要ありませんが、ブラケットにも入れたもの。最も良い例は if ステートメントです。読みやすさに大きく貢献していると思います。
if(true)
// some action
if(true)
{
// Some action
}
私にとって最高のコードは、できるだけ単純なものです。可能な限りコメントを少なくし、最も重要なことは動作します。
おそらく最も重要な点は、構文の一貫性を保つことです。また、あなたが書いている言語のデザインガイドラインも見てみたいと思います.
開発者として数年間働いてきた私にとって、これは本当の疑問でした。これについて考えたり、コードでさまざまなことを試したりするのに何時間費やしたかさえ言えませんでした。上記の回答もとてもいいです。1つか2つ追加したいだけです。
私たちはそれぞれ、私たちの読書を他のものとは異なるものにするさまざまなものを持っています. あなたが読みやすいと思うものでも、他の人にとっては本当に読みにくいかもしれません。
コードのクリーンさは非常に重要な側面です。窮屈になりすぎたらすぐに忘れてください。
最も重要なこと:あなたはあなた自身の教師です。どのようなスタイルに従うにしても、経験に基づいて 1 つか 2 つのことを変更したいと思うでしょう。数か月が経過し、修正やドキュメントのために古いものに戻らなければならない場合、「そのようなコードを書いたなんて信じられない」効果が得られます。コードの読みやすさで何があなたを悩ませていたかをメモし、そのような記述を二度としないようにしてください。