큰 소프트웨어에서 소스 코드 줄 당 예상되는 catch 문 수는 얼마입니까?코드 행에 대한 catch 문의 비율이 높음
예를 들어 C#으로 작성된 소프트웨어에서 Visual Studio는 "catch"라는 단어가 포함 된 약 350 줄을 표시하고 cloc은 약 160k SLOC, 30k 주석 처리 된 줄 및 15k 빈 줄이 있다고보고합니다. 160k/350은 catch 문당 대략 467 행의 코드입니다.
우리는 표준 줄을 사용하여 표준 C# 형식을 사용하기 때문에 소금을 사용합니다. 따라서 160k 중에서 얼마나 많은 줄이 하나의 줄임말인지, 그리고 160k는 트리가 더 이상 응용 프로그램에 컴파일되지 않습니다. "유용한"비율이 400 LOC 당 1 캐치에 더 가깝습니다.
놀랍지도 않지만, 우리는 빈 catch 블록에서 잡히고있는 준 비판적 예외를 놓쳤다. 그래서 이제는 코드베이스를 살펴보고 적어도 디버그 콘솔에 대한 예외를 인쇄하고있다. 일시적인 조치로서, 또는 잡힌 예외에 대해 더 구체적이되는 것. 이것은 물론 우리가 전체 적용에서 가지고있는 어획량을 증가 시키지만, 그것은 "수용 가능한"지역에 가까운 곳에서 우리를 데려다 줄 것인가? 나는 467 LOC 당 1 캐치가 좋은지, 그냥 괜찮은지, 아니면 끔찍한 지 전혀 모른다.
저는 에 대해 알고 있습니다. 왜은 빈 캐치 블록을 사용하지 않습니다. 다른/이전 관리자들은 게으르다. 그리고이 제품의 다음 릴리스는 시간이 중요하기 때문에 현재 300 개 (?)의 잘못된 catch 문을 올바르게 수정하고 소프트웨어가 올바르게 작동하는지 확인할 시간이 없습니다. (물론 우리는 실제로 자동화 된 기능이 없습니다. 테스트를 쉽게하기 : /).
내가 얼마나 자주 잡아 먹어야하는지에 관해 "gut feel"이 있는지 찾고 있었다. 문맥에 구애를 받는다는 답변이 두 가지 있습니다. 의심 스럽지만 잘 모르겠습니다.
빈 try 블록 자체가 나쁜 아이디어가 아닙니다 (즉, 올바르게 사용할 수 있음). 주요 프로그래머는 오류를 로깅하고 사용자 피드백을 제공해야하는 곳에서 끔찍하게 학대하는 것입니다. – Noldorin
빈 try-catch 블록을 다루면서이를 기반으로 또 다른 질문을 봅니다. [빈 캐치가 왜 나쁜 생각을 차단합니까?] (http://stackoverflow.com/questions/1234343/why-are-empty-catch-blocks- 나쁜 아이디어). – Lode
Noldorin과 동의하지 않으며 빈 catch 블록이 항상 잘못되었다고 제안합니다. 완전히 무시하고 싶은 특정 유형의 문제가있는 경우 catch 유형을 한정하여 예상되는 오류 유형 만 무시합니다. 몇 가지 방법 : << catch (VerySpecificExceptionType ex) {} >> 또는 << catch (Exception ex) {if (ex.Message! = "예상했던 것") throw; } >> 나는 비어있는 catch 블록이 괜찮을 수도있는 counter-examples에 개방적이지만 회의적이다. :) – pettys