Robert C. Martin의 Clean Code 를 읽고 있는데이 코드TILT
는 일부 코드 샘플에 설명 할 수 없습니다. 예를 들어 (Java로되어 있음) :
...
public String errorMessage() {
switch (status) {
case ErrorCode.OK:
// TILT - Should not get here.
return "";
case ErrorCode.UNEXPECTED_ARGUMENT:
return "Unexpected argument";
case ErrorCode.MISSING_ARGUMENT:
return "Missing argument";
...
}
...
맥락에서, I는 같은데요 TILT
(위의 코드에서, 예를 들어 도달 할 수없는 단지 컴파일러를 만족시키기에 포함되어있는 상태를 나타내고 TILT
에 표시되는 ErrorCode.OK
상태 인 경우 에러 메시지가 없어야하기 때문에 경우 OK
)뿐만 잘 모르겠습니다.
아무도 TILT
/ 의미하는 것이 무엇인지 아는 사람이 있습니까?
답변
물리적 핀볼 머신에는 센서가있어 외부에서 무언가가 머신을 방해하거나 기울임으로써 볼 경로에 너무 많은 영향을 주려고 할 때이를 감지합니다. 핀볼은 특히 볼이 무언가에 걸려있을 때 허용되는 일정 정도의 동작이 허용되는 오랜 전통을 지니고 있기 때문에 여기에서 너무 많이 말합니다 . 공이 테이블의 바닥에서 떨어질 때까지 비활성화됩니다. 일반적으로 게임의 “틸트”표시등과 때로는 경고음이 울립니다. 예외를 발생시키는 것과 같은 핀볼로 생각하십시오.
마틴의 은유는 ErrorCode.OK
아마도 유효 status
하고 기능이 강제로 수행해서는 안되는 일을 강요하려고 시도하는 것이 아니기 때문에 긴장 됩니다. 즉, 해당 입력은 누락 된 인수에 대한 오류 메시지를 리턴하는 함수를 가져 오려고하지 않습니다.
이것의 나머지 부분은 귀하의 질문에 대답하지 않지만, 비판적인 눈으로 나머지 책을 읽을 이유가 될 수 있습니다. 이 예제를 둘러싼 텍스트가 손을 흔드는 지 확인하기 위해 책에 액세스 할 수는 없지만 그렇지 않은 경우 메서드는 제목에 맞지 않는 작업을 수행합니다.
첫 번째는 아마도 유효하지 않은 입력 또는 상태를 예외적 인 조건으로 취급하지 않고 불평한다는 것입니다. 메소드의 문서에 객체 status
가 오류 상태 일 때만 호출해야한다고 명시되어 있으면 호출 코드에서 수정해야하는 논리 문제 일 것입니다.
두 번째는 다른 문자열만큼 유효하지만 마술 상수로 효과적으로 사용되는 문자열을 반환한다는 것입니다. 메소드 호출이 실수인지 알고 자하는 호출자는 리턴 값의 내용을 확인하거나 해독하여 판독하기 위해 인간에게 전달해야합니다 (예 : Operation result:
추가 정보 없음).
선택적인 세 번째 옵션은 컴파일러가 열거 된 값의 전체 적용 범위를 예상 할 경우 default
커버되지 않은 사례를 포착하는 데 사용하는 것이 개별적으로 또는 그룹으로 열거하는 것보다 훨씬 읽기 쉽다는 것입니다. (필립 측면은 오류가 아닌 두 번째 상태를 추가하면 프로그래머가 명시 적으로 처리 방법을 선언하도록 컴파일러가 불만을 제기하는 것이 낫다는 것입니다.)