0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

効率的なコードを書くためのガイドライン

Posted at

効率的なコードを書くためのガイドライン

導入

  • 変数の利用を減らす:定数を多く取り入れて、コードの透明性と安全性を高めましょう。
  • 純粋関数を多用する:関数は引数のみを利用し、副作用を避けることで予測可能性を高めます。
  • 判定ロジックを関数化する:コードの可読性と保守性を向上させます。

これらのテクニックは重要ですが、さらに根本的なテーマとして「どのようなコードを目指すべきか」を考えていきます。

《パーフェクトなコード》を目指してはいけない理由

  • 《パーフェクトなコード》の定義:コードには《要件》が存在し、最良のコードはその《要件》に依存します。単体で完璧と判断することはできません。
  • 《要件》の変化:市場の変化や計画の変更により、《要件》は頻繁に変わります。そのため、パーフェクトなコードを追求しても無駄になることが多いです。
  • コストの問題:コストをかけずに完璧なコードを書くことが理想ですが、多くの場合、それはオーバーエンジニアリングとなります。

💡 重要ポイント

  • 《要件》は頻繁に変わるため、完璧なコードを目指しても無駄になることが多い。
  • 完璧なコードにかけたコストは回収不能になることが多い。
  • 完璧なコードを目指すのではなく、現実的な範囲で最善を尽くすべき。

《必須条件》と《推奨条件》

  • 《必須条件》:必ず達成しなければならない要件です。プログラミング言語や環境の仕様からくる制約も含まれます。実装コストや将来のメンテナンスコストが大きい場合は、修正や取り消しを検討することもあります。
  • 《推奨条件》:達成が望ましいが必須ではない要件です。実装やメンテナンスコストが少ない場合にのみ対応します。

💡 ポイント

  • 《必須条件》には明確な達成基準が必要です。
  • 《推奨条件》は基本的に対応しないが、コストが見合う場合にのみ対応する。

目標は《正当性》と《簡潔さ》

正当性

  • 理論的な正しさ:コードの理論的な正しさを追求します。例えば、整数を2倍にしたい場合は、ビットシフトを使用するのではなく、適切な方法を選びます。
  • ハックの避け方:ハックを使う場合は、それによるデメリットを理解し、それが許容される範囲で使用します。

簡潔さ

  • 過剰な正確性の回避:必須条件を満たすために過剰な正確性や複雑さを避け、コードの意味的な簡潔さを追求します。
  • コストを掛け過ぎない:簡潔さを保つためにコストを掛け過ぎないように注意します。

💡 ポイント

  • 正当性を保ちながら簡潔なコードを目指す。
  • 無駄なハックや過剰な正確性を避ける。

優先順位

  • 《正当性》よりも《簡潔さ》を優先:正当性を損なわない範囲で簡潔さを重視します。
  • 《必須条件》を満たす範囲で《正当性》を追求:必須条件を満たすために正当性と簡潔さのバランスを取ります。

実用的なアプローチ

  • 《無駄》や《不完全》を受け入れる:必要な余裕を持たせ、無駄や不完全さを受け入れることが重要です。
  • 後日修正のための余裕を持つ:情報や理解が揃った時に、必要に応じてコードを修正するための余裕を残します。

💡 ポイント

  • 無駄を受け入れ、必要な余裕を持たせる。
  • 不完全でも丁寧に書いたコードが重要。

まとめ

結局のところ、「対応する《要件》と《ハック》の使用を必要最小限に控えつつ《丁寧なコード》を書きましょう」というシンプルな結論です。このガイドラインを意識することで、地に足のついたパフォーマンスを発揮できます。

この記事の内容が、あなたのコードを書く上での参考になれば幸いです。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?