2016-08-27 12 views
2

私は、同じ命名規則validateSomething()を使用するコード内に多くのプライベートな検証関数を持っています。 validateが失敗した場合、そのうちのいくつかは例外をスローします。 throwExceptionIfSomethingInvalid()の名前を変更してコードを読みやすくします。しかし、誰かが新しい名前はあまりにも奇妙で、混乱させてしまうと主張する。あなたはそれについて私にいくつかの助言を与えるのを助けることができますか?validate関数throwExceptionIf ...という名前を付ける必要がありますか?

+0

例外がスローされる*チェック*例外*チェックされていない*例外*(実行時)* – CKing

+0

すべての例外がチェックされています。 – Nghia

答えて

1

「正確な」回答はありません。条約のみ。あなたが選んだ人はそれほど重要ではありません。より重要な点は、あなたが選んだ名前付けポリシーは何ですか:

  1. あなたはそのことに固執する必要があります。ここでは1つの種類の「命名方式」を使用し、もう1つを使用しないでください。
  2. 他の人とチームを組んでいる場合:チームの皆様と同じがあることをご確認ください。

他の言葉:あなたはPOLA(最小の驚きの原則)に従いたいと思っています。あなたのコードの読者は、メソッドの名前があなたの文脈では、メソッドが何をするかを正確に示していることを常に知るべきです。

のほかに、「私のポリシーは」checkSomethingvalidateSomethingElseのように起動しのボイドメソッドは常にチェックが失敗した場合に例外をスローすることが一般的である(よく:何がボイドメソッドが例外をスローする以外に行うことができます) 。

ブールと対照的に、isSomethingValid()程度です。

1

しかし、誰かが新しい名前は、私は同意

あまりにも奇妙であると主張しています。メソッドがチェック例外をスローできるように指定する正しい方法は、それをメソッドシグネチャの一部として宣言することです。例:あなたがこれを行うと

  1. validateName()throws InvalidInputException
  2. validateAge()throws InvalidInputException

、呼び出し側は常に例外を処理以上のモジュールにそれを伝播するか強制されます。

これを見るもう1つの方法は、あなた自身にこのことを尋ねることです:値void doSomethingWithoutReturnを返さないメソッドを指定しますか?署名の内容がvoidであることを確認したときに、このメソッドが何も返さないことがわかっているからです。

+0

しかし、読者は関数名ではなく関数宣言でそれを見つけなければなりません。すべての検証関数が例外を投げるわけではないので、関数を検証するための呼び出しに出会ったときに、特にIDE環境でコードを読み取っているときに、それを見つける宣言を見つけなければなりません。 – Nghia

+0

@Nghia IDEを使用していないという理由だけで、そのようなネーミング方法については触れることはできません。最後のメソッドがあるとしましょう:final void someMethod() ' IDEを使用しないので、このメソッドの名前を 'void someMethodFinalWithNoReturn'に変更しますか?権利はありません? – CKing

+0

はい、あなたの意見があります。しかし、throwing例外はvalidate関数の主な目的ですが、最終的なvoidとは異なると思います。私はまた、休止状態のソースでerrorIfClosed()のようなものを見ると、コードを理解するのに大いに役立ちます。その命名規則を使用している関数はまだありますか? – Nghia

関連する問題