良いルーチンにとって最も重要な単一の特性は何ですか?
-
21-08-2019 - |
質問
ルーチン、プロシージャ、メソッド-あなたがそれらを何と呼んでも、それらは私たちの開発者にとって重要な構成要素です。最も重要な特性として、どの単一の特性を評価しますか?
(回答ごとに1つの特性を提供することで、個別に投票することができます。つまり、この質問の目的は、1つの特性を特定することではなく、すべてを強調することです。重要なもの。)
解決
最も重要な基準は、それが単一の目的を持っていることだと思います。
その後、それがその目的(そしてその目的のみ)を正しく満たすこと。
他のヒント
セルフコメントプロシージャ名。
例: GetStoreFromAddress GetCarsByMake
簡単に単体テストできるはずです。
ルーチンの名前は、その機能に1対1で対応します。
関数XがXとY、またはXの大部分を実行する頻度は驚くべきことですが、Xのすべてではありません。
良いルーチンと悪いルーチンを区別する単一の基準は ありません。
基準は次のとおりです。
- 概念の完全性: で説明できる何か 単純な短い形式、1文または 段落;
- 疎結合:その動作は コードで何が起こっているかに敏感 その周り;
- 妥当なサイズ:長いルーチンは 読みにくく、理解しにくい、 良い可能性が低い 概念の整合性;
- パルナスの基準:彼らは「隠す」 変更できることが1つあり、 要件の変更は制限されています システムの他の部分への影響。
人間が簡単に読んで理解できるように設計されています-それがなければ、ここにリストされる他のすべての素晴らしい属性を持つように変更するのははるかに困難です
実行しようとすることの数。
これが正確に1でない場合は、おそらく問題があります。
予期しない副作用があってはなりません。
優れたエラー処理(信頼性)
簡潔さ
(これは半ば楽しい答えになるはずでしたが、SOはそれ自体で1つの単語を投稿することはできませんでした!)
アトミックである必要があります
コード行。
ルーチンが使用された後に必要な編集の数を追跡する必要があります。「良い」ルーチンとは、編集がほとんど必要ないルーチンです。たくさんの修正が必要な場合、「悪い」ルーチンは間違いなくそうであることが証明されます。
これは、各編集後に更新される各メソッド呼び出しのコメントヘッダーを使用して簡単に実行できます。
1つのことを実行するか、複数のことを他の機能に委任します
わかりやすさ-わかりやすい
ルーチンをAPIの一部と見なすと、これはより簡単に答えられると思います。少なくとも本当に便利なシステムでは、スタンドアロンのルーチンは多くありません。正直なところ、ルーチンを作成するときに考慮すべき最も重要なことは次のとおりです。
-
直感的私の一連の指示はどれほど直感的ですか。多くのドキュメントに目を通すことなく、人々は目的を理解できますか?
-
直交性私のルーチンはどの程度直交していますか?それぞれが1つの特定のタスクを実行しますか、それとも同じことを行うための複数の(ただしわずかに異なる)方法がありますか?ある場合、これは悪いことであり、APIを再設計する必要がある可能性があります。
-
コンパクトさ単純なタスクを実行するには、APIのどれくらいが必要ですか?何かを成し遂げるためにたくさんのことを学ぶ必要がありますか、それとも直感的で強力なことをするいくつかのルーチンだけで十分ですか?特定のドメインのバランスをとるには、この1つのトレードオフを直交性と比較検討する必要があります。
ルーチン名から、ルーチンが何をするかを言うことができます(そして、コードをチェックすると、自分が正しかったことがわかります;-)
ルーチンは、一貫したレベルの抽象化を使用します。
十分に文書化された(そして実際に施行された)事前条件と事後条件を言います。
単一のリターンポイント