コードを読むと、コンパイラが残りを処理します

はじめに



関連する質問をされたのはこれが初めてではありません。

「なぜそんなに多くの機能をしているのですか?」;

「なぜ関数内で一度だけ使用するコードを作成するのですか?」;

「残りは関数の命名規則に精通していません。 彼らはこれでどのように機能しますか?」 したがって、問題に対する私のビジョンを説明します。 まあ、コミュニティはあなたが何のために努力すべきかを教えてくれます。



状況



その過程で、別のコードがあります。 付随し、エラーを修正し、新しい機能を追加する必要があります。 新しいコードも作成されており、他のコードも後で使用できます。 いくつかの状況を説明します。



状況1のコードが多すぎる


クラスには、クラス自体よりわずかに小さい支配的なメソッドがありますが、すべてのロジックとインフラストラクチャコードが含まれています。



状況No. 2コードのロジックは、研究した後にのみ明確になります


コードは小さいですが、それが何をするのかを理解することは非常に困難です。



状況No. 3新しい機能が追加されました


新しい関数を追加する必要があるかなり複雑なコードがあります。



状況No. 4新しいコードが作成されます


コードの接続性は低く、テスト範囲が広く、保守性が優れている必要があります。



理由



これらの各状況で、最小限のリファクタリングを試みます。 コードをより理解しやすくシンプルにします。



ほとんどの場合、メソッドにコードを配置します。 APIが許可する場合、より複雑なリファクタリングを行っています。 条件式は、すぐに理解されない場合は、明確な名前でメソッドに入れようとします。



私は常に「コードはコンパイルして実行するのではなく、読む必要があります」というルールに導かれています。これは、ファウラーが説明するイデオロギーに完全に準拠しています。

各関数には適切な名前を付ける必要があります。名前で説明されていることを実行しない場合は、新しい名前を選択する必要があります。 コード変換であるコメントは冗長です(例外-エラー)。



私はいつも以前よりもコードの臭いを少なくするよう努めています。 コードの匂いは、多くの人、特にファウラーによって読むことができます。



結果



ほぼすべての重要な改訂の後、上記の質問をされます。 彼らは、コードがあまり明確にならない、希望する行を見つけることが難しくなる、などと言っています。



理由



実際、問題はコードとコードに慣れている開発者の両方にあります。



実験を行うことを提案します。


よく書かれた未知のコードを取り上げてください。 複雑度が5未満のメソッドを使用する必要があります(つまり、 循環的評価の簡略化された解釈を意味します)。 このコードを読むことが難しい場合は、コードを翻訳しようとしていることに注意してください。 プログラムの実行方法を確認するので、不便はメソッドからメソッドへの絶え間ないジャンプです。 頭の中でコードをコンパイルして実行します。



コードが読みやすい場合、ほとんどの場合、メソッドのシグネチャとその名前に注意を払っています。 あなたはコードを読んでいます。



複雑さが30を超えるいくつかの関数を含むコードの場合、逆のことが言えます(たとえば、100行以上)。 読むことは不可能ですが、実行は実を結ぶことができます。 ループの20回目の繰り返しで条件の15番目の囲いに巻き込まれない場合は、幸運を祈ります。



おわりに



コードが単純であるほど良いと言えます。 コードが単純であると思われる場合にのみ、さらにいくつかの点でコードを単純化できます。 関数が1つの場所で使用されるようになりましたが、名前が20文字を超えていることはありません。 主なものは、コードが読みやすいこと、つまり、アートブックのように言えることです。 コメントではなくコードです。



良い例は、Glass、Fowler、McConnell、Martinの作品にあります。



別の優れた品質管理コードはテストです。 エラーがないという意味ではありません-どこでもエラーがあります。 テストを作成するときに、コードのテスト方法について数分間考えた場合、実際には複雑であり、単純化できます。 時々、本当の洞察が来る。



あなたのコードを書いて読んでください。そうすれば、コンパイラが残りを行います!



便利なリンク:

1. 完璧なコード。 S.マッコネル

2. リファクタリング。 既存のコードの改善。 M.ファウラー

3. コードをきれいにします。 R.マーティン

4. グレッグ・ウィルソン-ソフトウェア開発について私たちが実際に知っていること、そしてそれが真実だと信じる理由

5. ボブおじさんとの固い原則-ロバートC.マーティン

6. 優れた英語リソースsourcemaking.com



All Articles