๊ฐ๋ฐ์์๊ฒ '์ฝ๋ ์คํ์ผ' ์ ์ค์ํ ๊น?
๊ฐ๋ฐ์์๊ฒ '์ฝ๋ ์คํ์ผ' ์ ์ค์ํ ๊น? ๊ด๋ จ
์ฐ๋ฆฌ๊ฐ ์ด๋ค ์ฌ๋์ ๋ง๋ฌ์ ๋, ์ฒซ์ธ์์ด ๊ทธ ์ฌ๋์ ์ด๋ฏธ์ง๋ฅผ ๊ฒฐ์ ํ ๋๊ฐ ๋ง์ต๋๋ค. ์ฝ๋ ๋ํ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ํ๋ก๊ทธ๋๋ฐ์์ '์ฝ๋ ์คํ์ผ'์ ๊ทธ ์ฝ๋์ ์ฒซ์ธ์์ด ๋ฉ๋๋ค. ํต์ผ๋ ์คํ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ ๊น๋ํ๊ณ ์ ๋ฌธ์ ์ด๋ผ๋ ์ด๋ฏธ์ง๋ฅผ ์ฃผ๊ณ , ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์๊ฒ ์ข์ ์ธ์์ ๋จ๊ธธ ์ ์์ฃ . ๊ทธ๋ฌ๋ ํ์ ์์ ์ผํ๋ค ๋ณด๋ฉด ์ฝ๋ ์คํ์ผ๋ณด๋ค ์ฝ๋ ๋ด์ฉ์ ์ง์คํ๊ฒ ๋ ๋๊ฐ ๋ ๋ง์๋ฐ์, ์์ฐ์ค๋ฝ๊ฒ ์ฝ๋ ์คํ์ผ์๋ ์ํํด์ง๊ธฐ ๋ง๋ จ์ ๋๋ค.
๊ทธ๋ฌ๋ ์ข์ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ์ฝ๋ ์คํ์ผ๋ ์ ๊ฒฝ ์จ์ผ ํฉ๋๋ค. ํต์ผ๋ ์คํ์ผ๋ก ์์ฑ๋ ์ฝ๋๋ ๊ทธ๋ ์ง ์์ ์ฝ๋๋ณด๋ค ๊ฐ๋ ์ฑ์ด ๋์ต๋๋ค. ์ด๋ฆ, ์ธ๋ดํธ ๋ฑ ๋๋ต์ ์ธ ๋ถ๋ถ๋ง ๋ณด๋๋ผ๋, ํด๋น ๋ถ๋ถ์ด ์ด๋ค ์ญํ ์ ํ๋์ง ํ๋จํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ผ๊ด๋ ์ฝ๋ ์คํ์ผ์ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ผ๋ก ํ์ฌ๊ธ, ์ฝ๋์ ์๋๋ฅผ ๋น ๋ฅด๊ฒ ํ์ ํ๊ณ ์ํ๋ ์ ๋ณด๋ฅผ ์ฝ๊ฒ ์ฐพ์ ์ ์๋๋ก ๋์์ค๋๋ค.
์ด ๊ธ์์๋ ๊ฐ๋ฐ์์๊ฒ ์ฝ๋ ์คํ์ผ์ด ์ ์ค์ํ์ง, ๊ทธ๋ฆฌ๊ณ ์ด๋ป๊ฒ ์ฝ๋ ์คํ์ผ์ ๊ณ ๋ คํ ์ ์์์ง ํจ๊ป ์ดํด๋ณด๊ฒ ์ต๋๋ค.
'์ฝ๋ ์คํ์ผ ๊ฐ์ด๋' ์ดํด๋ณด๊ธฐ
์ฌ๋์ ์ฒซ์ธ์์ ๋ง์ ์์๋ค์ ์ํด ๊ฒฐ์ ๋ฉ๋๋ค. ํค์ด, ๋ฉ์ดํฌ์ ๋ฑ ์ธ๋ชจ๋ถํฐ ์์ํด์ ๋ชฉ์๋ฆฌ, ๊ฑธ์๊ฑธ์ด ๋ฑ ์ฌ๋ฌ ์์๊ฐ ๋ณตํฉ์ ์ผ๋ก ์์ฉํฉ๋๋ค. ๊ทธ๋ ๋ค๋ฉด ์ฝ๋์ ์ฒซ์ธ์์ ๊ฒฐ์ ์ง๋ ์ฝ๋ ์คํ์ผ์ ๋์ฒด ๋ฌด์์ด๊ณ , ์ด๋ค ์์๋ค์ด ์์๊น์?
์ฝ๋ ์คํ์ผ์ ํฌํจ๋๋ ๋ด์ฉ
์ฝ๋ ์คํ์ผ์ ๋จ์ํ ํฌ๋งทํ ๋ง์ ๋ค๋ฃจ์ง ์์ต๋๋ค. ์ฃผ์, ๋ค์ด๋ฐ, ์ค์ฝํ, ์์ธ ์ฒ๋ฆฌ ๋ฑ ์ฝ๋์ ์ ๋ฐ์ ๊ฑธ์ณ, Best Practice๋ฅผ ๋ค๋ฃจ๋ ๋ด์ฉ์ด๋ผ๊ณ ํ ์ ์์ต๋๋ค. Java ์คํ์ผ ๊ฐ์ด๋์๋ ์ด๋ค ๋ด์ฉ๋ค์ด ํฌํจ๋๋์ง ํ ๋ฒ ์ดํด๋ณผ๊ฒ์.
1. ํฌ๋งทํ : ์ธ๋ดํธ
๋ง์ ์ธ์ด์์ ์ธ๋ดํธ์ ์นธ์๋ ๋ฌธ๋ฒ์ ์ํฅ์ ์ฃผ์ง ์์ต๋๋ค. ์๋ฅผ ๋ค์ด, Java๋ก ์์ฑ๋ ๋ค์์ ๋ ์ฝ๋๋ฅผ ์ดํด๋ณด๊ฒ ์ต๋๋ค.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
๋ ์ฝ๋๋ โHello Worldโ๋ฅผ ์ถ๋ ฅํ๋ ๊ฐ์ ์์ ์ ํ์ง๋ง, ์ธ๋ดํธ์ ์นธ์๊ฐ ๋ค๋ฆ ๋๋ค. ์ ์ฝ๋๋ฅผ ๋ณด๋ฉด ์ด๋ค ์ธ๋ดํธ๊ฐ ๋ ๋์ ์ธ๋ดํธ์ธ์ง ์ ์ ์์ต๋๋ค. ์ฌ์ค ์ด๋ ํ ์ชฝ์ด ๋ ๋ซ๋ค๊ณ ๋ณผ ์ ์์ต๋๋ค. ๋ ์ฝ๋ ๋ชจ๋ ์ผ๊ด์ฑ ์๊ฒ ์์ฑ๋ ์ฝ๋์ด๊ธฐ ๋๋ฌธ์ ๋๋ค. ๋ฐ๋ฉด ์ธ๋ดํธ๊ฐ ์ผ์ ํ์ง ์์ ๋ค์ ์ฝ๋๋ฅผ ์ดํด๋ณผ๊ฒ์.
public class Main {
public static void main(String[] args) {
System.out.println("Hello World");
}
}
์ ์ฝ๋์ ๊ฒฝ์ฐ 4์นธ ์ธ๋ดํธ์ 2์นธ ์ธ๋ดํธ๋ฅผ ํผ์ฉํ์ฌ ์ฌ์ฉํ๊ณ ์์ต๋๋ค. ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ํด์น ์ ์์ผ๋ฏ๋ก, ์ง์ํด์ผ ํ๋ ์คํ์ผ์ ๋๋ค.
2. ๋ค์ด๋ฐ: ์ธ๋์ค์ฝ์ด ์ฌ์ฉํ์ง ์๊ธฐ ์ฐธ๊ณ
Google Java ์คํ์ผ ๊ฐ์ด๋์๋ ์ธ๋์ค์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ๋ง๋ผ๋ ํญ๋ชฉ์ด ์์ต๋๋ค. coin_num
๊ณผ ๊ฐ์ด ๋ณ์๋ ํจ์, ํด๋์ค ๋ฑ์ ์ด๋ฆ์ ์์ฑํ ๋ ์ธ๋์ค์ฝ์ด๋ฅผ ์ฐ์ง ๋ง๋ผ๋ ๊ฒ์
๋๋ค.
์ธ๋์ค์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ์์ผ๋ฉด, ๋ณ์ ์ด๋ฆ์ coinNum
๊ณผ ๊ฐ์ด ์นด๋ฉ ์ผ์ด์ค(Camel Case), ๋ฉ์๋๋ ํด๋์ค ๋ฑ์ ์ด๋ฆ์ CoinManager
์ ๊ฐ์ ํ์ค์นผ ์ผ์ด์ค(Pascal Case)๊ฐ ๋ฉ๋๋ค.
public class CoinManager {
private int coinNum = 0;
public void getCoin() {
return coinNum;
}
public void changeCoin(int delta) {
coinNum += delta;
if (coinNum < 0) {
coinNum = 0;
}
}
}
๊ฐ์ธ์ ์ผ๋ก๋ ์๋ฐ์์ ์ธ๋ ์ค์ฝ์ด๋ฅผ ์ฌ์ฉํ์ง ์๋ ์คํ์ผ์ ๋ ์ข์ํ๋๋ฐ์. ์ด๋ ๊ฒ ์์ฑ๋ ์ฝ๋๋ ์๋ฐ์ '๋ธ๋ญ์ค๋ฌ์ด' ๋๋์ ์ค๋๋ค. ๋ง์ฝ ์๋ฐ ์ฝ๋๊ฐ ์์ ๊ฐ์ ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ ๋ฐ๋ฅด์ง ์๋๋ค๋ฉด ์๋ฐ ์ฝ๋์์ด ์ ๋๊ปด์ง์ง ์๊ณ , ์ต์ํ ๋ค์ด๋ฐ ์ปจ๋ฒค์ ์ ๋ฒ์ด๋ฌ๊ธฐ ๋๋ฌธ์ ๋ณ์์ ๋ฉ์๋, ํด๋์ค ๋ฑ์ ๊ตฌ๋ถ์ด ์๋์ ์ผ๋ก ์ด๋ ค์์ง ๊ฒ์ ๋๋ค.
๊ฐ ์ธ์ด์ ์คํ์ผ ๊ฐ์ด๋
๊ทธ๋ ๋ค๋ฉด ์คํ์ผ ์ปจ๋ฒค์ ์ ๋๊ฐ ์ ํ๋ ๊ฑธ๊น์? ์ฌ์ค ํ๋ก์ ํธ ๋ด์์ ํต์ผํ๊ณ ํ์๋ค์ด ๋ชจ๋ ๋์ํ๋ค๋ฉด, ์ด๋ค ์คํ์ผ๋ก ์ฝ๋๋ฅผ ์์ฑํด๋ ํฌ๊ฒ ์๊ด์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ ๋ ํ๋์ ํ๋ก์ ํธ๋ง ๋งก๊ฑฐ๋, ๋งค๋ฒ ๊ฐ์ ํ์๋ค๊ณผ ์ ๋ฌด๋ฅผ ์งํํ๋ค๋ ๋ณด์ฅ์ด ์๊ธฐ ๋๋ฌธ์ธ๋ฐ์.
ํ์ด ๋ฐ๋๊ฑฐ๋ ์๋ก์ด ํ์์ด ๋ค์ด์ฌ ๋, ๋ค๋ฅธ ํ์ฌ๋ก ์ด์งํ ๋๋ ํด๋น ํ๊ฒฝ์์ ํต์ผ๋ ์ฝ๋ ์คํ์ผ์ ์ ์งํด์ผ ํฉ๋๋ค. ์ด๋ ๊ฐ ํ๊ฒฝ์์์ ์ฝ๋ ์คํ์ผ์ด ๋ชจ๋ ๋ค๋ฅด๋ค๋ฉด, ์ฝ๋ ์คํ์ผ์ ๊ฐ๋ ์ฑ์ ๋์ด๋ ๋ฐ ํฐ ์ญํ ์ ํ์ง ๋ชปํ ๊ฒ์ ๋๋ค. ์ด๋ค ํ์์๋ ๋ณ์ ์ด๋ฆ์ ํด๋น๋๋ ๋ค์ด๋ฐ์ด์๋๋ฐ, ๋ค๋ฅธ ํ์ ๊ฐ๋๋ ๋ฉ์๋ ์ด๋ฆ์ ํด๋น ๋ค์ด๋ฐ์ ํตํด ์ง๊ณ ์๋ค๋ฉด, ํ์ ์ฎ๊ฒผ์ ๋ ํฐ ํผ๋์ด ์ฌ ์ ์์ต๋๋ค.
๋ฐ๋ผ์ ์ฝ๋ ์คํ์ผ์ ์ผ๋ฐ์ ์ผ๋ก ๋ง์ด ์ฌ์ฉํ๋ ๊ฐ์ด๋๊ฐ ๋ง๋ จ๋์ด ์์ต๋๋ค. ๊ทธ ๋ํ์ ์ธ ์คํ์ผ ๊ฐ์ด๋๊ฐ ๊ตฌ๊ธ์์ ๋ฐํํ '๊ตฌ๊ธ ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋'์ ๋๋ค.
- Google C++ Style Guide
- Google Java Style Guide
- Google Python Style Guide
- Google JavaScript Style Guide
- Google TypeScript Style Guide
๊ตฌ๊ธ ์ฝ๋ ์คํ์ผ ๊ฐ์ด๋๋ ์ด์ธ์๋ ๋ง์ ์ธ์ด๋ค์ ๋ค๋ฃจ๊ณ ์๋๋ฐ์. ๋๋ฆฌ ์ฌ์ฉ๋๋ ์คํ์ผ ๊ฐ์ด๋์ธ ๋งํผ, ๊ตฌ๊ธ ์คํ์ผ ๊ฐ์ด๋์ ๋ฐ๋ฅธ๋ค๋ฉด ํจ์ฌ ๋ ๊น๋ํ๊ณ ์ ๋ฌธ์ ์ธ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๊ฒ ๋ ๊ฒ์ ๋๋ค.
์ฝ๋ ์คํ์ผ์ ์ ๊ฒฝ ์จ์ผ ํ๋ ์ด์
์ฝ๋ ์คํ์ผ์ ๋ ์์ ์ ์๋ฆฌ๋ ๊ฒ, ๊ทธ๋ฆฌ๊ณ ํ๊ณผ ํ์ ํ๋ ๋ฐ์๋ ํฐ ์ํฅ์ ๋ฏธ์นฉ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ฝ๋๋ฅผ ์์ฑํ ๋ ์ฝ๋ ์คํ์ผ์ ๋์ฑ ์ ๊ฒฝ ์ฐ๋ ์ต๊ด์ ๊ธธ๋ฌ์ผ ํฉ๋๋ค. ์๋ฌด๋ฆฌ ์ด์ฌํ ์์ฑํ ์ฝ๋๋ผ๋, ์ฝ๋ ์คํ์ผ์ด ์ผ๊ด๋์ง ์์ผ๋ฉด ๊ทธ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ ์ข์ ์ธ์์ ๋ฐ๊ธฐ ์ด๋ ต์ต๋๋ค.
๋๋ฅผ ์๋ฆฌ๋ ์ฝ๋
์์ฆ ๋ง์ ๊ฐ๋ฐ์๋ค์ด ์์ ์ ์๋ฆฌ๊ธฐ ์ํด ํฌํธํด๋ฆฌ์ค๋ฅผ ์ค๋นํฉ๋๋ค. ์ด๋ค ๊ธฐ์ ์ ์ง์์์ ๊นํ ์ฃผ์๋ฅผ ํ์๋ก ๊ธฐ์ฌํด์ผ ํ๊ณ , ๋ธ๋ก๊ทธ ํฌ์คํธ ๋ฑ์ผ๋ก ๋ณธ์ธ์ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ธฐ๋ ํฉ๋๋ค. ์ ๋ํ ๋ค์ด๋ฒ ์ง์์ธ ๋ฑ์์ ํ๋ํ๋ฉฐ ์ฝ๋๋ฅผ ๊ณต์ ํ๊ธฐ๋ ํ๊ณ ์.
์ด์ฒ๋ผ ์ฌ๋ฌ๋ถ์ ์ฝ๋๋ฅผ ๋ณด๋ ์ฌ๋์ ๋ค์ํ ์ ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๊ทธ์ค์์๋ ์ ๋ง ์ ๊ฒฝ ์จ์ผ ํ ์ฌ๋๋ค์ ๋ค๋ฅธ ์ ๋ฌธ๊ฐ๋ค์ด๊ณ ์. ์ฝ๋ ์คํ์ผ์ ์ต์ํด์ง ์ ๋ฌธ๊ฐ๋ค์ ์ฝ๋๋ฅผ ๋ณด๊ณ ์ด๋ค ์๊ฐ์ ํ ๊น์? ์ฌ๋ฌ๋ถ์ด ์ฝ๋๋ฅผ ์์ฑํ ๋ ๊ณ ๋ฏผํ ๋ด์ฉ, ์ด๋ฅผ ํตํด์ ํด๊ฒฐํ ์ ์์๋ ๋ฌธ์ ๋ฅผ ์ ๋ฌธ๊ฐ๋ค์๊ฒ ์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด์๋ ๋ค์์ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
- ์ฝ๋ ์คํ์ผ์ด ์ ๋๋ก ์กํ ์์ง ์์ผ๋ฉด ์ฝ๋ ๋ด์ฉ์ ๋ณด๋ ค๊ณ ํ์ง ์๋๋ค.
- ์ฝ๋๋ฅผ ์ฝ์๋ค๊ณ ํด๋ ์ด๋ฏธ ์ข์ง ์์ ์ธ์์ ๋ฐ์ ํ ์ด๋ค.
์ฝ๋ ์คํ์ผ์ ๊ทธ ์ฌ๋์ ์ฝ๋๋ฅผ ๊ฐ์ฅ ๋จผ์ ํ๋จํ ์ ์๋ ์์์ ๋๋ค. ์ฝ๋ ์คํ์ผ์ ์ ์งํ์ง ์์ผ๋ฉด์ ๋ด๊ฐ ์ฝ๋๋ฅผ ์ผ๋ง๋ ์ ์งฐ๋์ง, ์ผ๋ง๋ ๊ณ ์ฌํด์ ์์ฑํ๋์ง, ์์์ฃผ๊ธธ ๋ฐ๋ผ๋ ๊ฑด ์์ฌ์ ๋๋ค. ๋๊ตฐ๊ฐ ๋ด ์ฝ๋๋ฅผ ์์์ฃผ๊ธฐ๋ฅผ ์ํ๋ค๋ฉด, ์ต์ํ ์ฝ๊ธฐ ์ฝ๊ฒ ์์ฑํด์ผ ํฉ๋๋ค.
ํ์ ๋ฅ๋ฅ ์ ์ฌ๋ฆฌ๋ ์ฝ๋
ํ ํ๋ก์ ํธ์์๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ์ฝ์ด์ผ ํ๋ ์ผ์ด ๋ง์ต๋๋ค. ์ด์ ์ ๋น์ทํ ์์ ์ ๋ค๋ฅธ ์ฌ๋์ด ์ด๋ป๊ฒ ์ํํ๋์ง ์ฐธ๊ณ ํ๋ ์ผ๋ ๋ง๊ณ , ์ด์๊ฐ ์๊ฒผ์ ๋ ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ฅผ ๋๋ฒ๊น ํด์ผ ํ๋ ์ผ๋ ์์ต๋๋ค. ์ด๋ ํ ๋ด์์ ๋ชจ๋ ๊ฐ์ ์ฝ๋ ์คํ์ผ์ ์ฌ์ฉํ๊ณ ์๋ค๋ฉด, ์ฝ๋๋ฅผ ์ฝ๊ธฐ ํจ์ฌ ์์ํด์ง๋๋ค. ์ด์ธ์๋ ์ฌ๋ฌ ์ด์ ์ด ์์ฃ .
์ฒซ ๋ฒ์งธ๋ก ์ฝ๋์ ์ ์ง๋ณด์์ฑ๊ณผ ํ์ฅ์ฑ์ด ์ข์์ง๋๋ค. ์ฝ๋ ์คํ์ผ์ด ์ผ๊ด๋์ง ์์ ํ๋ก์ ํธ๋ผ๋ฉด ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๊ฑฐ๋, ๋ฒ๊ทธ๋ฅผ ์์ ํ ๋ ์๋ก ์์ฑํ๋ ์ฝ๋์ ๊ธฐ์กด์ ์์ฑ๋ ์ฝ๋๊ฐ ์์ด๋ฉด์ ๊ทธ ์คํ์ผ๋ ๋ค์ฃฝ๋ฐ์ฃฝ์ด ๋ฉ๋๋ค. ์ ๋ โ์ข์ ์ฝ๋๊ฐ ์ข์ ์ ํ์ ๋ง๋ ๋คโ๊ณ ๋ณด๋๋ฐ์. ์๋ก์ด ์ฝ๋๋ฅผ ์์ฑํ ๋๋ง๋ค ์ ์ ๋ณต์กํด์ง๊ณ ์ฝ๊ธฐ ํ๋ค์ด์ง๋ค๋ฉด, ๊ทธ ์ฝ๋๋ ๊ฒฐ์ฝ ์ข์ ์ ํ์ ๋ง๋ค์ด๋ผ ์ ์์ ๊ฑฐ๋ผ ์๊ฐํฉ๋๋ค.
๋ ๋ฒ์งธ๋ก ํต์ผ๋ ์คํ์ผ์ ์ฌ์ฉํ๋ฉด ํ์๋ค ๊ฐ ์ง์์ ๊ณต์ ๊ฐ ์ฉ์ด ํด์ง๋ฉฐ, ์ด๋ ๊ณง ์ฑ๊ณต์ ์ธ ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ ์ ์ฐฉ ์ ์ํ ๋ฐํ์ด ๋ ์ ์์ต๋๋ค. ๋ง์ ๊ธฐ์ ์ด ์ฝ๋ ๋ฆฌ๋ทฐ์ ์ค์์ฑ์ ๊ฐ์กฐํ๊ณ ๋์ ํ๋ ค ํ์ง๋ง, ์ค์ ๋ก ์ด๋ฌํ ํ๋ก์ธ์ค๊ฐ ์ ์ฐฉ๋๊ธฐ๋ ์ฝ์ง ์์ต๋๋ค.
๊ทธ ์ด์ ์ค ํ๋๋ ์๋ก ์ด๋ค ์ผ์ ํ๋์ง ์ ๋ชจ๋ฅด๊ธฐ ๋๋ฌธ์ด์ฃ . ์ฆ, ํ ๋ด ์ง์์ ๊ณต์ ๊ฐ ์ํํ ์ด๋ฃจ์ด์ง์ง ์๊ธฐ ๋๋ฌธ์ ๋๋ค. ์ด๋ฌํ ์ํฉ์์๋ ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ์์ฒญ๋ฐ์์ ๋, ๊ทธ ์ฝ๋๊ฐ ์ด๋ค ์ญํ ์ ํ๋ ์ฝ๋์ธ์ง๋ถํฐ, ์ ์ฒด์ ์ธ ๋งฅ๋ฝ์ ์ฐ์ ํ์ ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฝ๋๋ค. ๊ทธ๋ฌ๋ ์๊ฐ์ ์ซ๊ธฐ๋ค ๋ณด๋ฉด ๋ฆฌ๋ทฐ๋ฅผ ๋น ๋ฅด๊ฒ ํด์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด ์ฝ๋์์ ๋์ผ๋ก ๋ณด์ด๋ ๊ฒ๋ง ๋์ถฉ ๋ฆฌ๋ทฐ๊ฐ ๋์ด๊ฐ๋ฉฐ, ์ฝ๋ ๋ฆฌ๋ทฐ์ ์๋ฏธ๊ฐ ํด์๋์ฃ .
๋ฌผ๋ก ํต์ผ๋ ์คํ์ผ์ ์ฌ์ฉํ๋ ๊ฒ๋ง์ผ๋ก, ์ฝ๋ ๋ฆฌ๋ทฐ ๋ฌธํ๋ฅผ ์ ์ฐฉ์ํฌ ์๋ ์์ต๋๋ค. ๊ฐ์ ์ด๋ค ์ผ์ ์ด๋ป๊ฒ ํ๋์ง ์ง์ ๊ณต์ ๋ฅผ ์ ๊ธฐ์ ์ผ๋ก ํด์ผ ํ๊ณ , ์ฝ๋ ๋ฆฌ๋ทฐ์์ ์ด๋ค ๊ฒ๋ค์ ์ค์ ์ ์ผ๋ก ๋ฆฌ๋ทฐํด์ผํ๋์ง์ ๊ทธ์ ๋ํ ์ฑ ์๊ฐ์ ๊ฐ๋ ๋ฑ ์ ์ ๋์ด์ผ ํ ๊ฒ์ด ๋ง๊ธฐ ๋๋ฌธ์ ๋๋ค. ํ์ง๋ง ์ฝ๋ ์คํ์ผ์ ํต์ผ์ํค์ง ์์ ์ํ์์๋ ์ด ์ค ์ด๋ค ๊ฒ๋ ํ๊ธฐ ํ๋ค๋ค๊ณ ์๊ฐํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋์ ์ฝ๋๋ผ๋ ๋ด๊ฐ ์ง ๊ฒ์ฒ๋ผ ์ต์ํ๊ฒ ์ฝ์ ์ ์๊ณ , ๊ทธ ์ฌ๋์ด ์ด๋ค ์๊ฐ์ผ๋ก ์ฝ๋๋ฅผ ์งฐ๋์ง ํ์ ํ ์ ์๊ฒ ํ๋ ์ฒซ ๋จ๊ณ๊ฐ ๋ฐ๋ก 'ํต์ผ๋ ์ฝ๋ ์คํ์ผ'์ด๊ธฐ ๋๋ฌธ์ ๋๋ค.
IDE์ ์ฝ๋ ์คํ์ผ ์ ์ฉํ๊ธฐ
๋ค์์ IDE์ ์ฝ๋ ์คํ์ผ์ ์ ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ณด๊ฒ ์ต๋๋ค. ๊ฐ๋ฐ์๋ค์ด ๋ง์ด ์ฌ์ฉํ๋ IDE๋ ์๋ ํฌ๋งทํ ๊ธฐ๋ฅ์ ์ง์ํ๋๋ฐ, ์ด ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ์ ์ด๋ ์ฝ๋ ์คํ์ผ์์ ํฌ๋งทํ ์ ๊ดํ ๋ด์ฉ์ ํฌ๊ฒ ์ ๊ฒฝ ์ฐ์ง ์์๋ ๋ฉ๋๋ค.
๊ทธ๋ฌ๋ ํ์๋ง๋ค ์๋ก ๋ค๋ฅธ IDE๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ์ฝ๋ ์คํ์ผ์ด ์์ด๊ธฐ ์ฝ์ต๋๋ค. IDE๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ด์ฅ๋์ด ์๋ ์์ ๋ง์ ์คํ์ผ๋ก ์ฝ๋๋ฅผ ํฌ๋งทํ ํ๊ธฐ ๋๋ฌธ์, ํ ๋ด์์ ํฉ์๋ ์ฝ๋ ์คํ์ผ๋ก IDE์ ํฌ๋งทํ ์ค์ ์ ๋ณ๊ฒฝํด ์ฃผ์ด์ผ ํฉ๋๋ค. ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ Intellij์ VsCode์์ Google Java Style Guide๋ฅผ ์ ์ฉํด ๋ดค์ต๋๋ค.
Install ๋ฒํผ์ ํด๋ฆญํ๋ฉด ํ๋ฌ๊ทธ์ธ์ด ์ค์น๋๊ณ [Restart IDE]
๋ฒํผ์ด ์๊น๋๋ค. ๋ฒํผ์ ๋๋ฌ Intellij IDEA๋ฅผ ์ฌ์์ํด ์ค๋๋ค.
--add-exports=jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED
.[OK]
๋ฅผ ๋๋ฌ ์์ ์ฌํญ์ ์ ์ฉํด ์ฃผ๋ฉด, ์ด์ ํ์ผ์ ์ ์ฅํ ๋๋ง๋ค ์ฝ๋๊ฐ Google Java Style๋ก ํฌ๋งทํ
๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Visual Studio Code์์๋ ๋ค์์ ๋จ๊ณ๋ฅผ ๋ฐ๋ผ Google Java Style์ ์ ์ฉํฉ๋๋ค.
์ด์ java ํ์ผ์ ๋ด์ฉ์ ์์ ํ๊ณ ์ ์ฅํ ๋๋ง๋ค Google Java Style๋ก ํฌ๋งทํ ๋๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
์ ๊ฒฝ ์จ์ผ ํ ์ฝ๋ ์คํ์ผ
์ด์ฒ๋ผ IDE์ ์ฝ๋ ์คํ์ผ์ ์ ์ฉํ์ฌ, ๊ธฐ๋ณธ์ ์ธ ํฌ๋งทํ ์ IDE๊ฐ ์์์ ํด์ฃผ๊ฒ ๋์์ต๋๋ค. ์ด์ ๋จ์ ํฌ๋งทํ ์ ๋์ด, ์ฝ๋์ ํ๋ฆฌํฐ๋ฅผ ๋์ฌ์ฃผ๋ ์ฝ๋ ์คํ์ผ์ ์ ๊ฒฝ ์ฐ๋ฉด์ ์์ฑํด์ผ ํ๋๋ฐ์. ์ด๋ฅผ ์ํด ์ด๋ค ์ ์ ์ ๊ฒฝ ์จ์ผ ํ ๊น์?
๊ฐ๋ ์ฑ
์ฝ๋๋ฅผ ์์ฑํ ๋๋ ์ฝ๋๋ฅผ ์ฒ์ ์ฝ๋ ์ฌ๋๋ ์ฝ๊ฒ ์ดํดํ ์ ์๋๋ก ์์ฑํด์ผ ํฉ๋๋ค. ๊ฐ๋ ์ฑ์ ๋์ด๋ ์ฌ๋ฌ ๋ฐฉ๋ฒ ์ค ์ฐ์ ๋ค์์ ์ ๊ฒฝ ์ฐ๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํด ๋ณด์ธ์.
๊ฐ์ฅ ๋จผ์ ๋ณ์์ ํจ์ ๋ฑ์ ์ด๋ฆ์
๋๋ค. ๋ณ์์ ํจ์์ ์ด๋ฆ์ ์ฝ๋์ ์ญํ ์ ๋ช
ํํ๊ฒ ๋ฐ์ํด์ผ ํ๋ฉฐ, ์ฝ์ด์ ์ฌ์ฉ์ ์ง์ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. IDE๊ฐ ์ฌ๋งํ ์๋ ์์ฑ์ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ์ด๋ฆ์ด ์กฐ๊ธ ๊ธธ์ด์ง๋๋ผ๋ ํ์คํ ์๋ฏธ๋ฅผ ์ ์ ์๋๋ก ์์ฑํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์๋ฅผ ๋ค์ด, gc
๋ณด๋ค gameContext
๋ฅผ, aoas
๋ณด๋ค๋ averageOfAllStudents
๋ฅผ ์ฌ์ฉํ๋๋ก ํด๋ด
์๋ค. ๋ํ ํ๋ก์ ํธ ์ ์ฒด์ ์ผ๊ด๋ ๋ช
๋ช
๊ท์น์ ์ ์ฉํ์ฌ ๋์ผํ ํจํด์ ์ ์งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ฝ๋์ ๋ ผ๋ฆฌ์ ๊ตฌ์กฐ ๋ํ ์ญํ ์ ๋ฐ๋ผ ์๊ณ ๋ช ํํ๊ฒ ๊ตฌ๋ถ๋์ด์ผ ํฉ๋๋ค. ํจ์๋ค๊ณผ ํด๋์ค๋ ๊ฐ๊ฐ์ ํ์คํ ์ญํ ์ ๊ฐ์ง๊ณ ์์ด์ผ ํ๋ฉฐ, ๋๋ฌด ๊ธธ๊ฑฐ๋ ๋ณต์กํด์ง์ง ์๊ฒ ์ ๊ด๋ฆฌํด์ผ ํฉ๋๋ค. ์ฝ๋๊ฐ ๊ธธ์ด์ง๊ฒ ๋๋ฉด ์ญํ ์ ๋ฐ๋ผ ๋ณ๋์ ํด๋์ค๋ ํจ์๋ก ๋ถ๋ฆฌํด ๋ด๋ ์์ ์ ํด์ฃผ์ด์ผ ํฉ๋๋ค. ์ฆ, ๊ฐ๋ ์ฑ์ ์ ๊ฒฝ ์ฐ๋ฉฐ ์ฝ๋๋ฅผ ์์ฑํ๊ธฐ ์ํด์๋ ๋น๋ฒํ ๋ฆฌํฉํ ๋ง์ด ํ์ฐ์ ์ผ๋ก ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
๋๋ถ๋ถ์ ์ฝ๋๋ ์ฝ๋ ์์ฒด๋ง์ผ๋ก ์ดํดํ๊ธฐ ์ฌ์์ผ ํฉ๋๋ค. ํ์ง๋ง ๋ณต์กํ ์๊ณ ๋ฆฌ์ฆ์ด๋ ๊ตฌํ์ฒด์ ํฌ๊ธฐ๊ฐ ์ปค์ง ๊ฒฝ์ฐ, ์ฝ๋๋ฅผ ๋ณด๋ ๊ฒ๋ง์ผ๋ก๋ ์ดํด๊ฐ ์ด๋ ค์ธ ์ ์์ต๋๋ค. ์ด๋ด ๋ ์ฃผ์์ ํ์ฉํด์ผ ํฉ๋๋ค. ํ ๊ฐ์ง ์ฃผ์ํ ์ ์ ์ฃผ์์ ์ต์ํ์ผ๋ก ์ฌ์ฉํ๋ฉฐ, ์ ๋ง ํ์ํ ์ ๋ณด๋ง ๋ํ๋ด์ผ ํ๋ค๋ ๊ฒ์ ๋๋ค.
์ฝ๋๋ฅผ ์ค๋ช ํ๊ธฐ ์ํด ์ฃผ์์ ๋จ๋ฐํ๊ฒ ๋๋ฉด, ์ฃผ์๊ณผ ์ฝ๋๋ฅผ ์ฝ๋ ์ฌ๋์ ๊ฐ์ ๋ด์ฉ์ ์ฃผ์์์ ํ ๋ฒ, ๋ ์ฝ๋์์ ํ ๋ฒ ์ค๋ณต์ผ๋ก ์ฝ๊ฒ ๋ฉ๋๋ค. ์ด๋ ์ฝ๋์ ๊ฐ๋ ์ฑ์ ๋จ์ด๋จ๋ฆด ์ ์์ผ๋, ์ฃผ์์ ์งง๊ณ ๋ช ํํ ์๋ก ์ข์ต๋๋ค.
๋ง์น๋ฉฐ
์ง๊ธ๊น์ง ๊ฐ๋ฐ์์๊ฒ ์ฝ๋ ์คํ์ผ์ด ์ค์ํ ์ด์ ์ ๋ฐฉ๋ฒ ๋ฑ์ ์ดํด๋ดค๋๋ฐ์. ์๋ฌด๋ฆฌ ์ด์ฌํ ๊ณ ๋ฏผํ๋ฉฐ ์์ฑํ ์ฝ๋๋ผ๋, ์ฝ๋ ์คํ์ผ์ด ์กํ์์ง ์์ผ๋ฉด ์ฝ๊ธฐ ์ด๋ ค์ด ์ฝ๋๊ฐ ๋ฉ๋๋ค. ๊ฐ๋ฐ์๋ผ๋ ์ง์ ์ ์ ํํ ์ด์, ์์ ์ด ์์ฑํ ์ฝ๋๋ฅผ ๊ณต๊ฐํ ์๋ฐ์ ์๋๋ฐ์. ์ด๋ด ๋ ์ ๋ฌธ์ ์ธ ์ฝ๋๋ฅผ ์ ๋ณด์ด๊ณ ์ถ์ ๋ง์์ ๋๊ตฌ๋ ๋น์ทํ ๊ฒ ๊ฐ์ต๋๋ค.
์ฝ๋ ์คํ์ผ์ ํ๋ก๊ทธ๋๋ฐ ๊ณต๋ถ์ฒ๋ผ ์ด๋ ต๊ณ ๋ณต์กํ ๊ฒ์ด ์๋๋๋ค. ์กฐ๊ธ๋ง ์ ๊ฒฝ ์ฐ๋ฉด ๋๊ตฌ๋ ๊น๋ํ๊ณ ์ผ๊ด๋ ์ฝ๋๋ฅผ ์ธ ์ ์์ต๋๋ค. ์ด๋ฌํ ์์ ๋ ธ๋ ฅ์ ํตํด, ์์ผ๋ก ์ฌ๋ฌ๋ถ์ด ์์ฑํ๋ ์ฝ๋๊ฐ ์ข์ ์ฒซ์ธ์์ ๋จ๊ธธ ์ ์๊ธธ ๋ฐ๋๋๋ค.