패스트캠퍼스 강의를 정리한 내용입니다.
"The RED : 프론트엔드 Back to the Basics : 지속 가능한 코드작성과 성능 향상법 by 김태곤"
사람이 읽기 좋아야 함
간결하고 의도가 명확해야 함
→ 주석으로 보조하는 건 괜찮지만 가능하다면 코드 만으로도 의도가 충분히 드러니도록 작성
"사람이 이해할 수 있는 코드는 바보라도 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 작성한다" - 마틴파울러
추천 도서 : 리팩터링 2판 (저자 마틴파울러)
→ 단순성(Simplicity). 복잡성이 증가하면 확장성(Scalability), 성능(Performance), 보안(Security) 등에 문제를 초래할 수 있음
가능하면 의존성이 적은 코드
JavaScript는 노드와 npm이 나타난 이후 다른 사람 코드를 가져다 쓰기 용이하나 가져다 쓰는 경우 의존성이 높아짐
2016년 발생한 leftpad 사건
leftpad: 문자열의 길이가 주어진 숫자보다 작으면 공백 또는 전달한 문자를 채워넣어서 길이를 맞춰주는 모듈
leftpad 모듈 코드: https://github.com/left-pad/left-pad/blob/master/index.js
leftpad 개발자가 모종의 사건때문에 자신이 올린 프로젝트를 다 지웠는데 이때 leftpad가 포함되어 있었고, 이 사건으로 인해 이에 의존하는 다른 수많은 모듈도 작동이 멈춰버림
관련 기사 참고: "11줄의 코드, 인터넷을 패닉에 빠뜨리다"
재현 과정
백엔드는 로그를 보고 데이터의 입출력 확인이 가능하지만, 프론트는 사용자의 액션으로 발생하는 버그가 대부분이므로 정확한 재현 과정 필요
웹 브라우저에 설치한 확장 기능 때문에 버그가 발생할 수도 있고, 사용자의 인터넷 환경이 느리거나 불안정해서 문제가 생길 수도 있음
기대 동작(정상 시스템의 동작)
왜 이것을 에러라고 인식했는가
예를 들어,
"주문 버튼을 클릭했는데 주문 완료까지 3초가 걸렸다"
이것은 에러일 수도 있고 아닐 수도 있음
에러가 되려면 "결제는 1초 안에 완료되어야 한다"와 같이 기대 동작이 있어야 함
"한국어 입력에 문제가 있다"는 무의미한 버그 보고
"'패스트캠퍼스'를 입력했는데 캠 부분의 받침이 분리되어야 캐ㅁ으로 된다"와 같이 정확한 기대 동작이 있어야 유의미한 버그
에러 메시지
브라우저 콘솔에 에러 메시지가 나타나는 버그는 상대적으로 원인을 발견하기 쉬운 편
정적 분석: 실행하지 않고 코드를 분석해 문제점을 찾아내는 것
타입스크립트는 정적 분석을 지원함