게이트와 구현
8. 어긋남을 막는 게이트
손으로 쓴 help의 유일한 위험은 옵션이 늘 때 조용히 낡는 것입니다. 테스트 하나가 그것을 닫습니다.
| 검사 | 무엇을 잡습니까 |
|---|---|
[Option] 이름 전부가 help 본문에 나옵니다 | 옵션을 추가하고 help에 안 적은 것 |
help 본문에 적힌 --이름 전부가 실재합니다 | 옵션을 지웠는데 help에 남은 것, 그리고 오타 |
| 짧은 이름이 선언된 옵션은 help에도 짧은 이름과 함께 나옵니다 | -e를 붙였는데 화면에는 안 적은 것 |
tabbit --help의 종료 코드가 0 | §6이 회귀하는 것 |
tabbit --version이 .NET을 담은 줄을 냅니다 | 런타임 줄이 빠지는 것 |
| 인자 없는 실행의 종료 코드가 1이고 출력이 5줄 이하 | 다시 90줄을 쏟는 것 |
리플렉션으로 Options의 프로퍼티를 훑으므로, 옵션을 추가하는 사람이 이 테스트를
기억할 필요가 없습니다. 잊으면 게이트가 보고합니다.
9. 하지 않는 것
| 안 하는 것 | 이유 |
|---|---|
| help의 다국어화 | --messages는 5개 언어인데 help는 영어 고정으로 둡니다. §3의 분량을 5개로 유지하는 비용이 실제로 있고, 그 비용을 낼 근거가 아직 없습니다. 의도적 결정이고, 필요해지면 메시지 카탈로그가 이미 그 자리입니다 |
서브커맨드 (tabbit history …) | 여섯 모드가 서브커맨드에 잘 맞기는 합니다. 그런데 그것은 호출 호환성을 깨는 변경이고, 이 문서가 고치려는 것은 화면입니다. 화면이 모드를 말하기 시작하면 그때 서브커맨드가 정말 필요한지 다시 볼 수 있습니다 |
--help <topic> | 위 화면이 한 화면에 안 들어오는 것은 사실입니다. 다만 지금 문제는 분량이 아니라 구조이고, 구조를 먼저 준 다음에 분량이 여전히 문제인지 봐야 합니다 |
-p·-f·-s 추가 | §4 |
| 문서 URL | 저장소가 private이라 지금 외부에서 열리지 않습니다. doc/cli.md 상대 경로로 둡니다 |