あなたは通常、同時にあなたの頭の中でプログラム全体を保持することになります。後で、これを頭の中の1つの機能に減らす方法を学びます。
これらの両方は、操作できるプログラムまたは機能の大きさ/複雑さを制限します。何が起きているのかを単純化して考える必要がなくなり、作業メモリの必要性を減らすことで、この問題の解決に役立ちます。また、ある種類の複雑さを別のものと交換することもできます。いくつかの複雑な高レベルアルゴリズムのためのfsncy可変値ダンス、またはコード正しさの確からしさ。
これを実行する方法はたくさんあります。チャンク可能なパターンで作業し、下位レベルのプリミティブではなく、それらのパターンで考えることができます(これは基本的に、プログラム全体の状態から単一の関数状態になったときに行ったものです)。状態を簡単にすることでこれを行うこともできます。
すべての変数は状態を保持します。これは、そのコード行が何を意味しているのか、そして前のすべてのコード行はその宣言のポイントまでを意味するものです。行に存在する変数は、行によって変更されるか、行によって読み取られる可能性があります。変数の読み方が何であるかを理解するには、宣言とその使用の間のすべての行を、編集された可能性について監査する必要があります。
これは発生しない可能性がありますが、チェックすると、の両方に時間と作業メモリがかかります。もしあなたが10個の変数を持っていれば、それらのうちのどれが "上"に修正されたのか、また修正されなかったのか、そしてそれらの値が何を意味するのかを覚えなければなりません。
一方、作成され、使用され、範囲外に落ちるか、まったく使用されない変数は、この認知負荷を引き起こすことはありません。隠された状態や意味を確認する必要はありません。それ以上に、あなたはその行の前にそれを使うことはできません。後のコードでは、設定時に依存する重要な状態を上書きするつもりはなく、初期化と使用の間に何か驚くべきものに変更することはありません。要するに
、あなたがそれを使用するコードの行の「状態空間」を減らし、さらにはそれを使用しないでください。
時には、これは達成することは困難で、時には非現実的または不可能です。しかし、しばしば簡単で、コードの品質が向上し、読みやすく理解しやすくなります。最も重要なコードの読者は人間です。コンパイラのオブジェクトファイルの出力(または何らかの中間表現)をチェックしない理由があります。
Suc「低状態」コードも事後に変更するのが簡単です。限界では、それは純粋な機能コードになります。
ありがとうございました。タイマーがなくなったら、数分で回答を受け付けます。コンパイルやそのようなことがあれば、私はちょうど興味がありました。しかし、それは人間の読みやすさのためだけに判明しました。 –
それは人間の可読性に関するすべてではありません。デフォルト構成と例外に関する私の点を参照してください –
@ハリー・ハッカー:あなたは答えの内容の80%を無視したようです。それらをもっと徹底的に読んで、答えを受け入れることを急いではいけません。 –