코드 스타일
모든 개발자들이 진행하는 프로젝트들은 각자의 코드 스타일이 존재한다.
변수명은 camelCase 로 해야한다던지... PascalCase 로 해야한다던지...
들여쓰기 간격은 4회여야한다. 2회여야한다 등등 여러 사람이 협업하는 프로젝트에서
코드의 스타일 규칙은 중요하다.
이런 규칙을 만드는 사람이 일일이 정하긴 힘드니 주로 사용하는 것이 바로
'Google Style Guide' 이다. (https://github.com/google/styleguide)
구글이 정해놓은 스타일 가이드라인대로 개발을 하면 여러 명이 하나의 프로젝트를 개발하더라도 일관성있고 가시성이 좋은 코드의 모습이 나올 수 있을 거다. 내로라하는 똑똑한 분들이 정해놓은 규칙이니까.
적용법
그럼 이런 코드 스타일의 규약들을 모두 외울 필요없이 IDE의 도움을 받아 적용할 수 있는 방법은 없을까.
intelliJ 에서는 Code Style을 xml 형식으로 저장해놓으면 이 스타일대로 코드가 작성될 수 있게 도와준다.
1. 코드 스타일이 정의된 xml 파일을 다운 받는다.
https://github.com/google/styleguide/blob/gh-pages/intellij-java-google-style.xml
2. intelliJ 를 열고 Preference를 연다. (맥 기준 단축키: cmd + ,)
3. search 에 code style 을 검색한다.
4. Scheme 옆 톱니바퀴 버튼에서 Import Scheme -> IntelliJ IDEA code style XML 선택
5. 다운 받은 XML 파일을 선택한다. 그러면 Scheme 에 Google Style 이 추가되었을 것이다.
6. 해당 Scheme 을 선택하고 우측 하단 Apply, OK 를 누르면 내 프로젝트의 스타일이 구글 스타일 대로 변경된다.
스타일을 비교해보자
default (intellij)
public class Foo {
public int[] X = new int[]{1, 3, 5, 7, 9, 11};
public void foo(boolean a, int x, int y, int z) {
label1:
do {
try {
if (x > 0) {
int someVariable = a ? x : y;
int anotherVariable = a ? x : y;
} else if (x < 0) {
int someVariable = (y + z);
someVariable = x = x + y;
} else {
label2:
for (int i = 0; i < 5; i++) {
doSomething(i);
}
}
switch (a) {
case 0:
doCase0();
break;
default:
doDefault();
}
} catch (Exception e) {
processException(e.getMessage(), x + y, z, a);
} finally {
processFinally();
}
}
while (true);
if (2 < 3) {
return;
}
if (3 < 4) {
return;
}
do {
x++;
}
while (x < 10000);
while (x < 50000) {
x++;
}
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
private class InnerClass implements I1, I2 {
public void bar() throws E1, E2 {
}
}
}
google style
public class Foo {
public int[] X = new int[]{1, 3, 5, 7, 9, 11};
public void foo(boolean a, int x, int y, int z) {
label1:
do {
try {
if (x > 0) {
int someVariable = a ? x : y;
int anotherVariable = a ? x : y;
} else if (x < 0) {
int someVariable = (y + z);
someVariable = x = x + y;
} else {
label2:
for (int i = 0; i < 5; i++) {
doSomething(i);
}
}
switch (a) {
case 0:
doCase0();
break;
default:
doDefault();
}
} catch (Exception e) {
processException(e.getMessage(), x + y, z, a);
} finally {
processFinally();
}
}
while (true);
if (2 < 3) {
return;
}
if (3 < 4) {
return;
}
do {
x++;
}
while (x < 10000);
while (x < 50000) {
x++;
}
for (int i = 0; i < 5; i++) {
System.out.println(i);
}
}
private class InnerClass implements I1, I2 {
public void bar() throws E1, E2 {
}
}
}
가장 큰 차이는 클래스 시작 줄과 변수 사이 개행이 존재하는지 여부와 tap size 크기인 것으로 보인다.
tap 의 간격이 default = 4, google style 의 경우 2 이기 때문에 코드의 깊이가 깊어질수록 구글 기준이 더보기 편한걸 알 수 있다.
이렇게 간단히 구글에서 제공하는 google style guide 를 XML 형식으로 intelliJ 에 적용해보았다.
'프로그래밍 > backend&devOps' 카테고리의 다른 글
[HTTP] RESTful API (0) | 2022.04.16 |
---|---|
[Spring] 어노테이션(annotation) 기반 bean 설정법 (0) | 2021.06.21 |
[OOP] 객체지향 설계 5원칙 : SOLID 디자인 원칙 (0) | 2021.05.25 |
[Spring] J2EE란?, EJB란?, Spring framework 의 탄생 배경 (0) | 2021.05.22 |
[AWS] amazon lambda + API Gateway 로 SNS 메시지 보내기 - 2 (0) | 2021.04.12 |