明確で読みやすいプログラムを作成する必要がある理由はたくさんあります。最も重要な点は、プログラムを作成するのは一度だけですが、将来的には何度も読み取ることになるということです。翌日コードに戻ったら、読み始めてください。コードを他の人に見せるときは、その人はコードを読まなければなりません。したがって、書くときにもう少し時間を費やすと、読むときに多くの時間を節約できます。
基本的なプログラミング スキルを見てみましょう:
メソッドはできるだけ短くしてください
同じ変数を複数の異なる目的に決して使用しないでください
自己記述的な変数名とメソッド名を使用します
変数はできるだけ使用される場所の近くで定義してください
謎の数字を拒否
言葉遣いに優しくしてください
ルールに違反しないでください
時期尚早な最適化に注意してください
テスト済みプログラムを積極的にリファクタリングします
テクニックにこだわりすぎないでください
実践例を通して新しい知識を学びましょう
それでは、それぞれの小さなポイントを拡張して詳しく説明していきます。
1.メソッドをできるだけ短くするようにしてください
多くの人がこのルールに従っていますが、それでも非常に重要です。作成するメソッドは常に 1 つの画面に収まるようにしてください。スクロールする必要がある場合、気が散ってコンテキスト全体が見えなくなります。状況に応じて、最適な長さは 5 ~ 20 行です。もちろん、ゲッター/セッターは通常 1 行のメソッドですが、実際のメソッドというよりはアクセサーに似ています。
2. 複数の異なる目的で同じ変数を決して使用しないでください
変数は常に 1 つの目的のみを提供する必要があります。変数を定数 (C++ では const、Java では Final) にすることで、コンパイラはコンパイルを最適化し、この変数が変更できないことをコードで明確に表現できるようになり、プログラムの可読性が向上します。
3. 自己記述的な変数名とメソッド名を使用する
あなたのコードは、誰にとっても、見ただけで何をするのか理解できる必要があります。次のような特別な習慣がない限り、略語は使用しないようにしてください。
src - ソース pos - 位置 prev - 前
わかりやすい名前はそれほど価値がないと思われる場合は、n、ns、nsisd を numTeamMembers、seatCount、numSeatsInStadium と比較してください。
4. 変数は、使用される場所のできるだけ近くで定義します
家を建てるとき、他人の庭にハンマーを置きたくないですよね。できるだけ手元に置いておきたいものです。変数の定義についても同様です。
int foo = 3;int bar = 5;// 「bar」を使用するコードの大部分、 // しかし「foo」は使用されません // ...baz(foo);
このコードは単純に
に再構成できます。int bar = 5;// コードの大部分は「bar」を使用しますが、 // 「foo」は使用しません // ...int foo = 3;baz(foo);
これは、変数の宣言を最初に使用するときから離れすぎた (1 画面以上離れた) 場合に問題になります。コンテキストを思い出すのは難しくなり、変数がどこから来たのかを見つけるためにスクロールする必要があります。
5.謎の数字を拒否する
何かを定数値と比較したい場合は、値を定数として定義することを忘れないでください。同僚が何を書いたかを推測することほどイライラすることはありません:
イル
フォームを変えるのはどんな感じですか?
inputLength 6. 言葉遣いをフレンドリーにしましょう 新しい言語を学ぶのはとても楽しいですし、タスクを完了するための新しい方法を学ぶことができます。すでにある言語を専門としている人が別の言語を学習すると、大きな悪影響が生じます。あなたが Java 開発者で、Ruby を学ぼうとしているとします。 Java の方法で問題を解決するのではなく、Ruby の方法で問題を解決する方法を学ぶ必要があります。 Java で「Hello world!」を 5 回繰り返す必要がある場合は、次のようにします。
for i in (0..5) は「Hello world!」を終了します
これは問題ないようですが、もっと良い方法があります:
5.x { は「Hello world!」を入れます }
7. ルールに違反しないでください
それぞれの言語には独自の異なる慣習があります。一般に、人々が最もよく聞くのは Java のコーディング仕様です。これらの習慣のいくつかを見てみましょう:
メソッド名は小文字で始まり、その後に大文字の単語が続く必要があります(veryLongVariableName)
クラス名はすべて、単語の最初の文字を大文字で連結して形成する必要があります
定数名はすべて大文字でアンダースコアで接続する必要があります(MY_CONSTANT)
左中括弧は if ステートメントと同じ行にある必要があります
これらのルールを破るのは、必要な理由がある場合のみであり、単に自分が不幸だからという理由で破らないでください。チーム内のこれらの習慣の一部を変更するだけであれば問題ありませんが、コードを取り出して、これらの考えに対して準備ができていない他のプログラマーと共有すると、問題が発生します。
8. 時期尚早な最適化に注意してください
時期尚早の最適化がすべての問題の根源、少なくともテレビではそう言われています… まず気を付けるべきことは、理解しやすいコードを書くことです。私が最初に書いたプログラムは高速である必要はありませんでした。プログラムが非常に遅い場合を除き、最適化について話すのは時期尚早です。何かを最適化したい場合は、まず問題が何であるかを知る必要があります。これがプロファイラーが必要な理由です。
問題がどこにあるのかを知らずにプログラムを最適化しようとすると、必然的にプログラムが壊れるか、少なくともコードが可読性を失います。何かが遅いと思われる場合は、やみくもにコードを書き直すのではなく、まず遅いという証拠を見つける必要があります。
まったく存在しない問題を解決するような愚かなことはしないでください。
9. テスト済みプログラムを積極的にリファクタリングする
完璧なものはありません。実際には完璧なコードを書いたように感じていても、数か月後に振り返ってみると、「どうしてそんなに愚かだったんだろう?」と疑問に思うかもしれません。
プログラムを改善する良い方法はリファクタリングすることですが、それはプログラムがテストに合格した後に限ります。まず、プログラムが良好で実行可能であることを確認する必要があります。これは、自動テストまたは手動テストを通じて行うことができます。最初に必要なのは、プログラムが利用可能になることだけです。最初から完璧なプログラムを書くことを期待しないでください。必要なのはそれを機能させることだけです。次に、それをリファクタリングして完璧にします。テスト駆動開発 (TDD) を知っている人にとっては、これは見覚えのあるものでしょう。ここで重要なのは、リファクタリングに慣れる必要があるということです。 IntelliJ IDEA のような強力な統合開発ツールを使用している場合、リファクタリング作業ははるかに簡単になります。
リファクタリング後、いくつかのバグが作成され、特定の機能で問題が発生する可能性があります。だからこそ、自動テストを作成することが重要です。リファクタリングするときはいつでも、すべてのテスト ケースを実行するだけで、何が問題だったのかが正確にわかります。
10. テクニックにこだわりすぎないようにしましょう
デザインパターンについて初めて読んだとき、聖杯を見つけたと思いました。これらの綿密なアイデアは、最初から最後まで説明しなくても「『オブザーバー パターン』を使用しています」と言うだけで済むため、デザインを理解しやすくするのに大きな効果があります。それで、何か質問はありますか? すべてが非常に自然でシンプルに見えるため、あらゆる場所でデザイン パターンを使用し始めます。このクラスをシングルトンにしてみませんか? いくつかのファクトリークラスを作成してみてはいかがでしょうか?
つまり、80 行で記述できるスクリプトの場合、最終的には 10 のクラス、15 のインターフェイス、さらに多くのパラダイムとマーカーを使用することになります。コードの 97% は何も行いません。デザイン パターンはデザインを簡素化するのに非常に便利なツールですが、どこにでも使用する必要があるというわけではありません。それらは使用する必要がありますが、乱用しないでください。
11. 演習を通じて新しい知識を学びます
プログラミングは新しい知識を学ぶプロセスです。新しいライブラリや言語を学ぶとき、古いコードを捨てて、新しく得た知識を使ってコードを書き直したくなるかもしれません。これをすべきではない理由はたくさんあります。
これは、既存のアプリケーションに新しいクラス ライブラリやフレームワークを追加する場合にも当てはまります。 Javascript Web アプリケーションを作成し、そのプロセス中に jQuery を発見したとします。ここで、これまで一度も使用したことがないにもかかわらず、突然、JavaScript プログラムを捨てて jQuery で書き直したくなりました。
最善の方法は、まず jQuery で簡単な例をいくつか書き、この方法でアプリケーションで使用するすべての知識を学ぶことです。 AJAX が必要ですか? プロジェクトの外でいくつかの小さなサンプルを作成し、完全に理解したら、サンプルを捨てて製品に適用してください。
プログラミング技術に非常に興味がある場合は、Steve McConnell が書いた「Code Encyclopedia」という本を読むことを強くお勧めします。それはあなたのプログラミングに対する理解を永遠に変えるでしょう。 :)