๐ ์๋ฐ ์ฝ๋ Conventions ๐
์ข์ ๊ฐ๋ฐ์๋ก ํ ๊ฑธ์
์ฐธ๊ณ
https://www.oracle.com/java/technologies/javase/codeconventions-contents.html
https://naver.github.io/hackday-conventions-java/
๋ฅผ ์ฐธ๊ณ ํ๊ณ ํ์ตํ์์ต๋๋ค!
๐ฅ 1. ๊ฐ์ ๐ฅ
Java Code Conventions ์ด ํ์ํ ์ด์ ?
์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ๋น์ฉ ์ค 80% ๊ฐ ์ ์ง ๋ณด์์ ์ฐ์ฌ์ง๋๋ฐ, ์ง์ ๊ฐ๋ฐํ ๊ฐ๋ฐ์๊ฐ ์ ์ง๋ณด์ ๊น์ง ๋ด๋นํ๋ ๊ฒฝ์ฐ๋ ๊ทนํ ๋๋ฌผ๋ค.
์ฝ๋ฉ ๊ท์น์ ์งํค๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์์ค๋ฅผ ์ฒ์ ๋ณด์์ ๋, ๋ ๋น ๋ฅธ ์๊ฐ์์ ์ดํดํ ์ ์๋๋ก ํ๊ณ , ๋ค๋ฅธ ์ฌ๋๋ค์ด ์์ฑํ ์์ค์๋ ์ ์ด์ธ๋ ค์ง๋ค.
๐ฅ 2. ํ์ผ ์ด๋ฆ ๐ฅ
.java : ์๋ฐ ์์ค
.class : ์๋ฐ ๋ฐ์ดํธ ์ฝ๋
๐ฅ 3. ํ์ผ ๊ตฌ์กฐ ๐ฅ
- 2000 ๋ผ์ธ ๋๋ ํ์ผ ๋ง๋ค์ง ๋ง๊ธฐ!
- ๋น ์ค์ด๋ ๋ค๋ฅธ ๊ตฌ์ญ์์ ๋ํ๋ด๋ ์ฃผ์์ผ๋ก ๋๋์ด์ ธ ์ฌ๋ฌ ๊ตฌ์ญ์ผ๋ก ๊ตฌ์ฑ๋์ด ์์!
๐ก ์๋ฐ ์์ค ํ์ผ
์์ ์ฃผ์, Package ๋ฌธ๊ณผ Import ๋ฌธ
- ํจํค์ง ๋ช
์์๋ค
์์ ์ฃผ์
์ ์์ฑํ๋ค.
- ํจํค์ง ๋ช
์ ์ฒซ๋ฒ์งธ ๋ ๋ฒจ์ ๋๋ฉ์ธ ์ด๋ฆ๋ค (com, edu, gov, mil, net, org) ์ค ํ๋์ด๊ฑฐ๋, ์์ด ๋ ๋ฌธ์๋ก ํํ๋๋ ๋๋ผ ๊ตฌ๋ณ ์ฝ๋ ์ค ํ๋์ฌ์ผ ํ๋ค.
/*
* ํด๋์ค ์ด๋ฆ
*
* ๋ฒ์ ์ ๋ณด
*
* ๋ ์ง
*
* ์ ์๊ถ ์ ๋ณด
*/
package edu.javaConventions;
import java.util.*;
Class์ Interface ์ ์ธ
/*
* 1) ์ธํฐํ์ด์ค, ํด๋์ค ๋ฌธ์ํ ์ฃผ์
* @version 2021๋
4์ 18์ผ
* @author ๋ณด๋ผ๋น
*
*/
public class CodeConvention {
/* 3) ์ธํฐํ์ด์ค, ํด๋์ค ๊ตฌํ ์ฃผ์ * /
public static int var1;
}
์์ ์ฃผ์
์ ์์ฑํ๋ค.
/*
* ํด๋์ค ์ด๋ฆ
*
* ๋ฒ์ ์ ๋ณด
*
* ๋ ์ง
*
* ์ ์๊ถ ์ ๋ณด
*/
package edu.javaConventions;
import java.util.*;
/*
* 1) ์ธํฐํ์ด์ค, ํด๋์ค ๋ฌธ์ํ ์ฃผ์
* @version 2021๋
4์ 18์ผ
* @author ๋ณด๋ผ๋น
*
*/
public class CodeConvention {
/* 3) ์ธํฐํ์ด์ค, ํด๋์ค ๊ตฌํ ์ฃผ์ * /
public static int var1;
}
์์ | ๊ตฌ์ฑ์์ | ์ค๋ช |
---|---|---|
1 | ์ธํฐํ์ด์ค, ํด๋์ค ๋ฌธ์ํ ์ฃผ์ | ์์ฑํ ๋ ์ง. ์์ ํ ์ฌ๋, ๋ฒ์ ๊ฐ์ ํด๋์ค์ ๋ํ ์ ๋ณด๋ฅผ ๊ธฐ์ ํ๋ค. |
2 | ์ธํฐํ์ด์ค, ํด๋์ค ๋ฌธ | ํด๋์ค ํน์ ์ธํฐํ์ด์ค์ ์์์ด ๋์จ๋ค. |
3 | ์ธํฐํ์ด์ค/ ํด๋์ค ๊ตฌํ ์ฃผ์ | ๋ฌธ์ํ์ ์ ํฉํ์ง ์์ง๋ง ํ์ํ ํ๋์ ํด๋์ค, ์ธํฐํ์ด์ค์ ๋ํ ํด๋น ์ ๋ณด๋ฅผ ๊ธฐ์ ํ๋ค. |
4 | static ๋ณ์ | public -> protected -> none(ํจํค์ง ์ ๊ทผ ์ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ) -> private ์์ผ๋ก ๊ธฐ์ ํ๋ค. |
5 | ์ผ๋ฐ ๋ณ์ | ์์ฑํ๋ ์์๋ ํด๋์ค ๋ณ์์ ๋์ผ |
6 | ์์ฑ์ | |
7 | ๋ฉ์๋ | ๊ธฐ๋ฅ์ฑ์ ์ํด์ ๋๋ ์ง, public ๋ฉ์๋ ์ฌ์ด์ private ๊ฐ ์์ด๋ ๋จ |
๐ฅ 4. ๋ค์ฌ์ฐ๊ธฐ ๐ฅ
- 4๊ฐ์ space๋ฅผ ๋ค์ฌ์ฐ๊ธฐ ๋จ์๋ก ์ฌ์ฉ
- ํญ์ 8๊ฐ์ ๋น์นธ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
- ํ์ค์ 80์๊ฐ ๋๋ ๊ฒ์ ํผํ์! ( ๋ฌธ์ํ ์ฃผ์ ๊ฐ์ ๊ฒฝ์ฐ 70์! )
๐ก ์ค ๋๋๊ธฐ
๊ท์น
- ์ฝค๋ง ํ์ 2์ค๋ก ๋๋๋ค.
- ์ฐ์ฐ์ ์์์ ๋์ค๋ก ๋๋๋ค.
- ๋ ๋ฒจ์ด ๋ฎ์ ์์น ๋ณด๋ค๋ ๋ ๋ฒจ์ด ๋์ ์์น์ ๋ฐ๋ผ ๋ ์ค๋ก ๋๋๋ค.
- ์ ์ค๊ณผ ๊ฐ์ ๋ ๋ฒจ์ ์์ด ์์๋๋ ์๋ก์ด ์ค์ ์์ค๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ผ์น์ํจ๋ค.
๐ ์์ 1 : ์ํ์ ํํ์์ ๋ ๋ฒจ์์น์ ์ ์ฉํ ๊ฒ
stat.setErrRate((Math.round((stat.getErrCnt()
/ (double) (stat.getTotalTrnCnt())) * 100000)) / 1000.0);
๐ ์์ 2 : ์ผ๋ฐ์ ์ธ ๋ค์ด์ฐ๊ธฐ๋ ๋น์นธ 8๊ฐ๋ฅผ ํ์ฉํ์
vo.stream()
.forEach(data -> { ... })
๐ ์์ 3 : 3ํญ ์ฐ์ฐ์์์ ๊ฐ๋ฅํ 3 ๊ฐ์ง ๋ฐฉ๋ฒ
a = (์ฐ์ฐ์) ? b : c;
a = (์ฐ์ฐ์) ? b
: c;
a = (์ฐ์ฐ์)
? b
: c;
๐ฅ 5. ์ฃผ์ ๐ฅ
- ์๋ฐ์์ ์ฃผ์์ 2๊ฐ์ง!
1) ๊ตฌํ ์ฃผ์ : ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํด ์ถ๊ฐ์ ์ธ ์ค๋ช
์ด ํ์ํ ๋
/* .. */
//
-
๊ตฌํ ์ฃผ์์ ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํ ์ถ๊ฐ์ ์ธ ์ค๋ช
์ด ํ์ํ ๋ ์ฌ์ฉ
-
ํจํค์ง ๊ตฌ์กฐ๊ฐ์ ์ ์ฒด์ ์ธ ์ฝ๋ ํ๋ฆ์ ๋ํ ๋ด์ฉ์๋ ์ฌ์ฉํ์ง ์๋๋ค.
2) ๋ฌธ์ํ ์ฃผ์ :
/** .. */
๐ก ๊ตฌํ ์ฃผ์ ์ข
๋ฅ
1) ๊ตฌํ ์ฃผ์ : ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํด ์ถ๊ฐ์ ์ธ ์ค๋ช ์ด ํ์ํ ๋
/* .. */
//
๊ตฌํ ์ฃผ์์ ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ด ํ์ํ ๋ ์ฌ์ฉ
ํจํค์ง ๊ตฌ์กฐ๊ฐ์ ์ ์ฒด์ ์ธ ์ฝ๋ ํ๋ฆ์ ๋ํ ๋ด์ฉ์๋ ์ฌ์ฉํ์ง ์๋๋ค.
2) ๋ฌธ์ํ ์ฃผ์ :
/** .. */
๐ 1) ๋ธ๋ก ์ฃผ์ : ์ํ์ ํํ์์ ๋ ๋ฒจ์์น์ ์ ์ฉํ ๊ฒ
/*
*
*/
/*-
* ๋ค์ฌ์ฐ๊ธฐ ๊ท์น์ ๋ฌด์ํด๋ ๋๋ ํน๋ณํ ์ฃผ์
*/
๐ 2) ํ ์ค ์ฃผ์ : ํ ์ค ์ฃผ์์ ๋น์ค๋ก ์์ํด์ผ ํ๋ค. ๊ธธ์ด์ง๋ฉด ๋ธ๋ก ์ฃผ์์ผ๋ก ๋ณ๊ฒฝํ์
if (a == b) {
/* ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์คํ */
}
๐ 3) ๊ผฌ๋ฆฌ ์ฃผ์ : ์์ฃผ ์งง์ ์ฃผ์์ด ํ์ํ ๊ฒฝ์ฐ ์ฌ์ฉ, ์ค์ ์ฝ๋๋ ๋ฉ๋ฆฌ ๋จ์ดํธ๋ ค์ผ ํ๋ค.
if (a == b) {
sum = a + b; /* Explain why here. */
}
๐ 4) ์ค์ ๋ ์ฃผ์ : ํ ์ค ์ฉ ์ ์ฉ
if (foo > 1) {
// Do a double-flip.
...
}
else {
return false; // Explain why here.
}
//if (bar > 1) {
//
// // Do a triple-flip.
// ...
//}
//else {
// return false;
//}
๐ฅ 6. ์ ์ธ ๐ฅ
- ํ ์ค์ ํ๋์ฉ ์ ์ธํ๊ธฐ! ( int size, level ) ๋ฑ
- ๋ค๋ฅธ ํ์
๋ผ๋ฆฌ ๊ฐ์ด ์ ์ธํ์ง ๋ง๊ธฐ! int size, sizeArr [] ; ๋ฑ
int level; // indentation level
int size; // size of table
Object currentEntry; // currently selected table entry
๐ก ์ด๊ธฐํ
- ์ง์ญ ๋ณ์์ ์ด๊ธฐํ๋ ์ ์ธํ ๋!
- ์ด๊ธฐํ ๊ฐ์ด ๋ค๋ฅธ ์์
์ ์ํด ๊ฒฐ์ ๋๋ฉด ๋์ค์ ์ ์ธ;
๐ก ์์น ๋ฐฐ์น
- ์ง์ญ ๋ณ์์ ์ด๊ธฐํ๋ ์ ์ธํ ๋!
- ์ด๊ธฐํ ๊ฐ์ด ๋ค๋ฅธ ์์
์ ์ํด ๊ฒฐ์ ๋๋ฉด ๋์ค์ ์ ์ธ;
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ ์๋ฐ ์ฝ๋ Conventions ๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค
https://velog.io/@borab/์๋ฐ-์ฝ๋-Conventions
์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์
๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
int level; // indentation level
int size; // size of table
Object currentEntry; // currently selected table entry
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ(๐ ์๋ฐ ์ฝ๋ Conventions ๐), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@borab/์๋ฐ-์ฝ๋-Conventions์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ ์ธ ๋ฐ๊ฒฌ์ ์ ๋ (Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค