파이썬에서 continue
을 사용하는 것은 나쁜 습관으로 간주됩니까? 중도 실행 기능을 중지하는 것처럼 보이지만 잘못된 상황에서 sys.exit()
또는 goto
과 같이 프로그램을 구성하는 것이 일반적으로 "좋지 않은"방법입니다."계속"나쁜 습관이 있습니까?
답변
흐름 제어의 사용은 논쟁의 여지가있는 주제입니다.
생각의 학교는 독자가 가정 할 흐름 제어를 숨김으로써 코드를 모호하게한다고 생각합니다. 선형적인 것입니다.
또 다른 생각은 대안이 복잡한 논리 (추가 플래그와 복잡한 루프 조건) 인 경우 정당하다고 생각합니다.
가장 좋은 방법은 코드를보고 결정하는 것입니다. 흐름 제어를 계속 숨기는 것과 같은 것을 사용하겠습니까? 당신의 코드가 그것없이 깨끗하게 표현 될 수 있습니까?
제 생각에는 그렇지 않을 이유가 없다면 계속하고 그 종족을 피하는 것이 좋습니다.
'예를 들어, 초기 출구가 필요한 루프의 경우를 생각해보십시오. 제어 흐름 중단이 없다면 루프의 플래그 변수로 작업해야 루프를 복잡하게 만들 수 있습니다. '같은 인스턴스 이외의 다른 부분을 사용하는 경우는 생각할 수 없습니다. 마찬가지로 루프의 현재 반복을 끝내고 다음 루프를 시작하기 전에는 계속 사용할 장소를 생각할 수 없습니다. 그러한 경우는 계속해서 왜 존재하고 끊어 지는가입니다. – Matt
물론,하지만 그들은 학대 당할 수 있습니다. 루프 컨트롤이 본문에있는 무한 루프를 실행하는 코드를 보았습니다. 흐름 제어가 중단되었습니다. 루프 내에서 if 문으로 쉽게 표현할 수있는 논리가있는 루프가 음수 테스트에 의존하여 계속 진행되는 경우도 있습니다. – RonaldBarzell
예, 물론 학대 당할 수도 있습니다. 모든 것이 학대 당할 수 있습니다. 그렇다고해서 모두 피해야한다는 의미는 아닙니다 (첫 번째 문장의 내용입니다 :'일반적으로 흐름 제어에서 "중단"을 초래할 수있는 코드는 모두 나쁜 행동으로 간주됩니다). – Matt
개인적으로 파이썬에서 계속 사용하면 좋습니다. 파이썬에서 if/else 문 유형 조건에 넣으면 계속 작동합니다.
구조화 된 프로그래밍의 기본은 잘 정의 된 진입 점과 종료점을 하나의 방법으로 - 이상적으로는 하나씩 정의하는 것입니다. 그러나 이것은 어렵고 빠른 규칙이 아니며 여러 종료점을 갖는 것이 적절한 경우가 많습니다. 나는 코드를 살펴보고, 여전히 계속되는 '계속'이 없으면 그것을 할 수있는 다른 방법이 있는지 생각해보고, 그렇지 않다면 '계속'을 사용하는 것이 올바른 접근 방법이 될 것이라고 생각한다.
- 1. 이번 봄 튜토리얼에서는 나쁜 습관이 있습니까?
- 2. 내 습관이 끝날 때까지 잠깐 (
- 3. django에서 절대 경로를 템플릿과 CSS로 만드시겠습니까? (나쁜 습관이 아닙니까?)
- 4. 민첩한 근무를 할 때 작업 습관이 어떻게 바뀌어야합니까?
- 5. 소유권 의미론과 같은 원시 포인터에 대해 unique_ptr을 반환하는 나쁜 습관이 있습니까?
- 6. 하나의 새로운 프로그래밍 언어를 배우는 습관이 기존 익숙한 언어에 달려 있습니까?
- 7. innerHTML이 지저분하고 좋은 습관이 아니기 때문에 jquery.html()이 xhtml에서 작동하지 않는다면 jquery.prepend() 등은 왜 작동합니까?
- 8. 대소 문자에서 SVN이 변경 사항을 무시하도록 할 수 있습니까?
- 9. Xcode에서 자동 완성 메뉴를 열지 못하게하는 방법이 있습니까?
- 10. HTML/Javascript 페이지의 양식 외부/외부에서 입력 필드를 사용할 때 위험이 있습니까?
- 11. 다른 ScrollView 안에 ScrollView를 둘 수 있습니까?
- 12. 함수에서 C++ #pragma 전 처리기가 상주 할 수 있습니까?
- 13. 테마 기능을 .tpl 파일로 대체 할 수 있습니까?
- 14. Maven을 다양한 저장소 (SVN)에서 한 번에 다운로드 할 수 있습니까?
- 15. WrapPanel에 대해 Wrap-point를 어떻게 설정할 수 있습니까?
- 16. Excel VBA에서 UDF를 작성하여 셀 범위를 필터링 할 수 있습니까?
- 17. Scala가 모든 코드 파일에서 사용하지 않은 모든 가져 오기를 제거하는 도구가 있습니까?
- 18. SqlConnection 개체를 단일 실행 파일의 속성으로 사용할 위험이 있습니까?
- 19. 컬렉션 A의 모든 파일은 구조가 다른 컬렉션 B에 포함되어 있습니까?
- 20. 캐싱으로 SQL 서버의 성능을 향상시킬 수 있습니까?
- 21. 있습니까
- 22. 현재 사용자의 역할에 대해 세션에서 키를 사용하는 것이 맞습니까?
- 23. 상단의 "use ...."는 Perl 스크립트에 오버 헤드를 추가합니까?
- 24. 컴파일 타임에 Java에 상수 값을 정의하는 방법이 있습니까
- 25. PowerShell을 사용하여 Outlook 2010에서 열려있는 전자 메일을 나중에 다시 열 수 있도록 녹음 할 수 있습니까?
- 26. .NET에서 이름 스레드가 필요한 이유는 무엇입니까?
- 27. 위젯 디자인. 더 나은 점은 IFrame 또는 자바 스크립트?
- 28. 헤더 파일 또는 구현 파일의 #import
- 29. Emacs에서 비상 탈출을 해제하거나 다시 매핑 하시겠습니까?
- 30. 전파 값을 기본 클래스로 디자인하는 패턴?
아니요, 괜찮습니다. – Keith
또한보십시오 http://stackoverflow.com/questions/216359/break-statements-in-the-real-world/216375#216375 – paxdiablo