Articles

ベストコーディングプラクティス

メイン記事:コーディング規約

このセクションは、McConnellが指摘しているように、コーディングの前提条件でもあります。”プログラミングを開始する前にプログラミング規約を確立してください。 後でそれらに一致するようにコードを変更することはほぼ不可能です。”

コーディング規約の終わり近くに記載されているように、異なるプログラミング言語には異なる規約があるため、異なる言語に同じ規約を適用す 任意のプログラミング言語のための特定のコーディング規約はないことに注意することが重要です。 すべての組織は、ソフトウェアプロジェクトの種類ごとにカスタムコーディング標準を持っています。 したがって、ソフトウェアプロジェクトが開始される前に、プログラマが特定のコーディングガイドラインを選択または構成することが不可欠です。 いくつかのコーディング規約は、特定のプログラミング言語で書かれたすべてのソフトウェアプロジェクトに適用されない場合があります一般的なものです。

コーディング規約の使用は、プロジェクトが複数のプログラマを含む場合に特に重要です(何千人ものプログラマを持つプロジェクトがありました)。 すべてのコードが同じ規則に従っている場合、プログラマは他の誰かが書いたコードを読む方がはるかに簡単です。

悪いコーディング規約のいくつかの例については、Roedy Greenは、メンテナンス不可能なコードを生成する方法についての長い(舌の頬の)記事を提供しています。

CommentingEdit

時間制限やコードの即時結果を望む熱心なプログラマのために、コードのコメントはしばしば後部座席を取る。 チームとして働いているプログラマは、コーディングは通常サイクルに従うか、複数の人が特定のモジュールで作業するかもしれませんので、コメントを残す方が良いことを発見しました。 しかし、いくつかのコメントは、同じモジュールで作業している開発者間の知識転送のコストを減らすことができます。

コンピューティングの初期の頃、一つのコメントの練習は、次の簡単な説明を残すことでした:

  1. モジュールの名前
  2. モジュールの目的
  3. モジュールの説明
  4. オリジナルの著者
  5. 変更
  6. コードを変更した著者は、なぜ変更されたのかを説明します。

「モジュールの説明」はできるだけ簡潔にする必要がありますが、明快さと包括性を犠牲にすることはありません。

しかし、最後の二つの項目は、リビジョン管理システムの出現によって大部分が廃止されました。 変更とその原作者は、コメントを使用するのではなく、そのようなツールを使用することで確実に追跡できます。

また、複雑なロジックが使用されている場合は、別のプログラマが正確に何が起こっているのかを理解できるように、その部分の近くにコメント”block”

単体テストは、コードの使用方法を示す別の方法にすることができます。

命名規則編集

関連項目:ハンガリー語表記

適切な命名規則の使用は、良い習慣と考えられています。 時にはプログラマはX1、Y1などを使用する傾向があります。 変数として、意味のあるものに置き換えることを忘れ、混乱を引き起こします。

通常、説明的な名前を使用することをお勧めします。

例:トラックのパラメータとしてweightを取り込むための変数は、trkweightまたはTruckWeightKilogramsという名前にすることができます。TruckWeightKilogramsは即座に認識できるため、TruckWeightKilogramsが好ましいものです。 変数のCamelCaseの命名を参照してください。

コードsimpleEditを保つ

プログラマが書くコードは単純でなければなりません。 単純なことを達成するための複雑なロジックは、コードが将来別のプログラマによって変更される可能性があるため、最小限に抑える必要があります。 実装されたlogic oneプログラマは、別のプログラマにとって完璧な意味をなさないかもしれません。 そのため、コードは常にできるだけシンプルにしてください。

たとえば、Cコードのこれらの同等の行を考えてみましょう。

if (hours < 24 && minutes < 60 && seconds < 60){ return true;}else{ return false;}

and

if (hours < 24 && minutes < 60 && seconds < 60) return true;else return false;

and

return hours < 24 && minutes < 60 && seconds < 60;

1番目のアプローチはるかに一般的に使用されている、3番目よりもかなり大きいです。 特に、画面の垂直方向のスペース(行)を5倍消費し、97文字に対して52文字を消費します(ただし、編集ツールは実際の入力の違いを減らすことができます)。 しかし、それは議論の余地がありますが、それは「より簡単」です。 最初のものは明示的なif/then elseを持ち、明示的な戻り値は明らかにそれぞれに接続されています。 2番目は単にブレースを破棄し、概念的な複雑さの変化はほとんどなく、”垂直”のサイズを半分にカットします。 ほとんどの言語では、”return”文を前の行に追加することもでき、”垂直”サイズを3番目の形式の行に追加することができます。

第三の形式は明らかにサイズを最小限に抑えますが、複雑さを増加させる可能性があります: これは、”true”と”false”の値を暗黙のままにし、”条件”と”戻り値”の概念を混在させます。 ほとんどのプログラマにとっては明らかですが、初心者は条件を評価した結果が実際には値(Boolean型、またはそれと同等の言語)であることをすぐに理解 より現実的な例では、3番目の形式は演算子の優先順位のために問題があり、おそらく予期しない型を返す可能性があり、以前の形式では一部の言語 したがって、”単純さ”は単に長さの問題ではなく、論理的かつ概念的な構造の問題です。

冗長な代替手段を使用する大規模で長寿命のプログラムでは、肥大化に寄与する可能性があります。

コンパクト性により、コーダーはページごとに多くのコードを表示でき、スクロールジェスチャーやキーストロークを削減できます。 コードの記述と保守の過程でコードが何回表示されるかを考えると、コードの寿命におけるプログラマのキーストロークの大幅な節約になるかもしれません。 これは、最初にプログラムを学ぶ学生にとっては重要ではないように見えるかもしれませんが、大規模なプログラムを作成して維持するときに、コードの行数を減らすことで、より多くのコードが画面に収まるようになり、マイナーなコードの簡素化は生産性を向上させ、生産コーダーやインフォメーションワーカーが抱える一般的な医療問題である指、手首、眼の緊張を軽減する可能性があります。

より簡潔な符号化は、処理する必要のあるシンボルが少ないため、コンパイルを非常にわずかに高速化します。 さらに、第3のアプローチは、特に多くのそのような構造が同時に一つの画面に表示される場合に、同様のコード行をより容易に比較することを可能にす

最後に、非常に簡潔なレイアウトは、より良いモニターのレイアウトや設定に応じて、現代のワイドスクリーンコンピュータディスプレイを利用するこ 過去には、画面は40または80文字に制限されていました(このような制限ははるかに早く始まりました:写本、印刷された本、さらには巻物は、何千年もの間、非常に短い行を使用していました(例えばグーテンベルク聖書を参照)。 現代の画面では、200文字以上の文字を簡単に表示でき、非常に長い行を許可します。 現代のほとんどのコーディングスタイルと標準は、その幅全体を占めていません。 したがって、画面と同じ幅のウィンドウを使用すると、大量の利用可能なスペースが無駄になります。 一方、複数のウィンドウ、またはサイドペインにさまざまな情報を含むIDEまたはその他のツールを使用する場合、コードの使用可能な幅は、以前のシステム

人間の視覚システムは行の長さによって大きく影響されることにも注目する価値があります。

人間の視覚システムは行の長さによっ; 非常に長い行は、わずかに読み取り速度を増加させるが、理解を減らし、目の追跡エラーに追加します。 いくつかの研究では、長い行が印刷よりもオンラインで優れていることが示唆されていますが、これはまだ約10インチに上がり、主に散文を読む生の速

PortabilityEdit

プログラムコードには、絶対ファイルパス、ファイル名、ユーザー名、ホスト名、IPアドレス、Url、UDP/TCPポートなどの環境パラメータを参照する”ハードコードされた”(リテ それ以外の場合、アプリケーションは、予期したデザインとは異なるホスト上で実行されません。 慎重なプログラマは、このような変数をパラメータ化し、適切なアプリケーションの外部(プロパティファイル、アプリケーションサーバー、またはデータベースなど)のホ “定義の一点”(SPOD)のマントラを比較します。

拡張機能として、XMLファイルなどのリソースにはリテラル値ではなく変数も含める必要があります。 たとえば、J2EEアプリケーションがアプリケーションサーバーで実行されている場合、そのような環境パラメータはJVMのスコープ内で定義でき、アプリケーションはそこから値を取得する必要があります。

ScalabilityEdit

ソフトウェアプロジェクトでは非常に頻繁に新しい機能が常に大きくなるプロジェクトに追加されるため、設計目標としてスケーラビ したがって、ソフトウェアコードベースに新しい機能を追加する機能は、ソフトウェアを書く上で非常に貴重な方法になります

ReusabilityEdit

再利用は、ソフ 再利用は、再利用されたコンポーネントまたはモジュールが既にテストされている場合、開発コストを削減し、開発時間を短縮します。 多くの場合、ソフトウェアプロジェクトは、以前のバージョンのプロジェクトを含む既存のベースラインから始まり、プロジェクトに応じて、既存のソフ

briefEditの建設ガイドライン

上記のすべての一般的な概要: