私は、同じ命名規則validateSomething()を使用するコード内に多くのプライベートな検証関数を持っています。 validateが失敗した場合、そのうちのいくつかは例外をスローします。 throwExceptionIfSomethingInvalid()の名前を変更してコードを読みやすくします。しかし、誰かが新しい名前はあまりにも奇妙で、混乱させてしまうと主張する。あなたはそれについて私にいくつかの助言を与えるのを助けることができますか?validate関数throwExceptionIf ...という名前を付ける必要がありますか?
答えて
「正確な」回答はありません。条約のみ。あなたが選んだ人はそれほど重要ではありません。より重要な点は、あなたが選んだ名前付けポリシーは何ですか:
- あなたはそのことに固執する必要があります。ここでは1つの種類の「命名方式」を使用し、もう1つを使用しないでください。
- 他の人とチームを組んでいる場合:チームの皆様にと同じがあることをご確認ください。
他の言葉:あなたはPOLA(最小の驚きの原則)に従いたいと思っています。あなたのコードの読者は、メソッドの名前があなたの文脈では、メソッドが何をするかを正確に示していることを常に知るべきです。
のほかに、「私のポリシーは」checkSomething
かvalidateSomethingElse
のように起動しのボイドメソッドは常にチェックが失敗した場合に例外をスローすることが一般的である(よく:何がボイドメソッドが例外をスローする以外に行うことができます) 。
ブールと対照的に、isSomethingValid()
程度です。
しかし、誰かが新しい名前は、私は同意
あまりにも奇妙であると主張しています。メソッドがチェック例外をスローできるように指定する正しい方法は、それをメソッドシグネチャの一部として宣言することです。例:あなたがこれを行うと
validateName()throws InvalidInputException
validateAge()throws InvalidInputException
、呼び出し側は常に例外を処理以上のモジュールにそれを伝播するか強制されます。
これを見るもう1つの方法は、あなた自身にこのことを尋ねることです:値void doSomethingWithoutReturn
を返さないメソッドを指定しますか?署名の内容がvoid
であることを確認したときに、このメソッドが何も返さないことがわかっているからです。
しかし、読者は関数名ではなく関数宣言でそれを見つけなければなりません。すべての検証関数が例外を投げるわけではないので、関数を検証するための呼び出しに出会ったときに、特にIDE環境でコードを読み取っているときに、それを見つける宣言を見つけなければなりません。 – Nghia
@Nghia IDEを使用していないという理由だけで、そのようなネーミング方法については触れることはできません。最後のメソッドがあるとしましょう:final void someMethod() ' IDEを使用しないので、このメソッドの名前を 'void someMethodFinalWithNoReturn'に変更しますか?権利はありません? – CKing
はい、あなたの意見があります。しかし、throwing例外はvalidate関数の主な目的ですが、最終的なvoidとは異なると思います。私はまた、休止状態のソースでerrorIfClosed()のようなものを見ると、コードを理解するのに大いに役立ちます。その命名規則を使用している関数はまだありますか? – Nghia
- 1. PHPのグローバル関数に名前を付ける必要がありますか?
- 2. マップデザインとマウスホバーで名前を付ける必要があります
- 3. 角度指示に名前を付ける必要がありますか?
- 4. Meteorの公開関数に名前を付ける必要がありますか?
- 5. void 'の前に'; 'を付ける必要があります。エラー?
- 6. node.jsモジュールは名前付き関数またはオブジェクトをエクスポートする必要がありますか?
- 7. トランザクションの名前を付けるときに@@計数が必要ですか?
- 8. いつ初期大文字で名前を付ける必要がありますか?
- 9. サービスファブリックアクターはどのように関連付ける必要がありますか?
- 10. プライベート関数の名前を付けるClojureの規約はありますか?
- 11. コードビハインドファイルでValidate()を呼び出す必要がありますか?
- 12. 主キーにインデックスを付ける必要がありますか?
- 13. jqueryの表示を非表示にするか、ループの名前を付ける必要があります。
- 14. どのRails関連付けを使用する必要がありますか?
- 15. レールでhas_one関連付けをインデックスする必要がありますか
- 16. 'HelpPage_Default'という名前のルートがすでにルートコレクションにあります。ルート名は一意である必要があります。パラメータ名:名前
- 17. SQL Serverテーブルの列に名前を付けるときは、使用しない名前がありますか?
- 18. 別の関数を返す関数に名前を付ける標準的な方法はありますか?
- 19. フィールド(とテーブル)の名前を付けるのに助けが必要
- 20. コマンドラインフラグを実装するときは、フォワードスラッシュ(/)またはハイフン( - )を前に付ける必要がありますか?
- 21. 関連するクラス間に冗長なメソッド名を付ける必要がありますか?
- 22. jQuery Validateチェックボックスがオンになっている必要がありますか?
- 23. RubyやRailsにgetaddrinfoという名前の関数がありますか?
- 24. 関数式で匿名関数に名前を付けますか?
- 25. 関数式に名前を付けることができない場合は、関数式の名前を付けるポイントは何ですか?
- 26. Rails:各ロケールに名前を関連付ける方法はありますか?
- 27. 関数の動作は変数の名前に依存する必要がありますか?
- 28. ORM.xmlファイルに名前付きクエリーを置く必要があります
- 29. 関数宣言にパラメータ名を含める必要がありますか?
- 30. 名前空間の名前は複数形にする必要がありますか?
例外がスローされる*チェック*例外*チェックされていない*例外*(実行時)* – CKing
すべての例外がチェックされています。 – Nghia