6. 축약하지 말라
소트웍스 앤솔로지의 Object Calisthenics 내용을 TypeScript로 적용해봤습니다.
버정이라는 단어를 들어본적이 있는가? 버스 정류장을 줄여쓴 말이다. 별 걸 다 줄여쓴다고? 그걸 줄여서 별다줄이라고 한다. 일상 대화에서는 어떤 단어를 줄여쓰더라도 그 문맥이 쉽게 파악되기 때문에 크게 신경쓰지 않는 편이지만, 쓰여있는 글에서 버정, 별다줄과 같은 줄임말들을 보면 위화감을 느낄 수 있다. 나만 그런가? 우리가 작성하는 코드 역시 쓰여있는 글의 한 종류다. 읽는 사람으로 하여금 이해하기 쉽게 하고 싶다면 우선 변수, 함수명부터 줄여쓰지 말자.
이 규칙은 이전 규칙들과 다르게, 정말 어떤 상황에서도 예외없이 지키자.
같은 단어를 반복해서 쓰는 것이 코드를 지저분하게 만들지 않나?
그것은 높은 확률로 계속 코드를 중복해서 사용하기 때문이다. 코드의 중복을 줄이기 위해 메소드를 만들고, 클래스를 만들어 DRY한 코드를 만든다면 애초에 같은 단어를 반복해서 쓸 일이 잦지 않다.
메소드명이 "너무" 길어지지 않나?
그것은 메소드가 단일 책임 원칙을 위반하고 있진 않은지 살펴볼 필요가 있다. 메소드가 두 개 이상의 역할을 하고 있고, 이를 메소드명에 모두 담아야 하기때문에 길어지는 것이다. 메소드를 추출, 분리하여 하나의 메소드가 하나의 역할만 하게 한다면 메소드명 역시 짧아진다.
적당한 이름을 붙일 수 없는데 어떡할까?
혹시 그 클래스나 메소드는 과연 필요할까 고민해보자. 적당한 이름이 생각나지 않는다면 (물론 영단어 실력이 부족해서라면 번역기를 사용하자) 무엇인가 잘못 만들었다는 신호일 수 있다. 이런 경우 메소드나 클래스의 존재의미부터 다시 고민해보면 더 나은 설계가 생각날지도 모른다.
Last updated