2주차 프리코스 미션 '자동차 경주 게임'에서 배운 이론을 정리합니다.
1주차 피드백
- 2주 차 미션에서는 1주 차에서 학습한 것에 더해 클래스를 분리하며 개발하는 것을 목표로 할 것.
- 이름을 통해 의도를 드러내기. 이를 통해 변수, 함수, 클래스의 역할에 대한 의도를 드러내자. (숫자 및 불용어는 제외하기)
- 축약하지 마라. 의도를 드러낼 수 있다면 이름이 길어져도 괜찮다.
- 클래스 및 메서드 이름을 한 두단어로 유지하려고 노력하라
- 문맥을 중복하는 이름을 자제하라 (ex. 클래스 이름이 Order라면, shipOrder라고 메서드 이름을 짓지 말자. ship()으로 하면 order.ship()으로 간결한 호출이 가능하다.)
- 공백도 코딩 컨벤션이다. if, for, while문 사이의 공백도 코딩 컨벤션이니까 신경쓰자.
- 공백 라인을 의미있게 사용해라. 공백라인을 문백을 분리하는 부분에 사용하면 좋다. 다만, 과도한 공백은 지양하자.
- 반복하지 마라. 중복은 소프트웨어에서 모든 악의 근원이다.
- space vs tab의 혼용을 하지마라. 둘 중 하나만 사용하라. 확신이 서지 않으면 pr을 보낸 후 들여쓰기가 잘 되어있는지 확인하는 습관을 들이자.
- 의미없는 주석을 달지 말자. 이름을 통해 어떤 의도인지 드러난다면 주석을 달지 않는다. 가능하면 주석이 아닌 이름을 통해 의도를 드러내고, 불가능한 경우 주석을 단다.
- 커밋 메시지를 의미 있게 작성하라. 커밋 메시지에 해당 커밋에서 작업한 내용에 대한 이해가 가능하도록 작성한다.
- 기능 목록을 업데이트하라. README.md 파일에 작성하는 기능 목록은 기능 구현을 하면서 바뀔 수 있다. 시작부터 완벽히 정리해야한다고 생각하지말고, 구현하면서 계속 업데이트하자. 죽은 문서가 아닌 살아있는 문서를 만들기 위해 노력한다.
- 기능 목록을 재검토하라. 기능 목록은 클래스 설계와 구현, 함수(메서드) 설계와 구현과 같이 너무 상세히 작성하지 않는다. 이름과 반환값은 언제든지 변경될 수 있기 때문이다. 너무 세세한 부분까지 정리하기 보다, 구현해야 할 기능 목록을 정리하는데 집중하자. 정상적인 경우도 중요하지만, 예외적 상황도 기능목록에 정리한다. 특히 예외 상황은 시작 단계에서 모두 찾기 힘들기 때문에, 기능을 구현하면서 계속해서 추가해나간다.
- README.md를 상세히 작성하라. 해당 프로젝트가 어떤 프로젝트이며, 어떤 기능을 담고 있는지 기술하기 위해 적절한 마크다운을 사용하라.
- linter, code formater의 기능을 활용해라. 이를 통해 더 생산적으로 코드를 작성할 수 있다.
- 최종 제출 코드에서 EOL(End Of Line) 설정을 확인하라. 환경에 따라 의도한 바와 다르게 개행 문자가 처리되지 않도록 EOL 설정을 확인한다.
- 최종 제출 코드에서 불필요한 console.log를 남기지 않는다.
- var 대신 const, let을 사용하라.
프론트엔드 개발자라면 사용성 고민을!
어떤 패턴의 코드를 작성할지 보다 사용자와의 상호작용을 더 고민해보자. 프론트엔드 개발자라면 사용자의 입장에서 어떤 기능이 필요할지, 어떻게 기능을 만들어야 사용하는 입장에서 편리할지를 염두에 두고 개발해야 한다. 자동포커스 기능을 통해 사용자가 프로그램이 시작되면 가장 먼저 해야 할 일을 암시하거나 인풋에서 엔터와 클릭 모두 사용 가능하도록 하는 것은 아주 좋은 예시이다.