そのため、先ほど見てみると、長い方法が悪い習慣であるというコメントがいくつかありました。
私は、長い方法が悪い(そして他の人からの意見が欲しい)ことにいつも同意するかどうかわかりません。
たとえば、オブジェクトをビューに送信する前にオブジェクトの処理を少し行うDjangoビューがあります。長いメソッドは350行のコードです。パラメータを処理するようにコードを作成しました。クエリセットの並べ替え/フィルタリングを行い、クエリが返したオブジェクトをビットごとに処理します。
そのため、処理は主に条件付き集計であり、データベースでは簡単に実行できない複雑なルールがあるため、メインループの外側で宣言された変数があり、ループ中に変更されます。
variable_1 = 0
variable_2 = 0
for object in queryset :
if object.condition_condition_a and variable_2 > 0 :
variable 1+= 1
.....
...
.
more conditions to alter the variables
return queryset, and context
したがって、理論によれば、すべてのコードをより小さなメソッドに分解する必要があります。そのため、ビューメソッドは最大1ページの長さであると見なされます。
ただし、過去にさまざまなコードベースで作業していたため、あるメソッドから次のメソッドに絶えずジャンプして、その最も外側のメソッドを頭の中で保持する必要がある場合、コードが読みにくくなることがあります。
適切にフォーマットされた長いメソッドを使用すると、内部メソッドで隠されないため、ロジックをより簡単に確認できます。
コードをより小さなメソッドに分解することもできますが、多くの場合、2つまたは3つのことに使用される内部ループがあるため、より複雑なコード、または1つだけではなく2つまたは3つ(またはタスクごとに内部ループを繰り返すこともできますが、パフォーマンスが低下します)。
だから、長い方法が必ずしも悪いわけではない場合はありますか?メソッドを1つの場所でのみ使用する場合、メソッドを記述する場合は常にありますか?
更新:1年以上前にこの質問をしたようです。
そこで、ここで(混合)応答の後にコードをリファクタリングし、メソッドに分割しました。これは、データベースから関連オブジェクトの複雑なセットを取得するDjangoアプリであるため、テストの引数が出ていません(おそらく、テストケースに関連するオブジェクトを作成するのにおそらく1年の大半を費やしていたでしょう。誰も文句を言う前の作業環境)。コードのその部分のバグを修正することは今やや簡単ですが、大したことではありません。
前 :
#comment 1
bit of (uncomplicated) code 1a
bit of code 2a
#comment 2
bit of code 2a
bit of code 2b
bit of code 2c
#comment 3
bit of code 3
今:
method_call_1
method_call_2
method_call_3
def method_1
bit of (uncomplicated) code 1a
bit of code 2a
def method_2
bit of code 2a
bit of code 2b
bit of code 2c
def method_3
bit of code 3