if else 제거하기 - Mon, Feb 15, 2021
하고 싶은 일은 지금 하자.
좋은 코드를 작성하는 연습법으로 유명한 객체지향 체조 원칙이 있는데 아래와 같다.
- 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다.
- 규칙 2: else 예약어를 쓰지 않는다.
- 규칙 3: 모든 원시값과 문자열을 포장한다.
- 규칙 4: 한 줄에 점을 하나만 찍는다.
- 규칙 5: 줄여쓰지 않는다(축약 금지).
- 규칙 6: 모든 엔티티를 작게 유지한다.
- 규칙 7: 2개 이상의 인스턴스 변수를 가진 클래스를 쓰지 않는다.
- 규칙 8: 일급 콜렉션을 쓴다.
- 규칙 9: 게터/세터/프로퍼티를 쓰지 않는다.
2번 else 예약어를 쓰지 않는다는 특히 미묘한 규칙인데 else가 가독성을 떨어뜨리기 때문이다. 실제로 회사에서 경험한 일인데 예외 상황이 발생해서 긴급하게 수정을 하다 보면 코드가 if와 else로 도배되고 결국 가독성이 매우 떨어지는 스파게티 코드로 변경되는 일이 종종 발생했다.
문득 삶에서도 if와 else 문장을 제거해야겠다는 생각이 들었다. 내 삶에는 너무 많은 if문이 존재하고 있다.
- 만약 부자가 된다면 기부를 해야겠다.
- 한가해지면 운동을 해야지.
- 이번 일만 마치면 나도 유튜버를 해야지.
- 이번 게임 엔딩만 보고 나면 게임을 끊어야지.
시간이 지나고 나서 깨닫는 사실은 if문이 true가 되는 일은 거의 발생하지 않았다는 것이다. 해결책이 뭘까 곰곰히 생각해 보니 그냥 if문을 제거하는게 가장 좋은 것 같다.
문제는 충분한 여유 - 금전적, 혹은 시간 - 이 없다는 것인데, 거기에 대한 해결책은 원래의 목표보다 작은 크기의 행동을 하기로 했다.
- 기타소득의 10%를 기부하자.
- 하루에 10분 운동하자.
- 틈나는대로 유튜브를 찍자.
- 게임은 하루에 20분으로 줄이자.
이런 식으로 if문을 없애고 실행을 해 봤는데, 괜찮았다. 물론 이렇게 해도 여전히 행동으로 옮기지 못하는 것들이 있었는데, 그런 것들은 백로그(나중에 할일) 목록으로 옮기거나 TODO 리스트에서 삭제해 버렸다.
무엇이든 지금이다. 실천하자.