개인적인 코딩 컨벤션

개요

나름 자신에 대한 코딩 컨벤션, 네이밍 정의 룰을 정리하면서 자신을 돌이켜보는 시간을 가져봅니다.

개발 규칙

스타일

ES6 코드 스타일을 지향하고, 될 수 있으면 타입 스크립트를 사용한다.

네이밍 컨벤션 ( naming convention )

css

css 선택자는 ‘케밥 표기법‘으로 작성한다.

class="btn-default" , id="first-input"

JS

  1. 상수

    불변(immutable) 성질의 객체인 상수는 무조건 대문자로 작성하고, 띄어쓰기의 경우 언더스코어(underscore)를 작성하는 ‘스네이크’ 표기법을 응용한다.

    (단 const의 경우 이미 선언에서 불변임을 알 수 있으므로, 상황에 따라 아래의 변수명 작성의 예를 따를 수 있다.)

    const OPTION = 'Test Option';
    var OPTION_VALUE = 1;
    const write = function(){ .. }
  1. 변수

    자바스크립트의 변수명은 ‘카멜’ 표기법을 사용한다. 단, 상황에 따라서 ‘헝가리언’ 표기법을 응용해서 사용하여도 좋다.

     var userId = ' ' ;
     let userPassword = ' ';
     var userRole = 'admin';
    
  2. 함수

    자바스크립트의 함수 및 메소드 명은 자바와 마찬가지로 ‘카멜’ 표기법을 사용한다.

    함수 선언식의 경우 함수 호이스팅(hoisting) 됨을 인지하고 사용한다.

     function doWrite(){ .. } 
    

    함수를 변수에 할당하는 경우 호이스팅(hoisting) 되지 않음을 인지하고 사용한다.

     var doWrite = function() {  .. } 
    
  3. 클래스

    자바스크립트의 클래스와 동등한 성질의 함수명은 자바 Class와 마찬가지로 ‘파스칼’ 표기법을 사용한다.

     function Person(){ .. } 
     export class Person{ .. }
    
  4. 기타

    상황에 따라 헝가리안 로 네이밍 컨벤션을 사용할 수 있다.

JAVA

  1. 변수

    카멜 표기법을 사용, 상황에 따라서 헝가리안을 사용할 수 있다.

    
     String userName = "jhun";
     UserGender userGender = MAN;
     Intger userOld = 14;
    
    
  2. 상수

    대문자 표기법만 허용

     int SERVER_PORT = 22;
     String SERVER_NAME = "nas";
    
  3. 클래스(& 인터페이스, & 추상클래스)

    카멜 표기법을 따르되, 첫글자는 무조건 대문자로 작성

     public class UserInfo{...}
    
  4. 메소드

    카멜 표기법을 따른다.

     public String getUserName(){...}
    

버전 릴리즈

  1. maven의 pom.xml 에 version 태그에 버전 명세를 기술

     <groupId>com.glqdlt</groupId>
     <artifactId>some-artifact</artifactId>
     <version>1.2.3</version>
     <packaging>jar</packaging>
     <url>http://...some.git</url>
    
  2. 커밋 단위는 pom.xml 만 커밋하며, 커밋 메세지는 ${version} 만 서술한다.

    git commit ${version}

    예: git commit v1.2.3

  3. git tag를 작성한다.

    git tag ${version}

    예: git tag v1.2.3

  4. 최종 push를 한다. 기본적으로 push 명령에 tag는 동작하질 않음으로, 커밋 push 후에 tag push를 추가로 해주어야한다.

    git push –tags ${remote_name}

    예 : git push –tags origin

서드파티의 사용

패키지 관리

NPM 으로 패키지를 관리 한다. Yarn을 사용할 수 도있지만, 아직까지는 NPM에 비해 성능상의 이점을 제외한 부족한 부분이 있으므로 추후 고려한다. 모듈 번들링 도구로는 Webpack을 사용하며, 정적 분석을 위한 lint 의 사용은 추천하지만 강제는 아니다. task 자동화로 gulp 를 사용하며, 컴파일 단계로 typescript로 트랜스파일하고, 상황에 따라 babel을 사용한다.

이 외에 angular-cli 나 vue-cli 처럼 프레임워크에서 제공해주는 개발 킷이 있다면 전적으로 사용하고, 해당 플랫폼의 컨벤션을 따른다.

테스트