, 나는 보통 내 코드는 다음과 같은 점에 도달 : 내가 당신에 대해 모르는Ruby의 N 끝을 더 잘 보이게 만드는 방법은 무엇입니까? 나는 몇 가지 스크립트를 작성할으로
end
end
end
end
end
end
을, 그러나 이것은 나에게 매우 예쁘게. 이것에 대해 무언가 할 수 있습니까?
, 나는 보통 내 코드는 다음과 같은 점에 도달 : 내가 당신에 대해 모르는Ruby의 N 끝을 더 잘 보이게 만드는 방법은 무엇입니까? 나는 몇 가지 스크립트를 작성할으로
end
end
end
end
end
end
을, 그러나 이것은 나에게 매우 예쁘게. 이것에 대해 무언가 할 수 있습니까?
:-) 파이썬을 사용? 더 많은 방법을 사용하도록 리 팩터링 하시겠습니까? 다른 루틴에 전달 된 블록을 대신 사용 하시겠습니까?
일반적으로 깊은 중첩은 방법이 너무 복잡해지고 분해되어야한다는 지표입니다. 리팩터링 된 메소드에 따라 내부 복합 문을 명명하여 암시 적 구조 문서에도 도움이 될 수 있습니다.
이러한 내부 블록이 쉽게 이름을 지정하고 (재사용 할 수있는가?), 작은 개별 기능으로 리팩토링하지 않는 이유는 무엇입니까? 그렇다면 결국 짧은 시퀀스로 끝날 것입니다.
그렇지 않으면 또 다른 방법은 너무 많이하지 둥지 코드를 수행
누군가 파이썬을 제안 할 것이라고 확신했습니다 :) – Geo
사실 파이썬과 포션 [http://github.com/why/potion/tree/master]을 염두에 두었습니다. 그러나 후자는 좀 더 실험적인 맛이었습니다.) –
작은 조각으로 분해하는 것이 좋습니다. 그런 중첩 된 블록이 많이 필요한 경우 end
키워드에 주석을 붙일 수 있습니다.
end # End conditional statement
end # End method declaration
end # End class declaration
그래도 추악하지만 적어도 분명합니다.
앞서 언급 한 다른 옵션들이 바람직합니다.
작고 테스트 가능한 기능을 사용해보십시오. 함수와 더 중요한 것은 논리를 테스트하기가 쉽지만 코드가 더 쉽게 읽을 수있게됩니다.
나는 중첩 보았다 "{}"블록과 4 공간 소프트 탭과 :
말, 말, 말, 말
나는이 수직 공간을 절약 가정,하지만 난 돈 깊은 중첩을 피하고 블록 끝 줄을 주석 처리하는 것에 대한 위의 의견은 유효한 접근 방법입니다. 심도있는 중첩은 속도 향상이 필요한 메소드 호출 오버 헤드를 피하는 것이지만 가독성은 거의 항상 "최적화"와 비슷합니다.
이것은 Ruby에만 국한되지 않습니다. 계단 코드는 영원히 계속되었습니다. – Pesto
Python은 바깥쪽에 만 계단식으로 들어가기 때문에 좋습니다. 나는 그것이 선택 사항이 아니라는 것을 알고 있지만 파이썬의 디자인 목표 중 하나였습니다. – Soviut