これは簡単な質問かもしれませんが、私はいくつかの説明を必要とします... 私たちのメソッドは、好ましくは5-10行まで、小さくする必要がありますと言うクリーンコードと呼ばれる本があります。そのためには、メソッドを小さなものに分割する必要があります。 たとえば、次のようにsomeMethod()があるとします。たとえば、「Example」の変更には5行が必要で、別のメソッドに移動して「Example」を修正してsomeMethod()に戻すことにします。これを行うことによって、someMethod()は小さくなり、読みやすくなります。それはいいですが、「副作用」と呼ばれるものがあります。これは、オブジェクトを別のメソッドに渡してそこで変更するべきではないということです。少なくとも、私はそれは悪い考えであると言われました)しかし、私はClean Codeでこれを禁止する何かを見たことはありません。Javaメソッドの副作用
public Example someMethod() {
// ... different lines here
Example example = new Example();
example = doSomethingHere(example, param1, param2, ...);
// ... different lines here
return example;
}
private Example doSomethingHere(Example example, 'some additional params here') {
// ... modify example's fields here ...
return example;
}
だから、私は方法をこの方法や、そのような副作用を分割させて頂いて禁止され、代わりに私は間違いなく短い方法について話してクリーンなコードのルールを破るかなり長いライン法に対処すべきか? UPDATED
(サブメソッドのためのより具体的な名称)
public Example someMethod() {
// ... different lines here
Example example = new Example();
example = setExampleFields(example, param1, param2, ...);
// ... different lines here
return example;
}
private Example setExampleFields(Example example, 'some additional params here') {
// ... modify example's fields here ...
return example;
}
doSomethingHere()でサンプルを作成して返さないのはなぜですか?または少なくともこのメソッドからvoidを返しますか?メソッドの唯一の責任がオブジェクトを変更することである場合、オブジェクトを変更することは副作用ではありません。これはメソッドの唯一の効果です。 –
多くのものを渡しているなら、ExampleをContextスタイルのオブジェクトにして独自のパラメータを持たせるのはいかがですか? – Compass
@Compass私はあなたのコメントをさらにアップアップすることができたらいいと思う。 – CraigR8806