効率的なコードを書くためのガイドライン
導入
- 変数の利用を減らす:定数を多く取り入れて、コードの透明性と安全性を高めましょう。
- 純粋関数を多用する:関数は引数のみを利用し、副作用を避けることで予測可能性を高めます。
- 判定ロジックを関数化する:コードの可読性と保守性を向上させます。
これらのテクニックは重要ですが、さらに根本的なテーマとして「どのようなコードを目指すべきか」を考えていきます。
《パーフェクトなコード》を目指してはいけない理由
- 《パーフェクトなコード》の定義:コードには《要件》が存在し、最良のコードはその《要件》に依存します。単体で完璧と判断することはできません。
- 《要件》の変化:市場の変化や計画の変更により、《要件》は頻繁に変わります。そのため、パーフェクトなコードを追求しても無駄になることが多いです。
- コストの問題:コストをかけずに完璧なコードを書くことが理想ですが、多くの場合、それはオーバーエンジニアリングとなります。
💡 重要ポイント
- 《要件》は頻繁に変わるため、完璧なコードを目指しても無駄になることが多い。
- 完璧なコードにかけたコストは回収不能になることが多い。
- 完璧なコードを目指すのではなく、現実的な範囲で最善を尽くすべき。
《必須条件》と《推奨条件》
- 《必須条件》:必ず達成しなければならない要件です。プログラミング言語や環境の仕様からくる制約も含まれます。実装コストや将来のメンテナンスコストが大きい場合は、修正や取り消しを検討することもあります。
- 《推奨条件》:達成が望ましいが必須ではない要件です。実装やメンテナンスコストが少ない場合にのみ対応します。
💡 ポイント
- 《必須条件》には明確な達成基準が必要です。
- 《推奨条件》は基本的に対応しないが、コストが見合う場合にのみ対応する。
目標は《正当性》と《簡潔さ》
正当性
- 理論的な正しさ:コードの理論的な正しさを追求します。例えば、整数を2倍にしたい場合は、ビットシフトを使用するのではなく、適切な方法を選びます。
- ハックの避け方:ハックを使う場合は、それによるデメリットを理解し、それが許容される範囲で使用します。
簡潔さ
- 過剰な正確性の回避:必須条件を満たすために過剰な正確性や複雑さを避け、コードの意味的な簡潔さを追求します。
- コストを掛け過ぎない:簡潔さを保つためにコストを掛け過ぎないように注意します。
💡 ポイント
- 正当性を保ちながら簡潔なコードを目指す。
- 無駄なハックや過剰な正確性を避ける。
優先順位
- 《正当性》よりも《簡潔さ》を優先:正当性を損なわない範囲で簡潔さを重視します。
- 《必須条件》を満たす範囲で《正当性》を追求:必須条件を満たすために正当性と簡潔さのバランスを取ります。
実用的なアプローチ
- 《無駄》や《不完全》を受け入れる:必要な余裕を持たせ、無駄や不完全さを受け入れることが重要です。
- 後日修正のための余裕を持つ:情報や理解が揃った時に、必要に応じてコードを修正するための余裕を残します。
💡 ポイント
- 無駄を受け入れ、必要な余裕を持たせる。
- 不完全でも丁寧に書いたコードが重要。
まとめ
結局のところ、「対応する《要件》と《ハック》の使用を必要最小限に控えつつ《丁寧なコード》を書きましょう」というシンプルな結論です。このガイドラインを意識することで、地に足のついたパフォーマンスを発揮できます。
この記事の内容が、あなたのコードを書く上での参考になれば幸いです。