좋은 코딩 규칙 요약

변화에 민감하지 않게 작성하기

항상 인식하고 코딩하기 위해 요약해두었습니다. 유의해야할 추가적인 규칙이 생기거나 생각날때마다 추가하겠습니다.

고려사항

  • 유지보수성 : 기능 변화(추가, 수정, 삭제)에 따른 클래스 / 모듈의 변화 개수를 최소화
  • 가독성 : 이해가 빠르게 되는 코드
  • 안정성 : 환경, 코드 변화에
  • 성능

고려사항을 도와주는 규칙

규칙을 꼭 따르지 않아도 더 좋은 코드가 나올수도 있다는 점에 유의하자. 경험상 왠만해서는 그런경우가 별로 없다.

  • 유지보수성(기능 변화에 따른 클래스 / 모듈의 변화 개수를 최소화)
    • 중복배제
    • 단일책임원칙
    • 디자인패턴의 활용
    • 구체적인것 보단 추상적인 것에 의존
      • 의존성 뒤집기 원칙
    • 응집도는 높이고 의존성은 낮추는것
    • 확장 개방 (확장성) 수정 폐쇠 (단일책임) 원칙
    • 인터페이스 분리
      • 다목적 인터페이스 1개보다 다양한 인터페이스 지향
    • 작은 크기의 함수 / 클래스 / 모듈 / 코드파일
    • (인터페이스가 사용된) 자료구조적 클래스 / 객체지향적 클래스의 장단점을 분간하여 사용. 짬봉으로 섞어서 사용금지
      • 자료구조적 : 새로운 함수추가에 코드변화가 적다
      • 객체지향적 : 새로운 데이터형태 추가에 코드변화가 적다
    • if문, switch문 분리
      • if문과 switch문은 코드의 추가/삭제 가능성이 높은 문장이다.
    • 유지보수성 ∝ 확장성
    • 유지보수성 ∝ 사용성
  • 가독성
    • 주석이 없어도 읽기 쉬운 코드
    • 변수, 함수 명칭이 명확 혹은 일반적인 (i,j,k) 변수명
    • 단일책임
    • 들여쓰기 제한
    • lint (코드 규칙) 일관성
    • 작은 크기의 함수 / 클래스 / 모듈 / 코드파일
  • 안정성
    • 테스트 코드 작성
    • 테스트 가능한 코드
    • 오류 처리
      • null 반환 금지 (객체에 null 사용 금지)
        • null을 처리하는 코드가 필요하게 된다.
      • 오류 코드(플래그) 보다 에외 사용하기
      • 오류처리코드와 어플리케이션코드 분리하기
  • 성능
    • 알고리즘 최적화
    • 네트워크 최적화
      • CDN 활용
      • 캐싱 활용
        • Expires
        • cache-control
        • localStorage
      • HTTP 요청 줄이기
        • 이미지맵 사용
        • 코드 합치기
      • gzip, minify
    • 설계 최적화
comments powered by Disqus