본문 바로가기
파이썬

파이썬 여러 줄 'if'문의 들여 쓰기를위한 코드 스타일?

by º기록 2020. 10. 9.
반응형

긴 if 조건을 들여 쓰기 할 때 일반적으로 다음과 같은 작업을 수행합니다 (실제로 PyDev는 이와 같이 들여 쓰기합니다).

if (collResv.repeatability is None or
    collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()

그러나 이것은 if 문에 의해 시작된 블록을 if 조건의 마지막 부분과 동일한 들여 쓰기 수준으로 설정하여 블록이 시작되는 위치를 즉시 보지 못하므로 내 의견으로는 읽기가 매우 추악하고 어렵습니다.

내가 생각한 다른 스타일 :

if (collResv.repeatability is None or
        collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()

두 번째 줄이 첫 번째 줄보다 훨씬 더 많이 들여 쓰기되어 있기 때문에 상당히 일관성이 없어 보이지만 읽을 수 있습니다.

if (collResv.repeatability is None or
  collResv.somethingElse):
    collResv.rejected = True
    collResv.rejectCompletely()

이것은 또한 첫 번째 예보다 더 읽기 쉽지만 들여 쓰기는 더 이상 4의 배수가 아니며 두 번째 줄은 첫 번째 줄의 조건 시작보다 들여 쓰기가 적기 때문에 잘못 보입니다.

그래서, 내 주요 질문은 : 지나치게 긴 줄이 필요하지 않은 경우 (즉, 한 줄 조건)에 제안 된 들여 쓰기 스타일이 있습니까? 그렇지 않다면 당신 은 그러한 경우에 무엇을 선호합니까?

 

해결 방법

 

이것은 간접적 인 대답입니다. 스타일 질문에 직접 대답하는 것이 아니라 일반적으로 실용적인 대답이므로 언급 할 가치가 있습니다.

여러 줄 조건문을 작성해야하는 경우는 극히 드뭅니다. 여기에는 두 가지 요소가 있습니다.

내 최근 프로젝트, 약 12kloc을 살펴보면 포장 할 필요가있을만큼 충분히 긴 조건부가 하나뿐입니다. 문제는 매우 드물게 발생합니다. 이 작업을 수행해야하는 경우 nosklo가 말했듯이 개별적으로 들여 쓰기합니다. 아시다시피 아래 블록과 동일한 수준으로 들여 쓰기하면 혼란스럽고 읽기 어렵습니다.

 

참조 페이지 https://stackoverflow.com/questions/5117065

 

 

반응형

댓글