์ธํ ๋ฆฌ์ ์ด ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ (Feat. Code Style)
EditorConfig ์์ K&R ์คํ์ผ ๊ฐ์ ํ๊ธฐ
๊ฐ๋ฐ์ ์ปค๋ฎค๋ํฐ์ ๊ธ๋ค์ ์ฐธ๊ณ ํด๋ณด๋ ์๋ฐ ์ธ์ด์์์ ๊ธฐ๋ณธ K&R ์ฝ๋ ์คํ์ผ์ด ์๋ BSD ์คํ์ผ๋ก ๋ฐ๊พธ์ด์ ๊ฐ๋ฐํ๋ ์ฌ๋๋ค์ด ์๋๋ณด๋ค. ํ๋ก์ ํธ์์ EditorConfig๋ฅผ ์ฌ์ฉํ๊ณ ์ธํ ๋ฆฌ์ ์ด์์ EditorConfig ์ ์ํด IDE ์ฝ๋ ์คํ์ผ ์ค์ ์ ์ค๋ฒ๋ผ์ด๋ํ ์ ์๋๋ก ํ์ฑํ ํ๋ค๋ฉด ์๋์ ๊ฐ์ด ๊ฐ์ ํ ์ ์๋ค.
[*.java]
ij_java_block_brace_style = end_of_line
ij_java_class_brace_style = end_of_line
ij_java_method_brace_style = end_of_line
ij_java_line_comment_add_space = true
ij_java_line_comment_add_space_on_reformat = true
ij_java_line_comment_at_first_column = false
์ด์ธ์๋ ์ ๋ง์ ๊ท์น์ ์ค์ ํ ์ ์๊ฒ ์ ๊ณตํ๋ฏ๋ก ํ๋ก์ ํธ์์ ๊ฐ์ ํด์ผํ ํ์์ฑ์ด ์๋ ๊ท์น์ด ๋ฌด์์ธ์ง ์ฒดํฌํด๋ณด๋๊ฒ ํ์ํฉ๋๋ค.
์ฃผ์์ ๋ํ ๋ค์ฌ์ฐ๊ธฐ ๊ธฐ๋ณธ ์ต์ ๋นํ์ฑํ
์ ์์์์ ij_java_line_comment_at_first_column
์ ๋ผ์ธ ๋จ์ ์ฃผ์์ ๋ํด ๋ค์ฌ์ฐ๊ธฐ ๊ธฐ๋ณธ ์ต์
์ผ๋ก ์ ํ๋์ด์๋ ์ฒซ๋ฒ์งธ ์ด์ ์ฃผ์์ ์ถ๊ฐํ๋ ๊ฒ์ ๋นํ์ฑํํ๋๋ก ํ๋ ์ต์
์ค์ ์ด๋ค. ์ฒดํฌ์คํ์ผ์์ ๋ค์ฌ์ฐ๊ธฐ ๊ท์น์ด ์์ด๋ ์ธํ
๋ฆฌ์ ์ด ๊ธฐ๋ณธ๊ฐ์ด ์ฒซ๋ฒ์งธ ์ด์ ์ถ๊ฐํ๋ ๊ฒ์ด๊ธฐ์ ๋ค์ฌ์ฐ๊ธฐ ๊ท์น์ ์ฌ๋ฐ๋ฅด์ง ์์ ํํ๋ก ๋ง๋ค์ด์ง ์ ์๋ค. ๋ฐ๋ผ์, ์์ ๊ฐ์ด ๋ช
์์ ์ผ๋ก ๋นํ์ฑํํ๋ค๋ฉด ์ธํ
๋ฆฌ์ ์ด IDE ์๋ฐ ์ฝ๋ ์คํ์ผ ์ค์ ์ค Code Generation โ Comment Code โ Line comment at first column
์ด ์ ํ๋์ด์์ด๋ ๋ผ์ธ ์ค ์ฝ๋๊ฐ ์์๋๋ ๊ณณ๋ถํฐ ์ฃผ์์ด ๋๋ ๊ฑธ ํ์ธํ ์ ์๋ค.
Line comment at first column ์ ๋นํ์ฑํํ๋ ๊ฑด ๊ฝค๋ ๋ง์ ์กฐ์ง์์ ์ ์ฉํ ๊ฒ ๊ฐ์ต๋๋ค.
๊ทธ๋๋ ๋ฌด์๋ฏธํ ์ฃผ์์ธ์ง์ ๋ํ ์ ๋ฌด๋ ๋ฆฌ๋ทฐ ๋จ๊ณ์์ ๊ฒ์ถํ๋๊ฒ ์ข๊ฒ ์ฃ ?
Checkstyle ๋ฐ ํ๋ก์ ํธ ์ฝ๋ ์คํ์ผ ์ค์ ๊ณต์ ํ๊ธฐ
ํ๋ก์ ํธ ํด๋ ๋ด์ Checkstyle์ ๋ํ ๊ตฌ์ฑ ํ์ผ์ด ํฌํจ๋์ด์๋๋ผ๋ ์ธํ ๋ฆฌ์ ์ด์์ Checkstyle ํ๋ฌ๊ทธ์ธ์์ ์ฌ์ฉ๋๋๋ก ์๋์ผ๋ก ์ค์ ํ๊ณ ์ฝ๋ ์คํ์ผ์ ์ฒดํฌ์คํ์ผ ์ค์ ์ ์คํค๋ง๋ก ์ํฌํธํ๋ ๊ณผ์ ์ ๊ฐ๋ฐ์๋ง๋ค ์ํํด์ผํ๋ ์์ ์ด๋ค. ๋๋ถ๋ถ ์๋ฐ ํ๋ก์ ํธ๋ฅผ ๋ณด๋ฉด .idea ์ ๊ฐ์ ์ธํ ๋ฆฌ์ ์ด์์ ์ฐธ์กฐํ๋ ํด๋๋ฅผ .gitignore๋ก ์ถ์ ๋์ง ์๋๋ก ํด๋์์ ๊ฐ๋ฅ์ฑ์ด ๋๋ค. ํ๋ก์ ํธ์์ ์ฒดํฌ์คํ์ผ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด ์๋์ 3๊ฐ์ง ํ์ผ์ ๋ํด์๋ ํ๋ก์ ํธ์์ ๊ด๋ฆฌ๋๋๋ก ์ถ๊ฐํ๋ ๊ฒ ์ข์ ์๋ ์๋ค.
์๋์ ๊ฐ์ด ์ด๋ฏธ ๋ฌด์๋๋ ๊ท์น์ ๋ํด์๋ .gitignore ๊ท์น์์ ์ ์ธ๋๋ ํจํด์ ๋ ์ ์๋ค.
### IntelliJ IDEA ###
.idea
!.idea/codeStyles/codeStyleConfig.xml
!.idea/codeStyles/Project.xml
!.idea/checkstyle-idea.xml
์ด๋ฏธ .idea ํด๋๊ฐ ์ ์ธ๋์ด์๋ค๋ฉด ์๋์ผ๋ก 3๊ฐ์ ํ์ผ์ ์ค๋ฅธ์ชฝ ๋ง์ฐ์ค๋ฅผ ๋๋ฌ Git โ Add ๊ธฐ๋ฅ์ผ๋ก ์ถ์ ์ด๋๋๋ก ์ถ๊ฐํด์ผํฉ๋๋ค.
์ ๊ท ํ๋ก์ ํธ๋ฅผ ์์ํ ๋ ํ๋ก์ ํธ ๋จ์์ ์ค์ ์ ๊ณต์ ํ๋ ๊ฑธ ๊ณ ๋ คํ์๋๊ฒ ์ข์๋ณด์ ๋๋ค.
๋์ผ๋ก, ์ด๋ ๊ฒ ํ๋๋ผ๋ ๊ฐ๋ฐ ํ๊ฒฝ ์ค์ ์ ๋ํ ๊ฐ์ด๋ ๋ฌธ์๋ฅผ ๋จ๊ธฐ๊ณ ์ ๋ง๋ก ์ค์ ์ด ๋์ผํ์ง ์ฒดํฌํด์ฃผ๋ ๊ณผ์ ์ ํ์ํ๋ค. ํ๋ก์ ํธ ์ฝ๋๋ฅผ ๋ฐ์๋ ๊ฐ๋ฐ์๋ง๋ค ์ฌ์ฉํ๋ IDE ์ค์ ์ด ์์ ํ ๋์ผํ๊ฒ ๋ง์ถฐ์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋ฉ์ธ ๋ธ๋์น์ ์ปค๋ฐํ๋ ์ ๋ฌด ๋ฐฉ์์ ์ง์ํ๊ณ ์์ ๋ธ๋์น์ PR์ ํตํด ๊ฐ์ ๋ก ๊ฒ์ฆํ๋ ํ๋ก์ธ์ค๊ฐ ํ์ํ ์ ๋ฐ์ ์๋ค.
์ธํ ๋ฆฌ์ ์ด์ ์ดํด๋ฆฝ์ค๋ฅผ ํผ์ฉํ๋ ์กฐ์ง์ด๋ผ๋ฉด GGโฆ ๐
Checkstyle๋ก ์ผ๊ด๋์ง ์์ ์ ์๋ ์ฝ๋ ์คํ์ผ
์์ ๋ค๋ฃฌ๊ฒ ์ฒ๋ผ Checkstyle์ ์ฌ์ฉํ๋๋ผ๋ ์ผ๊ด๋์ง ์์ ์ ์๋ ์ฝ๋ ์คํ์ผ์ด ์์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, ํจ์ ํ๋ผ๋ฏธํฐ๊ฐ ๋ง์์ง๋ ๊ฒฝ์ฐ ์ด๋ค ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ ๊ฒ์ด๋์ ๋ฐ๋ผ ๊ฐ๋ฐ์๋ง๋ค ๊ด์ ์ด ๋ค๋ฅผ ์ ์์ง๋ง ์ธํ ๋ฆฌ์ ์ด ๊ธฐ๋ณธ ํฌ๋งทํฐ์ ์ฒดํฌ์คํ์ผ ๊ท์น์ ๋ฐ๋ผ ์ผ๊ด๋๊ฒ ํฌ๋งทํ ๋์ง ์์ ์ ์๋ค. ์๋์ ๊ฐ์ ์ฝ๋ ์คํ์ผ ์ค์์ ๋ง์ง๋ง D ์คํ์ผ์ Method declaration parameters ์ ๊ฐ์ ๊ท์น์ ์๋์ผ๋ก ์ค์ ํ๊ฑฐ๋ ์๋์ ๊ฐ์ด EditorConfig ๊ท์น์ผ๋ก ๊ฐ์ ํ์ฌ ์ผ๊ด๋๊ฒ ๋ง๋ค ์ ์๋ค.
// A ์คํ์ผ
@GetMapping("/")
public String index(HttpServletRequest request, HttpServletResponse response, HttpHeaders headers, Principal principal) {
return "ok";
}
// B ์คํ์ผ
@GetMapping("/")
public String index(HttpServletRequest request, HttpServletResponse response,
HttpHeaders headers, Principal principal) {
return "ok";
}
// C ์คํ์ผ
@GetMapping("/")
public String index(HttpServletRequest request,
HttpServletResponse response,
HttpHeaders headers,
Principal principal) {
return "ok";
}
// D ์คํ์ผ
@GetMapping("/")
public String index(
HttpServletRequest request,
HttpServletResponse response,
HttpHeaders headers,
Principal principal
) {
return "ok";
}
[*.java]
ij_java_call_parameters_new_line_after_left_paren = true
ij_java_call_parameters_right_paren_on_new_line = true
ij_java_method_parameters_new_line_after_left_paren = true
ij_java_method_parameters_right_paren_on_new_line = true
๊ฐ์ธ์ ์ผ๋ก๋ A ์คํ์ผ๋ก ๊ฐ๋ฐํ๋ค๊ฐ ํ๋ผ๋ฏธํฐ๊ฐ ๋ง์์ง์๋ก B ์คํ์ผ ๊ทธ๋ฆฌ๊ณ C ์คํ์ผ๋ก ๋ณ๊ฒฝํ๋ ๊ฒ ๊ฐ๊ณ D ์คํ์ผ์ ๋ง์์ ๋ค์ง ์๋๋ฐ ์๋์ผ๋ก ๊ฒ์ถํ ์๊ฐ ์๋ ์ผ์ด์ค๋ผ PR ๋ฆฌ๋ทฐ ๋จ๊ณ์์ ์ฒดํฌ๊ฐ ํ์ํด๋ณด์ธ๋ค.