1. ホーム

[解決済み】パラメータはいくつあっても足りない?[クローズド]

2022-04-05 18:12:41

質問

ルーチンはパラメータを持つことができる、それはニュースではない。パラメータは必要な数だけ定義できますが、多すぎるとルーチンの理解やメンテナンスが難しくなります。

もちろん、回避策として構造化変数を使うこともできます。これらの変数をすべて1つの構造体に入れて、ルーチンに渡します。実際、構造体を使ってパラメータ・リストを簡素化することは、Steve McConnellが『Steve McConnell's Guide』で説明しているテクニックの1つです。 コード・コンプリート . しかし、彼が言うように

注意深いプログラマは、論理的に必要以上のデータを束ねることを避ける。

ですから、もしあなたのルーチンがあまりにも多くのパラメータを持っていたり、大きなパラメータリストを隠すために構造体を使っていたりしたら、おそらく何か間違ったことをしているのでしょう。つまり、カップリングを緩やかにしていないのです。

質問です。 パラメータリストが大きすぎると判断できるのは、どのような場合ですか? 5個以上のパラメータは多すぎると思います。あなたはどう思いますか?

解決方法は?

言論の自由を保障する憲法修正第1条にもかかわらず、規制されるほどの猥褻なものとみなされるのは、どのような場合でしょうか。 Potter Stewart判事によれば、「見ればわかる」ということですが、ここでも同じことが言えます。

プロジェクトの規模や範囲だけでなく、モジュール単位でも答えは変わってくると思うので、こういった固いルールは作りたくないんです。 メソッドが何をしているのか、あるいはクラスが何を表しているのかにもよりますが、2つの引数は多すぎるし、結合が強すぎるという症状である可能性も十分にあり得ます。

そもそも質問をすること、そして質問をこれだけ修飾することで、あなたは本当にこのすべてを知っていると言えるのではないでしょうか。 ここでの最良の解決策は、堅苦しい数字に頼らず、デザインレビューや仲間内のコードレビューに目を向けて、結合度が低く、結合が密な部分を特定することです。

同僚に自分の仕事を見せることを恐れてはならない。 もし恐れているのなら、それはおそらくあなたのコードに何か問題があることを示す大きなサインであり、あなたが すでに知っている .