24

コード ドキュメントに関しては、通常、コードはそれ自体を説明する必要があり、インライン コード ドキュメント (パブリック API ドキュメントを除く) は、回避策、特定の実装が選択された理由の説明などのメタコードの問題のみを説明する必要があることが認められています。

コードをより読みやすく、より説明しやすくするにはどうすればよいでしょうか?


編集: 一般的なコメントに加えて、具体的なヒントも探しています。したがって、「短くても意味のある変数名」と言う場合は、役立つヒントも得られるとよいでしょう (たとえば、「3 単語の原則を使用する」)。

4

10 に答える 10

33

Jeff Atwood のCode Smellsブログ投稿をチェックしてください。それはかなりそれを要約しています。読みやすいコードに関しては、私の個人的な精神を追加します。

  • 一貫性:これは、書式設定、中かっこの使用、名前付け (変数、クラス、メソッド)、およびディレクトリ レイアウト (/css の下のどこかにソース ディレクトリを埋めた場合、なたで追いかけます) に適用されます。
  • サイズ:関数が通常のフォント サイズで通常の IDE の画面に完全に収まらない場合は、その理由について非常に正当な理由が必要です。もちろん、はるかに長い関数の有効なケースもいくつかありますが、ひどい例の方がはるかに重要です。関数をシンプルに保つために、必要に応じて分解します。
  • コメントは慎重に:一部のプログラマーは、読み取り可能なコードの代わりにコメントを使用したり、単にコメントのためにコメントを付けたりする傾向があります (/* finished */直前のコメントのようにreturn true;)。
  • プロジェクト内でカット アンド ペーストしない:あるプロジェクトから別のプロジェクトにコード スニペットを移動することはまったく問題ありませんが (すべてのプロジェクトはアイランドです)、重要なコード セグメントを 1 つのプロジェクト内からプロジェクト内の別のポイントに移動することは絶対にしないでください。 . 必然的に 1 つが変更され、これら 2 つ以上のコード セグメントを調べて、それらがどのように (そしておそらくもっと重要なことに、なぜ) 異なるのかを調べなければならない貧しい開発者が残ります。と
  • コードの繰り返しを避ける:同じ一連のステートメント (または非常に類似したステートメント) を何度も書いていることに気付いた場合は、それを抽象化またはパラメーター化します。非常によく似たステートメントを目にすると、それらがすべて同じであると仮定してざっと目を通す傾向があります (通常、それらは重要な方法ではない場合)。
于 2009-02-15T14:06:34.383 に答える
8
  • 一貫したフォーマット スタイル
  • 余白の上手な使い方
  • 短くても意味のある名前を使用する
  • コメントはあまり多くありません(あなたが言及したように)が、私がそうするときは、コードの理由をコメントし、該当する場合は理由コメントしてください(特に、それが明白であるように思われる場合は、なぜ他の実装が使用されなかったのか)それで)。
  • プロファイラーが遅いまたは非効率的であると言うまでコードを最適化しないでください
于 2009-02-15T13:30:21.367 に答える
8

適切な変数名とメソッド名を使用してください。コードを特定の目的を達成する意味のある部分に分割します。クラスのまとまりを保ち (すべてが連携して動作する)、切り離された状態を保ちます (クラス間の依存関係はほとんどありません)。繰り返さないでください (DRY)。ボブおじさんのSOLID の原則(彼が指摘するように、法律ではない) に、コードをより良くするために働く程度まで従ってください。

于 2009-02-15T13:30:59.680 に答える
5

「uncle bob」の book clean code は、関数がどのように見えるべきかのかなり良い概要を、実践的な例で示しています。

いくつかの重要なポイント:

  • 小さな関数、クラス
  • 良い、意味のある、名前、サイズは問題ではありませんが、必要なだけ長くする必要があります
  • 関数/変数間の垂直方向の間隔は小さくする必要があります (最初に使用される場所のできるだけ近くで宣言します)
  • 関数とクラスは 1 つのことだけを行う必要があります

この本にはもっと小さなルールがたくさんあります。私は本当にそれをお勧めします。Code Complete 2 も入手してください。

于 2009-02-15T13:36:30.807 に答える
4

自己文書化コードは次のとおりです。

  • 適切な命名規則
  • コンポーネント (クラス、機能など) 間の明確な設計と責任の分離

ただし、最も自己文書化されたコードでさえ、そこにあるものしか文書化できないことを忘れないでください。意図的に省略したり、最適化したり、試行錯誤したりといったことは決してありません。基本的に、ソース ファイルに英語が必要になることは常にあります。そうしないと、重要な注意事項や設計上の決定を省略せざるを得なくなります。

于 2009-02-15T13:32:14.030 に答える
4

私は通常、コード内でコメントすることはしませんが、読みやすいコードを書くだけでドキュメントは必要ないというよくある意見には完全に同意しません。

文書化する必要があると私が思うのは、あなたのインターフェースです。つまり、クラスとメソッドの上にコメントが必要です。もちろん、set や get のような単純なメソッドではありません。

あなたが作成したクラスとメソッドを使用する人は、それらの使用方法を理解するためにあなたのコードを読む必要はありません。したがって、重要な不変条件と同様に、有効な入力と出力の範囲を文書化する必要があると思います。たとえば、関数はポインタを引数として取ります。関数にどんなに適切な名前を付けても、NULL の提供が有効かどうか、または NULL が有効な返される結果であるかどうかは明らかではありません。多くの場合、-1 と 0 は、検索されたオブジェクトが見つからない、または同様のものを示すために使用されます。それは文書化されるべきです。

それとは別に、コードを文書化する際の鍵は、クラスやメソッド何をするか、または何であるかを文書化することではなく、その背後にある意図を文書化することだと思います。

于 2009-02-15T14:20:04.430 に答える
2

あなたと同僚の間でコーディング規約を持ちましょう。インデントから始めて、「中かっこはどこから来ますか: 新しい行ですか、同じ行ですか?」 まで、かっこを覆います。

Visual Studio では、このスタイルを選択して修正できます。チーム内の他のすべての人が同じコードを読むのに役立ちます。また、「空の」編集 (スタイルの変更) と実際の編集を区別する必要がない場合、バージョン管理システムでの履歴追跡がはるかに簡単になります。

于 2009-02-15T13:30:22.660 に答える
1

Eschewcodejunk。

エドワードタフテは、チャートジャンクのこの美しく強力な概念、情報ではなくノイズに寄与するチャートの視覚要素を持っています。このようにチャートを考えることで、より明確なチャートを作成できます。

同じような考え方をコードに適用すると、はるかにクリーンなコードが得られると思います。例としては、/* getFoo() gets the foo */スタイルのコメント、不要な括弧と中括弧、過度に具体的な変数名、ハンガリアン記法のいぼなどがあります。

チャートジャンクを構成するものは、チーム、環境、およびプロジェクトによって異なります。いぼのような人もいます。一部の環境では、特定のジャンクを有用な方法でコードをレンダリングします(// end forたとえば、中括弧のマッチングやコメントなど)。一部のプロジェクトでは、標準に準拠したり、APIを包括的に文書化するために、より広範なコメントが必要です。しかし、チームがプロジェクトにとってchartjunkが何を意味するかについての基準を確立すると、多くの決定が容易になり、そのコードはより一貫性があり、読みやすくなります。

于 2009-04-19T15:23:18.400 に答える
1

コーディングしている環境内で使用されているパラダイムに固執します。

明らかな例は、.NET ではメソッドに Pascal ケースを使用し、Java ではキャメル ケースを使用することです。

あまり明白でない例は、標準クラス ライブラリで使用されているものと同じ規則の使用に関連しています。

この目標については、言いたいことがたくさんあります。命名規則は人間には多くの情報を伝えますが、コンパイラーにはほとんど情報を伝えません。ある環境で別の環境の規則を使用する API を使用したことがある人なら誰でも、異質なコードがどれだけ際立っているかに気付いています。

一貫性は、人間のコード消費者の認知負荷を軽減する貴重な特性です。

于 2009-02-15T13:38:42.797 に答える
0

すべての回答 (および質問) は、読みやすさはコード ライターの責任であるという前提に基づいています。本当にコードを読みたくないのに、利用可能なコードの 99% に一致する今すぐ読むのをあきらめたリスト (コードのにおいがする) があり、コードが何をしているのかについて真剣に考えたくない場合は、その場合、読み取り可能なコードは見つかりません。

コードを読みやすくするために現在使用しているルールが何であれ、10 年後には時代遅れで馬鹿げたものに見えるでしょう。コードの可読性を本当に高めたい場合は、古いコードを読んで (当時の流行を考慮して、速度とメモリが 1000 分の 1 のマシンで実行する必要がありました)、それを理解する努力をして、他の人を励ましてください。同じことをする。

于 2009-02-15T22:16:36.140 に答える