54

重複の可能性:
関数が長すぎるのはいつですか?

私は最近、別の開発者が書いた質の悪いコードをレビューし、その悪習を文書化するという、うらやましい仕事を任されました。(もちろん、これは利他的な理由ではなく、開発者の作業に対する支払いから逃れるためのものです!)

レビューされたコードには、多くの行のコードであるいくつかの手順があり、最長のものはほぼ 600 行です。私が考えたこれに関するいくつかの問題は、保守性と可読性です。

秘訣は、なぜこれが悪い習慣なのかを素人に説明し、可能であれば、よく知られている最新の参考書でそれを裏付ける必要があるということです。アナロジーもいい。

何か案は?

重複: 関数が長すぎるのはいつですか?
重複: 最大関数サイズの最適なルール?

4

6 に答える 6

142

コード行の問題ではありません。Steve McconnellBob Martinが言うように (コーディングのベスト プラクティスに関する 2 つの非常に優れたリファレンス)、メソッドは 1 つのことだけを行う必要があります。ただし、そのために必要なコードの行数は、何行必要かということです。その「1つのこと」がより小さなものに分解できる場合、それぞれにメソッドが必要です。

メソッドが複数のことを行っている良い手がかり:

  • メソッド内の複数レベルのインデント (1 つのことだけを行うには論理分岐が多すぎることを示します)
  • 「段落区切り」 - コードの論理グループ間の空白は、メソッドが複数のことを行っていることを示します

ほんの数例を挙げると。Bob Martin も 10 前後に保つように言っています。個人的には、通常は 10 を狙うようにしています。20 に近づき始めたら、それはその方法にもっと注意を払うためのメンタル フラグです。しかし、最終的には、コードの行数は、ほとんどすべての指標として不適切です。これは、実際の問題を潜在的に指摘できる有用な指標にすぎません。

于 2009-03-04T16:23:36.363 に答える
2

Rex の主張に加えて、それは可能な限り短くする必要もあります。ボブ・マーティンは10人以下と言います

Object Mentor - 関数の大きさはどのくらいですか?

于 2009-03-04T16:24:11.900 に答える