그래서 이전에 둘러 보았을 때 긴 방법이 나쁜 습관이라는 의견을 발견했습니다.
나는 긴 방법이 나쁘다는 것을 항상 동의하지 않습니다 (그리고 다른 사람들의 의견을 원합니다).
예를 들어 객체를 뷰로 보내기 전에 약간의 처리를 수행하는 장고 뷰가 있습니다. 긴 메서드는 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 년 전에이 질문을 한 것 같습니다.
그래서 (혼합) 응답 후 코드를 리팩터링하여 메소드로 나눕니다. 데이터베이스에서 복잡한 관련 개체 집합을 검색하는 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