[์ฝ๋ฉ ๊ท์น] ์๋ฐ์ฝ๋ฉ ๊ท์น(Java Code Conventions)
์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ฝ๋ฉ ๊ท์น
๋ชฉ์ฐจ |
1. ๊ฐ์ 2. ํ์ผ ์ด๋ฆ 2.1 ํ์ผ ํ์ฅ์ 2.2 ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํ์ผ ์ด๋ฆ 3. ํ์ผ ๊ตฌ์กฐ 3.1 ์๋ฐ ์์ค ํ์ผ 3.1.1 ์์ ์ฃผ์ 3.1.2 Package ๋ฌธ๊ณผ Import ๋ฌธ 3.1.3 Class์ Interface ์ ์ธ 4. ๋ค์ฌ์ฐ๊ธฐ 4.1 ํ ์ค์ ๊ธธ์ด 4.2 ์ค ๋๋๊ธฐ 5. ์ฃผ์ 5.1 ๊ตฌํ ์ฃผ์ ํ์ 5.1.1 ๋ธ๋ก(Block) ์ฃผ์ 5.1.2 ํ ์ค(Single-Line) ์ฃผ์ 5.1.3 ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์ 5.1.4 ์ค ๋(End-Of-Line) ์ฃผ์ 5.2 ๋ฌธ์ํ(Documentation) ์ฃผ์ 6. ์ ์ธ 6.1 ํ ์ค๋น ์ ์ธ๋ฌธ์ ์ 6.2 ์ด๊ธฐํ 6.3 ๋ฐฐ์น 6.4 ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ธ 7. ๋ฌธ (Statements) 7.1 ๊ฐ๋จํ ๋ฌธ 7.2 ๋ณตํฉ๋ฌธ 7.3 return ๋ฌธ 7.4 if, if-else, if else-if else ๋ฌธ 7.5 for ๋ฌธ 7.6 while ๋ฌธ 7.7 do-while ๋ฌธ 7.8 switch ๋ฌธ 7.9 try-catch ๋ฌธ 8. ๋น ๊ณต๊ฐ (White Space) 8.1 ํ ์ค ๋์ฐ๊ธฐ (Blank Lines) 8.2 ๊ณต๋ฐฑ (Blank Spaces) 9. ๋ช ๋ช (Naming) ๊ท์น 9.1 Packages 9.2 Classes 9.3 Interfaces 9.4 Methods 9.5 Variables 9.6 Constants 10. ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด 10.1 ์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ๋ง๊ณ ๋์ ์ ๊ทผ์ ์ ๊ณต! 10.2 ํด๋์ค ๋ณ์์ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถ! 10.3 ์ซ์๋ ๋ฐ๋ก ์ฌ์ฉํ์ง ๋ง๊ณ ์ ์ธํด์ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ ๊ทผ! 10.4 ๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ ์ฃผ์ํ ๊ฒ๋ค! 10.5 ๊ทธ ์ธ ์ ๊ฒฝ์จ์ผ ํ ๊ฒ๋ค 10.5.1 ๊ดํธ 10.5.2 ๋ฐํ ๊ฐ 10.5.3 ์กฐ๊ฑด ์ฐ์ฐ์ '?' ์ด์ ์ ๋์ค๋ ์(expression) 11. ์ฝ๋ ์์ 11.1 ์๋ฐ ์์ค ํ์ผ ์์ ๋ง์น๋ฉฐ.. |
1. ๊ฐ์
์ ์ฝ๋ฉ ๊ท์น(Code Convention)์ด ํ์ํ๊ฐ?
์ฝ๋ฉ ๊ท์น์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ค์ํ๋ค ↓
- ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ์ผ๋ จ์ ๋ชจ๋ ๊ณผ์ ์ ๋ค์ด๊ฐ๋ ๋น์ฉ ์ค 80%๊ฐ ์ ์ง๋ณด์์ ์ฐ์ฌ์ง๋ค.
- ์ํํธ์จ์ด์ ์ง์ ๊ฐ๋ฐํ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์ํํธ์จ์ด์ ์ ์ง๋ณด์๋ฅผ ๋ด๋นํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ๋ณด๊ธฐ ํ๋ค๋ค.
- ์ฝ๋ฉ ๊ท์น์ ์งํค๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์์ค ์ฝ๋๋ฅผ ์ฒ์ ๋ณด์์ ๋, ๋ ๋น ๋ฅธ ์๊ฐ ์์ ์๋ฒฝํ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ฃผ๊ธฐ ๋๋ฌธ์, ์ํํธ์จ์ด์ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ค.
- ๊ฐ๋ฐ์๊ฐ ์์ ์ ์์ค ์ฝ๋๋ฅผ ์ ํ์ผ๋ก ํ๋ ค๊ณ ํ๋ค๋ฉด, ์์ ์ด ์์ฑํ ๋ค๋ฅธ ์์ค ์ฝ๋๋ค๊ณผ ์ ์ด์ธ๋ฆฌ๋๋ก ํจํค์ง(package)๋ฅผ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ ํ์๊ฐ ์๋ค.
2. ํ์ผ ์ด๋ฆ
์ด ์ฅ์์๋ ํํ๊ฒ ์ฌ์ฉ๋๋ ํ์ผ ํ์ฅ์์ ํ์ผ ์ด๋ฆ์ ์ค๋ช ํ๋ค.
2. 1 ํ์ผ ํ์ฅ์
์๋ฐ ์ํํธ์จ์ด๋ ๋ค์์ ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ผ ํํ | ํ์ฅ์ |
์๋ฐ ์์ค | .java |
์๋ฐ ๋ฐ์ดํธ์ฝ๋ | .class |
2. 2 ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํ์ผ ์ด๋ฆ
๊ณตํต์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ์ผ ์ด๋ฆ์ ์ฌ์ฉํ๋ค ↓
ํ์ผ ์ด๋ฆ | ์ฌ์ฉ |
GNUmakefile | make ํ์ผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ, ์ํํธ์จ์ด๋ฅผ ๋น๋ํ ๋๋ gnumake ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ |
README | ํน์ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ์์ฝํ๋ ํ์ผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ |
3. ํ์ผ ๊ตฌ์กฐ
- ํ์ผ์ ๋น ์ค์ด๋ ๋ค๋ฅธ ๊ตฌ์ญ์์ ๋ํ๋ด์ฃผ๋ ์ฃผ์์ผ๋ก ๋๋์ด์ง๋ ์ฌ๋ฌ ๊ตฌ์ญ(section)๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- 2,000 ๋ผ์ธ์ ๋๋ ํ์ผ์ ์ดํดํ๊ธฐ๊ฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์ ์์ผ๋ฉด ํผํด์ผ ํ๋ค.
- ์ ์ ํ๊ฒ ๊ตฌ์ฑ๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ ๋ ์๋ "11์ฅ์ 1์ ์๋ฐ ์์คํ์ผ ์์ " ์์ ๋ณผ ์ ์๋ค.
3. 1 ์๋ฐ ์์ค ํ์ผ
๊ฐ๊ฐ์ ์๋ฐ ์์ค ํ์ผ์ ํ๋์ public ํด๋์ค ๋๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๋ค. private ํด๋์ค๋ค๊ณผ ์ธํฐํ์ด์ค๋ค์ด public ํด๋์ค์ ์ฐ๊ฒฐ๋์ด ์์ ๋, public ํด๋์ค์ ๊ฐ์ ํ์ผ์ private ํด๋์ค๋ค๊ณผ ์ธํฐํ์ด์ค๋ค์ ๋ฃ์ ์ ์๋ค. public ํด๋์ค๋ ํ์ผ์์ ์ฒซ ๋ฒ์งธ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ด์ด์ผ ํ๋ค.
์๋ฐ ์์ค ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
- ์์ ์ฃผ์
- Package ๋ฌธ๊ณผ Import ๋ฌธ
- Class์ Interface ์ ์ธ
3. 1. 1 ์์ ์ฃผ์
๋ชจ๋ ์์ค ํ์ผ์ ํด๋์ค ์ด๋ฆ, ๋ฒ์ ์ ๋ณด, ๋ ์ง, ์ ์๊ถ ์ฃผ์๋ฅผ ๋ณด์ฌ์ฃผ๋ C ์คํ์ผ์ ์ฃผ์๊ณผ ํจ๊ป ์์ํ๋ค.
/*
* ํด๋์ค ์ด๋ฆ
*
* ๋ฒ์ ์ ๋ณด
*
* ๋ ์ง
*
* ์ ์๊ถ ์ฃผ์
*/
3. 1. 2 Package ๋ฌธ๊ณผ Import ๋ฌธ
๋๋ถ๋ถ์ ์๋ฐ ์์ค ํ์ผ์์ ์ฃผ์์ด ์๋ ์ฒซ ๋ฒ์งธ ์ค์ Package ๋ฌธ์ด๋ค. ๊ทธ ํ์ Import ๋ฌธ์ด ๋ค๋ฐ๋ผ ๋์จ๋ค. ์๋ฅผ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค ↓
package java.awt;
import java.awt.peer.CanvasPeer;
3. 1. 3 Class์ Interface ์ ์ธ
๋ค์ ํ๋ ํด๋์ค(Class) ๋๋ ์ธํฐํ์ด์ค(Interface) ์ ์ธ์ ์ผ๋ถ๋ถ๋ค์ ๋ํ๋๋ ์์์ ๋ฐ๋ผ ๋ณด์ฌ์ค๋ค.
์์ | ํด๋์ค/์ธํฐํ์ด์ค ์ ์ธ์ ๊ตฌ์ฑ์์ |
์ค๋ช |
1 | ๋ฌธ์ํ ์ฃผ์ (/** ... */) |
์ด ์ฃผ์์ด ํฌํจํ๋ ์ ๋ณด๋ค์ ์๋ "5์ฅ์ 2์ ๋ฌธ์ํ(Documentation) ์ฃผ์"์ ์ฐธ๊ณ |
2 | ํด๋์ค/์ธํฐํ์ด์ค ๋ฌธ | |
3 | ๊ตฌํ ์ฃผ์ (/* ... */) |
์ด ์ฃผ์์ ํด๋์ค/์ธํฐํ์ด์ค ๋ฌธ์ํ ์ฃผ์์ ์ ํฉํ์ง ์์ ํ๋์ ํด๋์ค/์ธํฐํ์ด์ค์๋ง ํด๋นํ๋ ์ ๋ณด๋ค์ ํฌํจํด์ผ ํ๋ค. |
4 | ํด๋์ค(static) ๋ณ์ | ์ฒซ๋ฒ์งธ๋ก๋ public ํด๋์ค ๋ณ์๋ค์ด ๋์ค๊ณ , ๊ทธ ๋ค์์ protected ํด๋์ค ๋ณ์๋ค, ๊ทธ ๋ค์์ package(์ ๊ทผ ์ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ) ํด๋์ค ๋ณ์๋ค, ๊ทธ ๋ค์์ private ํด๋์ค ๋ณ์๋ค์ด ๋์จ๋ค. |
5 | ์ผ๋ฐ ๋ณ์ | ์์ฑํ๋ ์์๋ ํด๋์ค ๋ณ์์ ๋์ผํ๋ค. |
6 | ์์ฑ์ | |
7 | ๋ฉ์๋ | ๋ฉ์๋๋ค์ ๋ฒ์๋ ์ ๊ทผ์ฑ์ ๊ธฐ์ค์ผ๋ก ๋๋๊ธฐ ๋ณด๋ค๋ ๊ธฐ๋ฅ์ฑ์ ์ํด์ ๊ตฌ์ฑ๋์ด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, private ํด๋์ค ๋ฉ์๋๊ฐ ๋ ๊ฐ์ public ๋ฉ์๋๋ค ์ฌ์ด์ ์กด์ฌํ ์๋ ์๋ค. ์ด๋ ๊ฒ ํ๋ ๋ชฉ์ ์ ์ฝ๋๊ฐ ๋ ์ฝ๊ฒ ์ฝํ๊ณ , ๋ ์ฝ๊ฒ ์ดํด๋๋๋ก ๋๊ธฐ ์ํด์์ด๋ค. |
4. ๋ค์ฌ์ฐ๊ธฐ
4๊ฐ์ ๋น ์นธ(space)๋ฅผ ๋ค์ฌ์ฐ๊ธฐ ๋จ์๋ก ์ฌ์ฉํ๋ค. ๋ค์ฌ์ฐ๊ธฐ์ ์ ํํ ๊ตฌํ(๋น ์นธ์ ์ฌ์ฉํ๊ฑฐ๋ ํญ์ ์ฌ์ฉํ๊ฑฐ๋)์ ์ ํด์ ธ ์์ง ์๋ค. ํญ์ 4๊ฐ์ ๋น ์นธ์ด ์๋๋ผ, 8๊ฐ์ ๋น ์นธ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
4. 1 ํ ์ค์ ๊ธธ์ด
ํ ์ค์ 80์ ์ด์ ์ฐ๋ ๊ฒ์ ๋๋ถ๋ถ์ ํฐ๋ฏธ๋(terminal)๊ณผ ํด์์ ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์ ํผํด์ผ ํ๋ค.
* ๋ฌธ์ํ ์ฃผ์์ ๊ฐ์ง๊ณ ๋ฌธ์๋ฅผ ๋ง๋ค ๋, ์ผ๋ฐ์ ์ผ๋ก ํ ์ค์ 70์ ์ด์์ ๊ฐ์ง์ง ์๋๋ค.
4. 2 ์ค ๋๋๊ธฐ
ํ๋์ ์์ด ํ ์ค์ ๋ค์ด๊ฐ์ง ์์ ๋์๋, ๋ค์๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์น๋ค์ ๋ฐ๋ผ์ ๋ ์ค๋ก ๋๋๋ค.
- ์ฝค๋ง ํ์ ๋ ์ค๋ก ๋๋๋ค.
- ์ฐ์ฐ์(operator) ์์์ ๋ ์ค๋ก ๋๋๋ค.
- ๋ ๋ฒจ์ด ๋ฎ์ ์์น๋ณด๋ค๋ ๋ ๋ฒจ์ด ๋์ ์์น์ ๋ฐ๋ผ ๋ ์ค๋ก ๋๋๋ค.
- ์์ค๊ณผ ๊ฐ์ ๋ ๋ฒจ์ ์(expression)์ด ์์๋๋ ์๋ก์ด ์ค์ ์์ค๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ผ์น์ํจ๋ค.
- ๋ง์ฝ ์์ ์์น๋ค์ด ์ฝ๋๋ฅผ ๋ ๋ณต์กํ๊ฒ ํ๊ฑฐ๋ ์ค๋ฅธ์ชฝ ๋์ ๋์ด๊ฐ๋ค๋ฉด, ๋์ ์ 8๊ฐ์ ๋น ์นธ์ ์ฌ์ฉํด ๋ค์ฌ์ด๋ค.
์ฌ๊ธฐ ๋ฉ์๋ ํธ์ถ์ ๋ ์ค๋ก ๋๋์ด ์ฐ๋ ๋ช ๊ฐ์ง ์์ ๋ค์ด ์๋ค.
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
๋ค์์ ์ํ ํํ์์ ๋ ์ค๋ก ๋๋์ด ์์ฑํ๋ ๋ ๊ฐ์ ์์ ์ด๋ค. ์ฒซ๋ฒ์งธ ์์ ๊ฐ ๊ดํธ๋ก ์ธ์ฌ์ง ํํ์ ๋ฐ์์ ์ค ๋ฐ๊ฟ์ด ์ผ์ด๋๊ณ ๋ ๋์ ๋ ๋ฒจ์ด๊ธฐ ๋๋ฌธ์ ์ฒซ๋ฒ์งธ ์์ ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; // ๋ ์ ์์ผ๋ฉด ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; // ๋ ์ ์์ผ๋ฉด ํผํ๋ค.
๋ค์์ ๋ฉ์๋ ์ ์ธ์ ๋ค์ฌ์ฐ๋ ์์ ๋ค์ด๋ค. ์ฒซ๋ฒ์งธ๋ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ด๋ค. ๋๋ฒ์งธ ์์ ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋๋ฒ์งธ ์ค๊ณผ ์ธ๋ฒ์งธ ์ค์ ๋ค์ฌ์จ์ผ ํ๋ฏ๋ก, ๋์ ์ 8๊ฐ์ ๋น ์นธ์ ์ด์ฉํ์ฌ ๋ค์ฌ์ด๋ค.
// ์ผ๋ฐ์ ์ธ ๋ค์ฌ์ฐ๊ธฐ
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
// ๋๋ฌด ๋ฉ๋ฆฌ ๋ค์ฌ์ฐ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด 8๊ฐ์ ๋น ์นธ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋ ๋ณธ๋ฌธ์ด ์์ํ ๋ 4๊ฐ์ ๋น ์นธ์ ์ฌ์ฉํ๋ฏ๋ก, ๋ฉ์๋ ๋ณธ๋ฌธ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์ค์ ๋๋๋ ๊ฒฝ์ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก 8๊ฐ์ ๋น ์นธ ์์น์ ์ฌ์ฉํ์ ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
// ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ ์ฌ์ฉํ์ง ๋ง์.
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) { // ์ข์ง ์์ ๋ค์ฌ์ฐ๊ธฐ
doSomethingAboutIt(); // ๋ฉ์๋ ๋ณธ๋ฌธ ์์์ด ๋ช
ํํ์ง๊ฐ ์๋ค.
}
// ๋์ ์ ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค.
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
// ๋๋ ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค.
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
๋ค์์ ์ผํญ์(ternary expression)์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ค.
alpha = (aLongBooleanExpression) ? beta : gamma;
alpha = (aLongBooleanExpression) ? beta
: gamma;
alpha = (aLongBooleanExpression)
? beta
: gamma;
5. ์ฃผ์
์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ ๊ฐ์ง ์ข ๋ฅ์ ์ฃผ์์ ๊ฐ์ง๋ค.
- ๊ตฌํ ์ฃผ์
- ๋ฌธ์ํ ์ฃผ์
๊ตฌํ ์ฃผ์์ /* ... */ ๊ณผ // ์ ์ํด์ ๊ฒฝ๊ณ๊ฐ ๊ฒฐ์ ๋๋ C++์์์ ์ฃผ์๊ณผ ๋์ผํ๋ค. ๋ํ ๊ตฌํ ์ฃผ์์ ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ด ํ์ํ ๋, ๋๋ ์ฝ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.
๋ฌธ์ํ ์ฃผ์์ ๋จ์ง ์๋ฐ์์๋ง ์ฌ์ฉ๋๋ฉฐ, /** ... */ ์ ์ํด์ ๊ฒฝ๊ณ๊ฐ ๊ฒฐ์ ๋๋ค. ์๋ฐ ์ํํธ์จ์ด์ ํฌํจ๋์ด ์๋ javadoc ํด์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ํ ์ฃผ์์ ํฌํจํ๋ HTML ํ์ผ์ ์๋์ผ๋ก ๋ง๋ค ์ ์๋ค. ๋ํ ๋ฌธ์ํ ์ฃผ์์ ์์ค ์ฝ๋๊ฐ ์๋ ๊ฐ๋ฐ์๋ค๋ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก, ์ค์ ๊ตฌํ๋ ์ฝ๋์๋ ์๊ด์ด ์๋ ์ฝ๋์ ๋ช ์ธ ์ฌํญ(specification)์ ํฌํจํ๋ค.
์ฃผ์์ ์ฝ๋์ ๋ํ ๊ฐ์์ ์ฝ๋ ์์ฒด๋ง ๊ฐ์ง๊ณ ๋ ์์ ์๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ค์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ๋์ด์ผ ํ๋ค. ์ฃผ์์ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ๊ฒ๊ณผ ์ดํดํ๋ ๊ฒ์ ๊ด๊ณ๋ ์ ๋ณด๋ง์ ํฌํจํ๊ณ ์์ด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, 'ํจํค์ง๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค ๊ฒ์ธ๊ฐ?' ๋๋ 'ํ์ผ๋ค์ ์ด๋ ๋๋ ํ ๋ฆฌ์ ์์น์ํฌ ๊ฒ์ธ๊ฐ?'์ ๋ํ ์ ๋ณด๋ ์ฃผ์์ ํฌํจ๋์ด์๋ ์๋๋ค.
์ค์ํ๊ฑฐ๋ ์ฝ๋๋ง์ผ๋ก๋ ๋ช ํํ์ง ์์ ํ๋ก๊ทธ๋จ ์ค๊ณ์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ ํฌํจํ๋ ๊ฒ์ ์ ์ ํ์ง๋ง, ๊ทธ๋ฌ๋ ์ฝ๋ ์์ ์ด๋ฏธ ํํ๋์ด ์๋ ์ค๋ณต ์ ๋ณด๋ ํผํด์ผ ํ๋ค. ์ค๋ณต๋ ์ฃผ์์ ์์ฑํ๋๋ฐ ๋ง์ ์๊ฐ์ ํ๋นํด์ ๊ณํ๋ ์๊ฐ์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ๊ณ์ ๋ฐ์ ํ๋ฉด ๋์ด์์ ์ ํจํ์ง ์์ ๊ฒ ๊ฐ์ ์ ๋ณด๋ค์ ์ฃผ์์์ ์ ์ธํ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ด๋ค.
* ๋๋ก๋ ์ฝ๋์ ๋ํ ์ฃผ์์ด ๋ง์ด ํ์ํ๋ค๋ ๊ฒ์ ์ฝ๋์ ํ์ง์ด ์ข์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฃผ์์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ๋๋ ๋, ์ฝ๋๋ฅผ ์ข ๋ ๋ช ํํ๊ฒ ๋ค์ ์์ฑํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด๋ ๊ฒ์ด ์ข๋ค.
* ์ฃผ์์ ๋ณํ(*) ๋๋ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฐ ํฐ ์ฌ๊ฐํ์ ๋ฃ๋ ๋ฐฉ๋ฒ์ ํผํ๋๋ก ํ์.
* ์ฃผ์์ ํผ ํผ๋(form-feed: ํ๋ฆฐํฐ์์ ์ฉ์ง ๋ฐ๊ฟ)๋ ๋ฐฑ์คํ์ด์ค(backspace)์ ๊ฐ์ ํน์ ๋ฌธ์๋ฅผ ํฌํจํด์๋ ์ ๋๋ค.
5. 1 ๊ตฌํ ์ฃผ์
ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง ํ์์ ๊ตฌํ ์ฃผ์์ ํฌํจํ ์ ์๋ค.
- ๋ธ๋ก(Block) ์ฃผ์
- ํ ์ค(Single-Line) ์ฃผ์
- ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์
- ์ค ๋(End-Of-Line) ์ฃผ์
5. 1. 1 ๋ธ๋ก(Block) ์ฃผ์
๋ธ๋ก ์ฃผ์์ ํ์ผ, ๋ฉ์๋, ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ค๋ช ์ ์ ๊ณตํ ๋ ์ฌ์ฉ๋๋ค. ๋ธ๋ก ์ฃผ์์ ๊ฐ๊ฐ์ ํ์ผ์ด ์์๋ ๋์ ๋ฉ์๋ ์ ์ ์ฌ์ฉ๋๋ค. ๋ํ ๋ฉ์๋ ์์์์ ๊ฐ์ด ๋ค๋ฅธ ์ฅ์์์ ์ฌ์ฉ๋ ์๋ ์๋ค. ๋ฉ์๋ ์์ ์กด์ฌํ๋ ๋ธ๋ก ์ฃผ์์ ์ฃผ์์ด ์ค๋ช ํ๋ ์ฝ๋์ ๊ฐ์ ๋จ์๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํด์ผํ๋ค.
๋ธ๋ก ์ฃผ์์ ๋ค๋ฅธ ์ฝ๋๋ค๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์ฒ์ ํ ์ค์ ๋น์ฐ๊ณ ์ฌ์ฉํ๋ค.
/*
* ์ฌ๊ธฐ์ ๋ธ๋ก ์ฃผ์์ ์์ฑํ๋ค.
*/
๋ธ๋ก ์ฃผ์์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ค์ ๊ณ ์น์ง ๋ชปํ๋๋ก ํ๊ธฐ ์ํ ํน๋ณํ ๋ธ๋ก ์ฃผ์์ /*- ์ผ๋ก ์์ํ ์ ์๋ค.
/*-
* ์ฌ๊ธฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ฌด์ํ๋ ํน๋ณํ
* ๋ธ๋ก ์ฃผ์์ ์์ฑํ๋ค.
*
* one
* two
* three
*/
5. 1. 2 ํ ์ค(Single-Line) ์ฃผ์
์งง์ ์ฃผ์์ ๋ค๋ฐ๋ผ ์ค๋ ์ฝ๋์ ๊ฐ์ ๋์ผํ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ ํ ์ค๋ก ์์ฑํ ์ ์๋ค. ๋ง์ฝ ์ฃผ์์ด ํ ์ค์ ๋ค ๋ค์ด๊ฐ์ง ์๋๋ค๋ฉด, ๋ธ๋ก ์ฃผ์ ํ์์ ๋ฐ๋ผ์ผ ํ๋ค. ํ ์ค ์ฃผ์์ ๋น ์ค๋ก ์์๋์ด์ผ ํ๋ค.
if (condition) {
/* ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์คํ๋๋ค. */
...
}
5. 1. 3 ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์
์์ฃผ ์งง์ ์ฃผ์์ด ํ์ํ ๊ฒฝ์ฐ ์ฃผ์์ด ์ค๋ช ํ๋ ์ฝ๋์ ๊ฐ์ ์ค์ ์์ฑํ๋ค. ํ์ง๋ง ์ค์ ์ฝ๋์๋ ๊ตฌ๋ถ๋ ์ ์๋๋ก ์ถฉ๋ถํ ๋ฉ๋ฆฌ ๋จ์ด๋จ๋ ค์ผ ํ๋ค.
if (a == 2) {
return TRUE; /* ํน๋ณํ ๊ฒฝ์ฐ */
} else {
return isPrime(a); /* a ๊ฐ ํ์์ธ ๊ฒฝ์ฐ */
}
5. 1. 4 ์ค ๋(End-Of-Line) ์ฃผ์
์ฃผ์ ๊ธฐํธ // ๋ ํ ์ค ๋ชจ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ํ ์ค์ ์ผ๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฌ์ฉํ ์ ์๋ค. ๊ธด ๋ด์ฉ์ ์ฃผ์์ ํฌํจํ๊ธฐ ์ํด์ ์ฐ์๋๋ ์ฌ๋ฌ ์ค์ ์ด ์ฃผ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์๋์ง๋ง, ์ด๋ค ์ฝ๋์ ์ผ๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ๋ฌ ์ค์ ์ฐ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋ฝ๋๋ค.
if (foo > 1) {
// double-flip์ ์คํํ๋ค.
...
}
else {
return false; // ์ด์ ๋ฅผ ์ฌ๊ธฐ์ ์ค๋ช
ํ๋ค.
}
//if (bar > 1) {
//
// // double-flip์ ์คํํ๋ค.
// ...
//}
//else {
// return false;
//}
5. 2 ๋ฌธ์ํ(Documentation) ์ฃผ์
* ์ฌ๊ธฐ์ ๋์ค๋ ์ฃผ์๋ค์ ์๋ "11์ฅ 1์ ์๋ฐ ์์ค ํ์ผ ์์ " ๋ฅผ ์ฐธ๊ณ ํ๊ธฐ ๋ฐ๋๋ค.
๋ฌธ์ํ ์ฃผ์์ ๋ค์ 5๊ฐ์ง๋ฅผ ์ค๋ช ํ๋ค.
- ์๋ฐ ํด๋์ค
- ์ธํฐํ์ด์ค
- ์์ฑ์
- ๋ฉ์๋
- ํ๋
๊ฐ๊ฐ์ ๋ฌธ์ํ ์ฃผ์์ ์ฃผ์ ๊ฒฝ๊ณ ๊ธฐํธ์ธ /** ... */ ์์ผ๋ก ๋ค์ด๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ฌธ์ํ ์ฃผ์์ ํด๋์ค, ์ธํฐํ์ด์ค ๊ทธ๋ฆฌ๊ณ ๋ฉค๋ฒ ๋น ํ๋์ฉ ๊ฐ์ง๋ค. ๋ฌธ์ํ ์ฃผ์์ ์ ์ธ ๋ฐ๋ก ์ ์ ๋์์ผ ํ๋ค. ๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์
/**
* Example ํด๋์ค๋ ...
*/
public class Example { ...
์ฒ์ ๋์ค๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ค์ ๋ค์ฌ์ฐ์ง ์๋ ๋ฐ๋ฉด์ ๊ทธ๋ค์ ๋ฉค๋ฒ๋ค์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค. ํด๋์ค์ ๋ํ ๋ฌธ์ํ ์ฃผ์(/**)์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ค์ฌ์ฐ์ง ์๋๋ค. ๊ทธ ๋ค์์ ๋์ค๋ ๋ฌธ์ํ ์ฃผ์์ ๋ณํ๋ฅผ ์์ง์ผ๋ก ๋ง์ถ๊ธฐ ์ํด ๊ฐ๊ฐ 1๊ฐ์ ๋น ์นธ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค. ์์ฑ์๋ฅผ ํฌํจํ ๋ฉค๋ฒ๋ค์ ๋ฌธ์ํ ์ฃผ์ ์ฒซ ์ค์์๋ 4๊ฐ์ ๋น ์นธ์ ๋ค์ฌ์ฐ๊ธฐ ํ๊ณ , ๊ทธ ์ดํ์๋ 5๊ฐ์ ๋น ์นธ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
๋ง์ฝ ํด๋์ค, ์ธํฐํ์ด์ค, ๋ณ์ ๋๋ ๋ฉ์๋์ ๋ํ ์ด๋ค ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ง๋ง ๋ฌธ์ํ ์ฃผ์์ ์ด์ธ๋ฆฌ์ง ์๋๋ค๊ณ ์๊ฐ๋๋ค๋ฉด, ํด๋์ค ์ ์ธ ๋ฐ๋ก ํ์ ๋ธ๋ก ์ฃผ์("5์ฅ 1.1์ ๋ธ๋ก(Block) ์ฃผ์") ๋๋ ํ ์ค ์ฃผ์("5์ฅ 1.2์ ํ ์ค(Single-Line) ์ฃผ์")์ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด, ํด๋์ค์ ๊ตฌํ์ ๋ํ ์ธ๋ถ ์ฌํญ๋ค์ ํด๋์ค์ ๋ํ ๋ฌธ์ํ ์ฃผ์์ด ์๋๋ผ, ํด๋์ค ์ ์ธ๋ฌธ ๋ค์์ ๋ธ๋ก ์ฃผ์์ ์ฌ์ฉํด์ผ ํ๋ค.
์๋ฐ๋ ๋ฌธ์ํ ์ฃผ์์ ์ฃผ์ ์ดํ์ ์ฒ์ ๋์ค๋ ์ ์ธ๋ฌธ๊ณผ ์ฐ๊ฒฐ์ํค๊ธฐ ๋๋ฌธ์ ๋ฌธ์ํ ์ฃผ์์ ๋ฉ์๋ ๋๋ ์์ฑ์ ๊ตฌํ ์์ ์์นํด์๋ ์ ๋๋ค.
6. ์ ์ธ
6. 1 ํ ์ค๋น ์ ์ธ๋ฌธ์ ์
ํ ์ค์ ํ๋์ ์ ์ธ๋ฌธ์ ์ฐ๋ ๊ฒ์ด ์ฃผ์๋ฌธ ์ฐ๋ ๊ฒ์ ์ฝ๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ ์ค์ ํ๋์ ์ ์ธ๋ฌธ์ ์ฐ๋ ๊ฒ์ด ์ข๋ค.
int level; // ๋ค์ฌ์ฐ๊ธฐ ๋จ์
int size; // ํ
์ดํด ํฌ๊ธฐ
์์ ๊ฐ์ด ์ฐ๋ ๊ฒ์ด ์๋์ ๊ฐ์ด ์ฐ๋ ๊ฒ๋ณด๋ค ์ข๋ค.
int level, size;
๊ฐ์ ์ค์ ์๋ก ๋ค๋ฅธ ํ์ ์ ์ ์ธํ๋ฉด ์ ๋๋ค.
int foo, fooarray[]; //์ ๋ ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
์์ ์์ ๋ ํ์ ๊ณผ ๋ณ์ ์ด๋ฆ์ฌ์ด์ ํ๋์ space๋ฅผ ๋์๋ค. ๋ ๋ค๋ฅธ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ํญ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
int level; // ๋ค์ฌ์ฐ๊ธฐ ๋จ์
int size; // ํ
์ด๋ธ ํฌ๊ธฐ
Object currentEntry; // ํ
์ด๋ธ์์ ํ์ฌ ์ ํ๋ ๋ฐ์ดํฐ
6. 2 ์ด๊ธฐํ
์ง์ญ ๋ณ์์ ๊ฒฝ์ฐ, ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐํ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ณ์์ ์ด๊ธฐํ ๊ฐ์ด ๋ค๋ฅธ ๊ณ์ฐ์ ์ํด์ ๊ฒฐ์ ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐํ ํ์ง ์์๋ ๊ด์ฐฎ๋ค.
6. 3 ๋ฐฐ์น
์ ์ธ์ ๋ธ๋ก์ ์์์ ์์นํด์ผ ํ๋ค(๋ณดํต ๋ธ๋ก์ ์ค๊ดํธ "{ }" ๋ก ๋๋ฌ์ธ์ธ ์ฝ๋๋ฅผ ์๋ฏธํ๋ค). ๋ณ์๋ฅผ ์ฒ์ ์ฌ์ฉํ ๋๊น์ง ๋ณ์์ ์ ์ธ์ ๋ฏธ๋ฃจ์ง ๋ง์. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ถ์ฃผ์ํ ํ๋ก๊ทธ๋๋จธ๋ค์ ํผ๋์ ๋น ์ง ์ ์๊ณ , ์์ญ๋ด์์ ์ฝ๋๋ฅผ ์ด๋ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐ์ํฌ ์ ์๋ค.
void myMethod() {
int int1 = 0; // ๋ฉ์๋ ๋ธ๋ก์ ์์
if (condition) {
int int2 = 0; // "if" ๋ธ๋ก์ ์์
...
}
}
์ด๋ฌํ ์์น์๋ ์์ธ๋ ์กด์ฌํ๋ค. ๊ทธ ์ค ํ๋๊ฐ for ๋ฌธ์์ ์ ์ธํ๋ ๋ฐ๋ณต๋ฌธ์ ์ํ ์ธ๋ฐ์ค์ด๋ค.
for (int i = 0; i < maxLoops; i++) { ... }
์์ ์์ญ์์ ์ ์ธ๋ ๊ฒ์ ์จ๊ธฐ๊ธฐ ์ํด์ ๋ธ๋ก์ ์ฒ์ ๋ถ๋ถ์์ ๋ค์ ์ ์ธํ๋ ๊ฒ์ ํผํด์ผ ํ๋ค. ์๋ฅผ๋ค์ด, ๋ธ๋ก ์์ ๋ธ๋ก์์ ๋์ผํ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํด์ ์ ์ธํ์ง ๋ง์์ผ ํ๋ค.
int count;
...
myMethod() {
if (condition) {
int count = 0; // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง ๊ฒ!
...
}
...
}
6. 4 ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ธ
์๋ฐ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ ๋, ๋ค์ 3๊ฐ์ง ์์น์ ๋ฐ๋ฅด๋๋ก ํ์
- ๋ฉ์๋ ์ด๋ฆ๊ณผ ๊ทธ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ์ ์์์ธ ๊ดํธ "(" ์ฌ์ด์๋ ๋น ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ค.
- ์ฌ๋ ์ค๊ดํธ "{" ๋ ํด๋์ค/์ธํฐํ์ด์ค/๋ฉ์๋ ์ ์ธ๊ณผ ๋์ผํ ์ค์ ๋์ ์ฌ์ฉํ์
- ๋ซ๋ ์ค๊ดํธ "}" ๋ ์ฌ๋ ์ค๊ดํธ "{" ํ์ ๋ฐ๋ก ๋์์ผ ํ๋ null ๋ฌธ์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋, ์ฌ๋ ๋ฌธ์ฅ๊ณผ ๋์ผํ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ ์๋ก์ด ์ค์์ ์ฌ์ฉํ์
- ๋ฉ์๋๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ๊ฐ ๋ฉ์๋๋ค ์ฌ์ด์๋ ํ ์ค์ ๋น์ฐ๋๋ก ํ์
class Sample extends Object {
int ivar1;
int ivar2;
Sample(int i, int j) {
ivar1 = i;
ivar2 = j;
}
int emptyMethod() {}
...
}
7. ๋ฌธ(Statements)
7. 1 ๊ฐ๋จํ ๋ฌธ
๊ฐ๊ฐ์ ์ค์๋ ์ต๋ํ ํ๋์ ๋ฌธ(statement)๋ง ์ฌ์ฉํ๋๋ก ํ๋ค.
argv++; // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
argc--; // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
argv++; argc--; // ์ด๋ ๊ฒ ์์ฑํ๋ ๊ฒ์ ํผํด๋ผ
7. 2 ๋ณตํฉ๋ฌธ
๋ณตํฉ๋ฌธ์ ์ค๊ดํธ "{ statements }" ๋ก ๋๋ฌ์ธ์ฌ์ง ๋ฌธ๋ค์ ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ ๋ฌธ์ด๋ค. ์ด ๋ฆฌ์คํธ์ ํฌํจ๋ ์ ์๋ ๋ฌธ๋ค์ ๋ค์ ์ ์์๋ถํฐ ํ๋ ํ๋ ์๋ฅผ๋ค์ด ์ค๋ช ํ๊ฒ ๋ค. ๋ค์ ์์น์ ๋ฐ๋ฅด์
- ๋๋ฌ์ธ์ฌ์ง ๋ฌธ๋ค์ ๋ณตํฉ๋ฌธ๋ณด๋ค ํ ๋จ๊ณ ๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
- ์ฌ๋ ์ค๊ดํธ "{" ๋ ๋ณตํฉ๋ฌธ์ ์์ํ๋ ์ค์ ๋ง์ง๋ง์ ์์นํด์ผ ํ๋ค.
- ๋ซ๋ ์ค๊ดํธ "}" ๋ ์๋ก์ด ์ค์ ์จ์ผํ๊ณ , ๋ณตํฉ๋ฌธ์ ์์๊ณผ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
- ์ค๊ดํธ๋ค์ด if-else ๋ฌธ์ด๋ for ๋ฌธ ๊ฐ์ ์ ์ด ๊ตฌ์กฐ์ ์ผ๋ถ๋ถ์ผ๋ก ์ฌ์ฉ๋์ด์ง ๋์๋ ์ค๊ดํธ๋ค์ด ๋ชจ๋ ๋ฌธ๋ค(๋จ ํ๋์ ๋ฌธ์ผ ๊ฒฝ์ฐ์๋)์ ๋๋ฌ์ธ๋๋ฐ ์ฌ์ฉ๋์ด์ ธ์ผ ํ๋ค(์ด๋ ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค๊ดํธ๋ฅผ ๋ซ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฌ๋ ๊ฒ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์ง ์๊ณ , ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ ํฐ ๋์์ ์ค๋ค).
7. 3 return ๋ฌธ
๊ฐ์ ๋ฐํํ๋ return ๋ฌธ์ ํน๋ณํ ๋ฐฉ๋ฒ์ผ๋ก ๋ ํ์คํ return ๊ฐ์ ํํํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
return;
return myDisk.size();
return (size ? size : defaultSize);
7. 4 if, if-else, if else-if else ๋ฌธ
if-else ๋ฌธ์ ์ฌ์ฉํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
if (condition) {
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
* if ๋ฌธ์ ํญ์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค. ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ ํผํด์ผ ํ๋ค.
if (condition) // ์ด๋ ๊ฒ ์ค๊ดํธ {}๋ฅผ ์๋ตํด์ ์ฌ์ฉํ์ง ๋ง์
statement;
7. 5 for ๋ฌธ
for ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
for (initialization; condition; update) {
statements;
}
๋น for ๋ฌธ(๋ชจ๋ ์์ ์ด initialization, condition, update ์์ ์๋ฃ๋๋)์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
for (initialization; condition; update);
for ๋ฌธ์ initialization ๋๋ update ๋ถ๋ฌธ์์ ์ฝค๋ง(,) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋์๋ ์ธ๊ฐ ์ด์์ ๋ณ์๋ค์ ์ฌ์ฉํ๋ ๋ณต์ก์ฑ์ ํผํด์ผ ํ๋ค. ๋ง์ฝ ํ์ํ๋ค๋ฉด, for ๋ฌธ ์ด์ ์ ๋ฌธ์ ๋ถ๋ฆฌ์์ผ ์ฌ์ฉ(initialization์ ์ ๊ฒฝ์ฐ)ํ๊ฑฐ๋ for ๋ฌธ์ ๋ง์ง๋ง์ ๋ฌธ์ ๋ถ๋ฆฌ์์ผ ์ฌ์ฉ(update์ ์ ๊ฒฝ์ฐ)ํ๋ค.
7. 6 while ๋ฌธ
while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
while (condition) {
statements;
}
๋น while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
while (condition);
7. 7 do-while ๋ฌธ
do-while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
do {
statements;
} while (condition);
7. 8 switch ๋ฌธ
switch ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
switch (condition) {
case ABC:
statements;
/* ๋ค์์ค๋ก ๊ณ์ ์งํํ๋ค. */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
๋ชจ๋ case๋ฅผ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ break ๋ฌธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ ์์ ์์ ์ฝ๋์ ์ฒซ๋ฒ์งธ case์์ ๋ณผ์ ์๋ค.
๋ชจ๋ switch ๋ฌธ์ default case๋ฅผ ํฌํจํด์ผ ํ๋ค. ์์ ์์ ์ ๊ฐ์ด, ์ด๋ค ๊ฒฝ์ฐ์ default case์์ break๋ ์ค๋ณต์ ์ด์ง๋ง, ์ดํ์ ๋ ๋ค๋ฅธ case๊ฐ ์ถ๊ฐ๋์ด์ง ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
7. 9 try-catch ๋ฌธ
try-catch ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
try {
statements;
} catch (ExceptionClass e) {
statements;
}
try-catch ๋ฌธ์ try ๋ธ๋ก์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ ์ง, ์๋๋ฉด ์ค๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ง์ ์๊ด์์ด ์คํ๋์ด์ผ ํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ๊ธฐ ์ํด์ finally ๋ถ๋ถ์ ์ฌ์ฉํ ์ ์๋ค.
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
8. ๋น ๊ณต๊ฐ(White Space)
8. 1 ํ ์ค ๋์ฐ๊ธฐ(Blank Lines)
ํ ์ค์ ๋์ฐ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๊ณ๊ฐ ์๋ ์ฝ๋๋ค์ ์ฝ๊ฒ ๊ตฌ๋ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ(readability)์ ํฅ์์ํจ๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ ์ค์ ๋์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ๋ฉ์๋๋ค ์ฌ์ด์์
- ๋ฉ์๋ ์์์์ ์ง์ญ ๋ณ์์ ๊ทธ ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ ์ฌ์ด์์
- ๋ธ๋ก(Block) ์ฃผ์ ๋๋ ํ ์ค(Single-Line) ์ฃผ์ ์ด์ ์
- ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํ ๋ฉ์๋ ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ์น์ ๋ค ์ฌ์ด์
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ์ค์ ๋์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ์์ค ํ์ผ์ ์น์ ๋ค ์ฌ์ด์์
- ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ ์ฌ์ด์์
8. 2 ๊ณต๋ฐฑ(Blank Spaces)
๊ณต๋ฐฑ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
- ๊ดํธ์ ํจ๊ป ๋ํ๋๋ ํค์๋๋ ๊ณต๋ฐฑ์ผ๋ก ๋๋์ด์ผ ํ๋ค.
while (true) {
...
}
- ๋ฉ์๋ ์ด๋ฆ๊ณผ ๋ฉ์๋์ ์ฌ๋ ๊ดํธ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์ฌ์ฉ๋์ด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋ช ์ฌํ์. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ ๋ฉ์๋ ํธ์ถ๊ณผ ํค์๋๋ฅผ ๊ตฌ๋ณํ๋๋ฐ ๋์์ ์ค๋ค.
- ๊ณต๋ฐฑ์ ์ธ์(argument) ๋ฆฌ์คํธ์์ ์ฝค๋ง ์ดํ์ ๋ํ๋์ผ ํ๋ค.
- .์ ์ ์ธํ ๋ชจ๋ ์ดํญ(binary) ์ฐ์ฐ์๋ ์ฐ์ฐ์๋ค๊ณผ๋ ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด์ ธ์ผ ํ๋ค. ๊ณต๋ฐฑ์ ๋จํญ ์ฐ์ฐ์(++ ํน์ --)์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํด์๋ ์ ๋๋ค.
a += c + d;
a = (a + b) / (c * d);
while (d++ = s++) {
n++;
}
printSize("size is " + foo + "\n");
- for ๋ฌธ์์ ์ฌ์ฉํ๋ ์ธ ๊ฐ์ ์(expression) ๋ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ๋๋์ด์ผ ํ๋ค.
for (expr1; expr2; expr3)
- ๋ณ์์ ํ์ ์ ๋ณํํ๋ ์บ์คํธ(cast)์ ๊ฒฝ์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ผ ํ๋ค.
myMethod((byte) aNum, (Object) x);
myMethod((int) (cp + 5), ((int) (i + 3)) + 1);
9. ๋ช ๋ช (Naming) ๊ท์น
๋ช ๋ช ๊ท์น, ์ฆ ์ด๋ฆ์ ์ ํ๋ ๊ท์น์ ํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค์ผ๋ก์จ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค๋ค. ๋ํ ์๋ณ์(identifier)๋ฅผ ํตํด์ ๊ธฐ๋ฅ์ ๋ํ ์ ๋ณด๋ ์ป์ ์ ์๋ค. ์๋ฅผ ๋ค์๋ฉด, ๊ทธ๊ฒ์ด ์์์ธ์ง ํจํค์ง์ธ์ง ํด๋์ค์ธ์ง๋ฅผ ์ ์ ์๋๋ก ๋์์ค๋ค. ์ด๋ฌํ ์ ๋ณด๋ ์ฝ๋๋ฅผ ์ดํดํ๋๋ฐ ํฐ ๋์์ด ๋๋ค.
๋ณธ ์ฅ์์ ์๊ฐํ ๋ช ๋ช ๊ท์น์ ์๋ณ์ ํ์ ์ ๋ค์ 6๊ฐ์ง์ด๋ค.
- Packages
- Classes
- Interfaces
- Methods
- Variables
- Constants
9. 1 Packages
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํจํค์ง ์ด๋ฆ์ ์ต์์ ๋ ๋ฒจ์ ํญ์ ASCII ๋ฌธ์์ ํฌํจ๋์ด ์๋ ์๋ฌธ์๋ก ์ฐ๊ณ , ๊ฐ์ฅ ๋์ ๋ ๋ฒจ์ ๋๋ฉ์ธ ์ด๋ฆ ์ค ํ๋์ด์ด์ผ ํ๋ค.
- ํ์ฌ๋ com, edu, gov, mil, net, org, ๋๋ 1981๋ ISO Standard 316์ ๋ช ์๋ ์์ด ๋ ๋ฌธ์๋ก ํํ๋๋ ๋๋ผ ๊ตฌ๋ณ ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ์ ๋๋จธ์ง ๋ถ๋ถ์ ์กฐ์ง ๋ด๋ถ์ ๋ช ๋ช ๊ท์น์ ๋ฐ๋ฅด๋ฉด ๋๋ค. ์ด๋ฌํ ๊ท์น์ ๋ฐ๋ผ ๋ง๋ค์ด์ง ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ผ๋ก๋ ์ฌ์ฉ๋๋ค.
- ์๋ฅผ ๋ค๋ฉด ๋ถ์๋ช , ํ๋ช , ํ๋ก์ ํธ๋ช , ์ปดํจํฐ ์ด๋ฆ, ๋๋ ๋ก๊ทธ์ธ ์ด๋ฆ ๋ฑ์ด๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- com.sun.eng
- com.apple.quicktime.v2
- edu.cmu.cs.bovik.cheese
9. 2 Classes
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋์ค ์ด๋ฆ์ ๋ช ์ฌ์ด์ด์ผ ํ๋ฉฐ, ๋ณตํฉ ๋จ์ด์ผ ๊ฒฝ์ฐ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์์ด์ด์ผ ํ๋ค.
- ํด๋์ค ์ด๋ฆ์ ๊ฐ๋จํ๊ณ ๋ช ์์ ์ผ๋ก ์์ฑํด์ผ ํ๋ค.
- ์์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ๋ ๋ฌธ์์ด์ ์ฝ์ด๋ ํผํ๋๋ก ํ๋ค(๋ง์ฝ, ์ฝ์ด๊ฐ URL์ด๋ HTML๊ณผ ๊ฐ์ด ๋ ๋ง์ด ,๋ ๋๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค๋ฉด ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ด์ฐฎ๋ค).
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- class Raster;
- class ImageSprite;
9. 3 Interfaces
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ธํฐํ์ด์ค ์ด๋ฆ๋ ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ ๋๋ฌธ์ ์ฌ์ฉ ๊ท์น์ ์ ์ฉํด์ผ ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- interface RasterDelegate;
- interface Storing;
9. 4 Methods
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฉ์๋์ ์ด๋ฆ์ ๋์ฌ์ด์ด์ผ ํ๋ฉฐ, ๋ณตํฉ ๋จ์ด์ผ ๊ฒฝ์ฐ ์ฒซ ๋จ์ด๋ ์๋ฌธ์๋ก ์์ํ๊ณ ๊ทธ ์ดํ์ ๋์ค๋ ๋จ์ด์ ์ฒซ ๋ฌธ์๋ ๋๋ฌธ์๋ก ์ฌ์ฉํด์ผ ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- run();
- runFast();
- getBackground();
9. 5 Variables
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ณ์ ์ด๋ฆ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ์๋ฌธ์๋ก ์์ํ๊ณ , ๊ฐ๊ฐ์ ๋ด๋ถ ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ๋๋ฌธ์๋ก ์์ํด์ผ ํ๋ค.
- ๋ณ์ ์ด๋ฆ์ด ์ธ๋๋ฐ (_) ๋๋ ๋ฌ๋ฌ ํ์ ๋ฌธ์๋ก ์์ํ๋ ๊ฒ์ด ํ์ฉ๋๊ธฐ๋ ํ์ง๋ง, ์ด ๋ฌธ์๋ค๋ก ์์ํ์ง ์๋๋ก ์ฃผ์ํ์.
- ์ด๋ฆ์ ์งง์ง๋ง ์๋ฏธ ์์ด์ผ ํ๋ค.
- ์ด๋ฆ์ ์ ํ์ ๊ทธ ๋ณ์์ ์ฌ์ฉ ์๋๋ฅผ ์์๋ผ ์ ์๋๋ก ์๋ฏธ์ ์ด์ด์ผ ํ๋ค.
- ํ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ณ์ ์ด๋ฆ์ ์์์ ์ผ๋ก๋ง ์ฌ์ฉํ๊ณ ๋ฒ๋ฆด ๋ณ์์ผ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ํผํด์ผ ํ๋ค.
- ๋ณดํต์ ์์ ๋ณ์๋ค์ ์ด๋ฆ์ integer ์ผ ๊ฒฝ์ฐ์๋ i, j, k, m, n์ ์ฌ์ฉํ๊ณ , character ์ผ ๊ฒฝ์ฐ์๋ c, d, e๋ฅผ ์ฌ์ฉํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- int i;
- char c;
- float myWidth;
9. 6 Constants
- ๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋์ค ์์๋ก ์ ์ธ๋ ๋ณ์๋ค๊ณผ ANSI ์์๋ค์ ์ด๋ฆ์ ๋ชจ๋ ๋๋ฌธ์๋ก ์ฐ๊ณ ๊ฐ๊ฐ์ ๋จ์ด๋ ์ธ๋๋ฐ("_")๋ก ๋ถ๋ฆฌ ํด์ผ ํ๋ค.
- ๋๋ฒ๊น ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด์ ANSI ์์๋ค์ ์ฌ์ฉ์ ์์ ํ๋๋ก ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- static final int MIN_WIDTH = 4;
- static final int MAX_WIDTH = 999;
- static final int GET_THE_CPU = 1;
10. ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด
10. 1 ์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ๋ง๊ณ ๋์ ์ ๊ทผ์ ์ ๊ณต
์ธ์คํด์ค ๋ณ์ ๋๋ ํด๋์ค ๋ณ์๋ฅผ ํฉ๋นํ ์ด์ ์์ด public์ผ๋ก ์ ์ธํ์ง ๋ง์. ์ธ์คํด์ค ๋ณ์๋ค์ ๋ช ์์ ์ผ๋ก ์ ์ธ๋ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ธ์คํด์ค ๋ณ์๊ฐ public์ผ๋ก ์ ์ธ๋๋ ๊ฒ์ด ์ ์ ํ ๊ฒฝ์ฐ๋ ํด๋์ค ์์ฒด๊ฐ ์ด๋ค ๋์(behavior)์ ๊ฐ์ง์ง ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ผ(data structure) ๊ฒฝ์ฐ์ด๋ค. ๋ค์ ๋งํด์ ๋ง์ฝ class ๋์ struct๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด(๋ง์ฝ Java๊ฐ struct๋ฅผ ์ง์ํ๋ค๋ฉด) class์ ์ธ์คํด์ค ๋ณ์๋ค์ public์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
10. 2 ํด๋์ค ๋ณ์์ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถ
ํด๋์ค(static) ๋ณ์ ๋๋ ํด๋์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํผํด์ผ ํ๋ค. ๋์ ์ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํด๋ผ
classMethod(); // ์ข์ ์ฌ์ฉ๋ฒ
AClass.classMethod(); // ์ข์ ์ฌ์ฉ๋ฒ
anObject.classMethod(); // ๋์ ์ฌ์ฉ๋ฒ
10. 3 ์ซ์๋ ๋ฐ๋ก ์ฌ์ฉํ์ง ์๊ณ ์ ์ธํด์ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ ๊ทผ
์ซ์ ์์๋ ์นด์ดํธ ๊ฐ์ผ๋ก for ๋ฃจํ์ ๋ํ๋๋ -1, 0, 1์ ์ ์ธํ๊ณ ๋ ์ซ์ ์์ฒด๋ฅผ ์ฝ๋์ ์ฌ์ฉํ์ง ๋ง์
10. 4 ๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ ์ฃผ์ํ ๊ฒ๋ค
- ํ๋์ ๋ฌธ(statement)์์ ๊ฐ์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ค์ ํ ๋นํ์ง ๋ง์(์ด๋ ๊ฒ ํ๋ฉด ์ฝ๊ธฐ๊ฐ ์ด๋ ต๊ฒ ๋๋ค)
fooBar.fChar = barFoo.lchar = 'c'; // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
- ๋น๊ต ์ฐ์ฐ์(equality operator: ==)์ ํผ๋๋๊ธฐ ์ฌ์ด ๊ณณ์ ํ ๋น ์ฐ์ฐ์(assignment operator: =)๋ฅผ ์ฌ์ฉํ์ง ๋ง์
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์ (์๋ฐ๊ฐ ํ์ฉํ์ง ์์)
if (c++ = d++) {
...
}
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
if ((c++ = d++) != 0) {
...
}
- ์คํ์ ์ฑ๋ฅ ํฅ์์ ์ํด์ ํ ๋น๋ฌธ(assignment statement)์์ ๋ ๋ค๋ฅธ ํ ๋น๋ฌธ์ ์ฌ์ฉํ์ง ๋ง์
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
d = (a = b + c) + r;
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
a = b + c;
d = a + r;
10. 5 ๊ทธ ์ธ ์ ๊ฒฝ์จ์ผ ํ ๊ฒ๋ค
10. 5. 1 ๊ดํธ
์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด์ ๋ณตํฉ ์ฐ์ฐ์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ์๋ ์์ ๋กญ๊ฒ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ด๋ค(์์ฑ์๋ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ํ์คํ๊ฒ ์๊ณ ์๋ค๊ณ ํ ์ง๋ผ๋, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ์๊ฒ๋ ์์ํ ์ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์).
if (a == b && c == d) // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if ((a == b) && (c == d)) // ์ด๋ ๊ฒ ์ฌ์ฉํ์
10. 5. 2 ๋ฐํ ๊ฐ
ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ๋ชฉ์ ์ด ์ผ์นํด์ผ ํ๋ค.
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if (booleanExpression) {
return true;
} else {
return false;
}
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
return booleanExpression;
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if (condition) {
return x;
}
return y;
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
return (condition ? x : y);
10. 5. 3 ์กฐ๊ฑด ์ฐ์ฐ์ '?' ์ด์ ์ ๋์ค๋ ์(expression)
์ผํญ ์ฐ์ฐ์(ternary operator - ?:) ์์ ? ์ด์ ์ ์ดํญ ์ฐ์ฐ์(binary operator)๋ฅผ ํฌํจํ๋ ์(expression)์ด ์๋ ๊ฒฝ์ฐ์๋, ๊ผญ ๊ดํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
(x >= 0) ? x : -x;
11. ์ฝ๋ ์์
11. 1 ์๋ฐ ์์ค ํ์ผ ์์
๋ค์ ์์ ๋ ํ๋์ public class๋ฅผ ๊ฐ์ง๋ ์์ค ํ์ผ์ ์ด๋ป๊ฒ ์์ ํ๋์ง ๋ถ์ฌ์ค๋ค.
* ์๋ฐ์์ ์ฌ์ฉํ๋ interface๋ ๋น์ทํ๊ฒ ๊ตฌ์ฑ๋๋ค.
๋ง์น๋ฉฐ..
๋ณธ ํฌ์คํ ์ ์๋ฌธ์ ์์ ๋ฐํ๋ฏ์ด Java๊ฐ Oracle์ ์ธ์๋๊ธฐ ์ ์ Sun์์ 1999๋ ๋์ ์์ฑ๋ Code Conventions ์ด๋ค. ๊ณต์ ๋ฌธ์๋ ์์ด๋ก ์์ฑ๋์์ผ๋ฉฐ ํ๊ธ ๋ฒ์ญ๋ณธ์ ์ ๊ณตํด์ฃผ์ง ์์ ์์ฌ์ ๋๋ฐ ๊ฐ๊ฒฉ์ค๋ฝ๊ฒ๋..(?) "kwangshin" ๋์ ๋ธ๋ก๊ทธ์์ ๋ฒ์ญ๋ณธ์ ์ฐพ์ ๋ณผ ์ ์์๋ค.
๋ฒ์ญ๋ณธ์ ๋ด์ฉ์ ๊ทธ๋๋ก ํผ์ค๋ฉด ์๋ฃ๋ฅผ ํผ์๋ค๋ ์์ผํจ(์๋ฃ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉด ๊ณต๋ถ๋ฅผ ์ํด๋ ์ด๋ฏธ ์ด ์ง์์ ๋ด๊ฐ ๊ฐ๊ณ ์๋ค๋?)์ ์ง์ ์ ์ธ ๊ณต๋ถ๋ ์๋ฒฝํ ํ์ง ์์๊ฒ ๊ฐ์ ์ผ์ผํ ํ์ดํ์ ํ๋ฉฐ ์์ฑํด๋ณด์๋ค. ๋ชฉ์ฐจ์ ๋ฒ์ญ๋ ๋งํฌ๋ฅผ ์ฝ๊ฐ ์์ ํ ๋ถ๋ถ์ด ์๋ค. ํ์ง๋ง ์๋ฌธ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๊ฒ ์์ฑํด๋ณด์๋ค.
๋ง์ ๋์์ด ๋ฌ๋ค. ์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ์ฒ์ ๊ณต๋ถ๋ฅผ ์์ํ๋ ์์ ์ ํ๋ฒ ์ฏค์ ์๋ ํด์ ๊ณต๋ถํด์ผ ํ๋ค๊ณ ์๊ฐ๋๋ค.
์ถ์ฒ: https://myeonguni.tistory.com/1596 [๋ช ์ฐ๋๋ท์ปด:ํฐ์คํ ๋ฆฌ]
[์ฝ๋ฉ ๊ท์น] ์๋ฐ์ฝ๋ฉ ๊ท์น(Java Code Conventions)
์๋ฐ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ฝ๋ฉ ๊ท์น
๋ชฉ์ฐจ |
1. ๊ฐ์ 2. ํ์ผ ์ด๋ฆ 2.1 ํ์ผ ํ์ฅ์ 2.2 ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํ์ผ ์ด๋ฆ 3. ํ์ผ ๊ตฌ์กฐ 3.1 ์๋ฐ ์์ค ํ์ผ 3.1.1 ์์ ์ฃผ์ 3.1.2 Package ๋ฌธ๊ณผ Import ๋ฌธ 3.1.3 Class์ Interface ์ ์ธ 4. ๋ค์ฌ์ฐ๊ธฐ 4.1 ํ ์ค์ ๊ธธ์ด 4.2 ์ค ๋๋๊ธฐ 5. ์ฃผ์ 5.1 ๊ตฌํ ์ฃผ์ ํ์ 5.1.1 ๋ธ๋ก(Block) ์ฃผ์ 5.1.2 ํ ์ค(Single-Line) ์ฃผ์ 5.1.3 ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์ 5.1.4 ์ค ๋(End-Of-Line) ์ฃผ์ 5.2 ๋ฌธ์ํ(Documentation) ์ฃผ์ 6. ์ ์ธ 6.1 ํ ์ค๋น ์ ์ธ๋ฌธ์ ์ 6.2 ์ด๊ธฐํ 6.3 ๋ฐฐ์น 6.4 ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ธ 7. ๋ฌธ (Statements) 7.1 ๊ฐ๋จํ ๋ฌธ 7.2 ๋ณตํฉ๋ฌธ 7.3 return ๋ฌธ 7.4 if, if-else, if else-if else ๋ฌธ 7.5 for ๋ฌธ 7.6 while ๋ฌธ 7.7 do-while ๋ฌธ 7.8 switch ๋ฌธ 7.9 try-catch ๋ฌธ 8. ๋น ๊ณต๊ฐ (White Space) 8.1 ํ ์ค ๋์ฐ๊ธฐ (Blank Lines) 8.2 ๊ณต๋ฐฑ (Blank Spaces) 9. ๋ช ๋ช (Naming) ๊ท์น 9.1 Packages 9.2 Classes 9.3 Interfaces 9.4 Methods 9.5 Variables 9.6 Constants 10. ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด 10.1 ์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ๋ง๊ณ ๋์ ์ ๊ทผ์ ์ ๊ณต! 10.2 ํด๋์ค ๋ณ์์ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถ! 10.3 ์ซ์๋ ๋ฐ๋ก ์ฌ์ฉํ์ง ๋ง๊ณ ์ ์ธํด์ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ ๊ทผ! 10.4 ๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ ์ฃผ์ํ ๊ฒ๋ค! 10.5 ๊ทธ ์ธ ์ ๊ฒฝ์จ์ผ ํ ๊ฒ๋ค 10.5.1 ๊ดํธ 10.5.2 ๋ฐํ ๊ฐ 10.5.3 ์กฐ๊ฑด ์ฐ์ฐ์ '?' ์ด์ ์ ๋์ค๋ ์(expression) 11. ์ฝ๋ ์์ 11.1 ์๋ฐ ์์ค ํ์ผ ์์ ๋ง์น๋ฉฐ.. |
1. ๊ฐ์
์ ์ฝ๋ฉ ๊ท์น(Code Convention)์ด ํ์ํ๊ฐ?
์ฝ๋ฉ ๊ท์น์ ์ฌ๋ฌ ๊ฐ์ง ์ด์ ์์ ํ๋ก๊ทธ๋๋จธ์๊ฒ ์ค์ํ๋ค ↓
- ์ํํธ์จ์ด๋ฅผ ๊ฐ๋ฐํ๋ ์ผ๋ จ์ ๋ชจ๋ ๊ณผ์ ์ ๋ค์ด๊ฐ๋ ๋น์ฉ ์ค 80%๊ฐ ์ ์ง๋ณด์์ ์ฐ์ฌ์ง๋ค.
- ์ํํธ์จ์ด์ ์ง์ ๊ฐ๋ฐํ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์ํํธ์จ์ด์ ์ ์ง๋ณด์๋ฅผ ๋ด๋นํ๋ ๊ฒฝ์ฐ๋ ๊ฑฐ์ ๋ณด๊ธฐ ํ๋ค๋ค.
- ์ฝ๋ฉ ๊ท์น์ ์งํค๋ฉด ๋ค๋ฅธ ๊ฐ๋ฐ์๊ฐ ๊ทธ ์์ค ์ฝ๋๋ฅผ ์ฒ์ ๋ณด์์ ๋, ๋ ๋น ๋ฅธ ์๊ฐ ์์ ์๋ฒฝํ๊ฒ ์ดํดํ ์ ์๋๋ก ๋์์ฃผ๊ธฐ ๋๋ฌธ์, ์ํํธ์จ์ด์ ๊ฐ๋ ์ฑ์ด ๋์์ง๋ค.
- ๊ฐ๋ฐ์๊ฐ ์์ ์ ์์ค ์ฝ๋๋ฅผ ์ ํ์ผ๋ก ํ๋ ค๊ณ ํ๋ค๋ฉด, ์์ ์ด ์์ฑํ ๋ค๋ฅธ ์์ค ์ฝ๋๋ค๊ณผ ์ ์ด์ธ๋ฆฌ๋๋ก ํจํค์ง(package)๋ฅผ ์ ์ ํ๊ฒ ๊ตฌ์ฑํ ํ์๊ฐ ์๋ค.
2. ํ์ผ ์ด๋ฆ
์ด ์ฅ์์๋ ํํ๊ฒ ์ฌ์ฉ๋๋ ํ์ผ ํ์ฅ์์ ํ์ผ ์ด๋ฆ์ ์ค๋ช ํ๋ค.
2. 1 ํ์ผ ํ์ฅ์
์๋ฐ ์ํํธ์จ์ด๋ ๋ค์์ ํ์ผ ํ์ฅ์๋ฅผ ์ฌ์ฉํ๋ค.
ํ์ผ ํํ | ํ์ฅ์ |
์๋ฐ ์์ค | .java |
์๋ฐ ๋ฐ์ดํธ์ฝ๋ | .class |
2. 2 ๊ณตํต์ผ๋ก ์ฌ์ฉ๋๋ ํ์ผ ์ด๋ฆ
๊ณตํต์ผ๋ก ๋ค์๊ณผ ๊ฐ์ ํ์ผ ์ด๋ฆ์ ์ฌ์ฉํ๋ค ↓
ํ์ผ ์ด๋ฆ | ์ฌ์ฉ |
GNUmakefile | make ํ์ผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ, ์ํํธ์จ์ด๋ฅผ ๋น๋ํ ๋๋ gnumake ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉ |
README | ํน์ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ์์ฝํ๋ ํ์ผ ์ด๋ฆ์ผ๋ก ์ฌ์ฉ |
3. ํ์ผ ๊ตฌ์กฐ
- ํ์ผ์ ๋น ์ค์ด๋ ๋ค๋ฅธ ๊ตฌ์ญ์์ ๋ํ๋ด์ฃผ๋ ์ฃผ์์ผ๋ก ๋๋์ด์ง๋ ์ฌ๋ฌ ๊ตฌ์ญ(section)๋ค๋ก ๊ตฌ์ฑ๋์ด ์๋ค.
- 2,000 ๋ผ์ธ์ ๋๋ ํ์ผ์ ์ดํดํ๊ธฐ๊ฐ ์ฝ์ง ์๊ธฐ ๋๋ฌธ์ ๋ ์ ์์ผ๋ฉด ํผํด์ผ ํ๋ค.
- ์ ์ ํ๊ฒ ๊ตฌ์ฑ๋ ์๋ฐ ํ๋ก๊ทธ๋จ์ ์์ ๋ ์๋ "11์ฅ์ 1์ ์๋ฐ ์์คํ์ผ ์์ " ์์ ๋ณผ ์ ์๋ค.
3. 1 ์๋ฐ ์์ค ํ์ผ
๊ฐ๊ฐ์ ์๋ฐ ์์ค ํ์ผ์ ํ๋์ public ํด๋์ค ๋๋ ์ธํฐํ์ด์ค๋ฅผ ๊ฐ์ง๋ค. private ํด๋์ค๋ค๊ณผ ์ธํฐํ์ด์ค๋ค์ด public ํด๋์ค์ ์ฐ๊ฒฐ๋์ด ์์ ๋, public ํด๋์ค์ ๊ฐ์ ํ์ผ์ private ํด๋์ค๋ค๊ณผ ์ธํฐํ์ด์ค๋ค์ ๋ฃ์ ์ ์๋ค. public ํด๋์ค๋ ํ์ผ์์ ์ฒซ ๋ฒ์งธ ํด๋์ค ๋๋ ์ธํฐํ์ด์ค์ด์ด์ผ ํ๋ค.
์๋ฐ ์์ค ํ์ผ์ ๋ค์๊ณผ ๊ฐ์ ์์๋ฅผ ๊ฐ์ง๋ค.
- ์์ ์ฃผ์
- Package ๋ฌธ๊ณผ Import ๋ฌธ
- Class์ Interface ์ ์ธ
3. 1. 1 ์์ ์ฃผ์
๋ชจ๋ ์์ค ํ์ผ์ ํด๋์ค ์ด๋ฆ, ๋ฒ์ ์ ๋ณด, ๋ ์ง, ์ ์๊ถ ์ฃผ์๋ฅผ ๋ณด์ฌ์ฃผ๋ C ์คํ์ผ์ ์ฃผ์๊ณผ ํจ๊ป ์์ํ๋ค.
/*
* ํด๋์ค ์ด๋ฆ
*
* ๋ฒ์ ์ ๋ณด
*
* ๋ ์ง
*
* ์ ์๊ถ ์ฃผ์
*/
3. 1. 2 Package ๋ฌธ๊ณผ Import ๋ฌธ
๋๋ถ๋ถ์ ์๋ฐ ์์ค ํ์ผ์์ ์ฃผ์์ด ์๋ ์ฒซ ๋ฒ์งธ ์ค์ Package ๋ฌธ์ด๋ค. ๊ทธ ํ์ Import ๋ฌธ์ด ๋ค๋ฐ๋ผ ๋์จ๋ค. ์๋ฅผ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค ↓
package java.awt;
import java.awt.peer.CanvasPeer;
3. 1. 3 Class์ Interface ์ ์ธ
๋ค์ ํ๋ ํด๋์ค(Class) ๋๋ ์ธํฐํ์ด์ค(Interface) ์ ์ธ์ ์ผ๋ถ๋ถ๋ค์ ๋ํ๋๋ ์์์ ๋ฐ๋ผ ๋ณด์ฌ์ค๋ค.
์์ | ํด๋์ค/์ธํฐํ์ด์ค ์ ์ธ์ ๊ตฌ์ฑ์์ |
์ค๋ช |
1 | ๋ฌธ์ํ ์ฃผ์ (/** ... */) |
์ด ์ฃผ์์ด ํฌํจํ๋ ์ ๋ณด๋ค์ ์๋ "5์ฅ์ 2์ ๋ฌธ์ํ(Documentation) ์ฃผ์"์ ์ฐธ๊ณ |
2 | ํด๋์ค/์ธํฐํ์ด์ค ๋ฌธ | |
3 | ๊ตฌํ ์ฃผ์ (/* ... */) |
์ด ์ฃผ์์ ํด๋์ค/์ธํฐํ์ด์ค ๋ฌธ์ํ ์ฃผ์์ ์ ํฉํ์ง ์์ ํ๋์ ํด๋์ค/์ธํฐํ์ด์ค์๋ง ํด๋นํ๋ ์ ๋ณด๋ค์ ํฌํจํด์ผ ํ๋ค. |
4 | ํด๋์ค(static) ๋ณ์ | ์ฒซ๋ฒ์งธ๋ก๋ public ํด๋์ค ๋ณ์๋ค์ด ๋์ค๊ณ , ๊ทธ ๋ค์์ protected ํด๋์ค ๋ณ์๋ค, ๊ทธ ๋ค์์ package(์ ๊ทผ ์ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ) ํด๋์ค ๋ณ์๋ค, ๊ทธ ๋ค์์ private ํด๋์ค ๋ณ์๋ค์ด ๋์จ๋ค. |
5 | ์ผ๋ฐ ๋ณ์ | ์์ฑํ๋ ์์๋ ํด๋์ค ๋ณ์์ ๋์ผํ๋ค. |
6 | ์์ฑ์ | |
7 | ๋ฉ์๋ | ๋ฉ์๋๋ค์ ๋ฒ์๋ ์ ๊ทผ์ฑ์ ๊ธฐ์ค์ผ๋ก ๋๋๊ธฐ ๋ณด๋ค๋ ๊ธฐ๋ฅ์ฑ์ ์ํด์ ๊ตฌ์ฑ๋์ด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, private ํด๋์ค ๋ฉ์๋๊ฐ ๋ ๊ฐ์ public ๋ฉ์๋๋ค ์ฌ์ด์ ์กด์ฌํ ์๋ ์๋ค. ์ด๋ ๊ฒ ํ๋ ๋ชฉ์ ์ ์ฝ๋๊ฐ ๋ ์ฝ๊ฒ ์ฝํ๊ณ , ๋ ์ฝ๊ฒ ์ดํด๋๋๋ก ๋๊ธฐ ์ํด์์ด๋ค. |
4. ๋ค์ฌ์ฐ๊ธฐ
4๊ฐ์ ๋น ์นธ(space)๋ฅผ ๋ค์ฌ์ฐ๊ธฐ ๋จ์๋ก ์ฌ์ฉํ๋ค. ๋ค์ฌ์ฐ๊ธฐ์ ์ ํํ ๊ตฌํ(๋น ์นธ์ ์ฌ์ฉํ๊ฑฐ๋ ํญ์ ์ฌ์ฉํ๊ฑฐ๋)์ ์ ํด์ ธ ์์ง ์๋ค. ํญ์ 4๊ฐ์ ๋น ์นธ์ด ์๋๋ผ, 8๊ฐ์ ๋น ์นธ์ผ๋ก ์ค์ ํ๋ ๊ฒ์ด ์ข๋ค.
4. 1 ํ ์ค์ ๊ธธ์ด
ํ ์ค์ 80์ ์ด์ ์ฐ๋ ๊ฒ์ ๋๋ถ๋ถ์ ํฐ๋ฏธ๋(terminal)๊ณผ ํด์์ ๋ค๋ฃฐ ์ ์๊ธฐ ๋๋ฌธ์ ํผํด์ผ ํ๋ค.
* ๋ฌธ์ํ ์ฃผ์์ ๊ฐ์ง๊ณ ๋ฌธ์๋ฅผ ๋ง๋ค ๋, ์ผ๋ฐ์ ์ผ๋ก ํ ์ค์ 70์ ์ด์์ ๊ฐ์ง์ง ์๋๋ค.
4. 2 ์ค ๋๋๊ธฐ
ํ๋์ ์์ด ํ ์ค์ ๋ค์ด๊ฐ์ง ์์ ๋์๋, ๋ค์๊ณผ ๊ฐ์ ์ผ๋ฐ์ ์ธ ์์น๋ค์ ๋ฐ๋ผ์ ๋ ์ค๋ก ๋๋๋ค.
- ์ฝค๋ง ํ์ ๋ ์ค๋ก ๋๋๋ค.
- ์ฐ์ฐ์(operator) ์์์ ๋ ์ค๋ก ๋๋๋ค.
- ๋ ๋ฒจ์ด ๋ฎ์ ์์น๋ณด๋ค๋ ๋ ๋ฒจ์ด ๋์ ์์น์ ๋ฐ๋ผ ๋ ์ค๋ก ๋๋๋ค.
- ์์ค๊ณผ ๊ฐ์ ๋ ๋ฒจ์ ์(expression)์ด ์์๋๋ ์๋ก์ด ์ค์ ์์ค๊ณผ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ผ์น์ํจ๋ค.
- ๋ง์ฝ ์์ ์์น๋ค์ด ์ฝ๋๋ฅผ ๋ ๋ณต์กํ๊ฒ ํ๊ฑฐ๋ ์ค๋ฅธ์ชฝ ๋์ ๋์ด๊ฐ๋ค๋ฉด, ๋์ ์ 8๊ฐ์ ๋น ์นธ์ ์ฌ์ฉํด ๋ค์ฌ์ด๋ค.
์ฌ๊ธฐ ๋ฉ์๋ ํธ์ถ์ ๋ ์ค๋ก ๋๋์ด ์ฐ๋ ๋ช ๊ฐ์ง ์์ ๋ค์ด ์๋ค.
someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);
var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));
๋ค์์ ์ํ ํํ์์ ๋ ์ค๋ก ๋๋์ด ์์ฑํ๋ ๋ ๊ฐ์ ์์ ์ด๋ค. ์ฒซ๋ฒ์งธ ์์ ๊ฐ ๊ดํธ๋ก ์ธ์ฌ์ง ํํ์ ๋ฐ์์ ์ค ๋ฐ๊ฟ์ด ์ผ์ด๋๊ณ ๋ ๋์ ๋ ๋ฒจ์ด๊ธฐ ๋๋ฌธ์ ์ฒซ๋ฒ์งธ ์์ ๋ฅผ ๋ ๋ง์ด ์ฌ์ฉํ๋ค.
longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; // ๋ ์ ์์ผ๋ฉด ์ด ๋ฐฉ๋ฒ์ ์ฌ์ฉํ๋ค.
longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; // ๋ ์ ์์ผ๋ฉด ํผํ๋ค.
๋ค์์ ๋ฉ์๋ ์ ์ธ์ ๋ค์ฌ์ฐ๋ ์์ ๋ค์ด๋ค. ์ฒซ๋ฒ์งธ๋ ์ผ๋ฐ์ ์ธ ๊ฒฝ์ฐ์ด๋ค. ๋๋ฒ์งธ ์์ ์ ๊ฒฝ์ฐ ์ผ๋ฐ์ ์ธ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค๋ฉด ๋๋ฒ์งธ ์ค๊ณผ ์ธ๋ฒ์งธ ์ค์ ๋ค์ฌ์จ์ผ ํ๋ฏ๋ก, ๋์ ์ 8๊ฐ์ ๋น ์นธ์ ์ด์ฉํ์ฌ ๋ค์ฌ์ด๋ค.
// ์ผ๋ฐ์ ์ธ ๋ค์ฌ์ฐ๊ธฐ
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
// ๋๋ฌด ๋ฉ๋ฆฌ ๋ค์ฌ์ฐ๋ ๊ฒ์ ํผํ๊ธฐ ์ํด 8๊ฐ์ ๋น ์นธ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}
์ผ๋ฐ์ ์ผ๋ก ๋ฉ์๋ ๋ณธ๋ฌธ์ด ์์ํ ๋ 4๊ฐ์ ๋น ์นธ์ ์ฌ์ฉํ๋ฏ๋ก, ๋ฉ์๋ ๋ณธ๋ฌธ๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์ค์ ๋๋๋ ๊ฒฝ์ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ ์ผ๋ฐ์ ์ผ๋ก 8๊ฐ์ ๋น ์นธ ์์น์ ์ฌ์ฉํ์ ์๋ฅผ ๋ค๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
// ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ ์ฌ์ฉํ์ง ๋ง์.
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) { // ์ข์ง ์์ ๋ค์ฌ์ฐ๊ธฐ
doSomethingAboutIt(); // ๋ฉ์๋ ๋ณธ๋ฌธ ์์์ด ๋ช
ํํ์ง๊ฐ ์๋ค.
}
// ๋์ ์ ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค.
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
// ๋๋ ์๋์ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ์ฌ์ฉํ๋ค.
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}
๋ค์์ ์ผํญ์(ternary expression)์์ ์ฌ์ฉ ๊ฐ๋ฅํ ์ธ ๊ฐ์ง ๋ฐฉ๋ฒ์ด๋ค.
alpha = (aLongBooleanExpression) ? beta : gamma;
alpha = (aLongBooleanExpression) ? beta
: gamma;
alpha = (aLongBooleanExpression)
? beta
: gamma;
5. ์ฃผ์
์๋ฐ ํ๋ก๊ทธ๋จ์ ๋ ๊ฐ์ง ์ข ๋ฅ์ ์ฃผ์์ ๊ฐ์ง๋ค.
- ๊ตฌํ ์ฃผ์
- ๋ฌธ์ํ ์ฃผ์
๊ตฌํ ์ฃผ์์ /* ... */ ๊ณผ // ์ ์ํด์ ๊ฒฝ๊ณ๊ฐ ๊ฒฐ์ ๋๋ C++์์์ ์ฃผ์๊ณผ ๋์ผํ๋ค. ๋ํ ๊ตฌํ ์ฃผ์์ ๊ฐ๊ฐ์ ๊ตฌํ์ ๋ํ ์ถ๊ฐ์ ์ธ ์ค๋ช ์ด ํ์ํ ๋, ๋๋ ์ฝ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ ๋ ์ฌ์ฉํ ์ ์๋ค.
๋ฌธ์ํ ์ฃผ์์ ๋จ์ง ์๋ฐ์์๋ง ์ฌ์ฉ๋๋ฉฐ, /** ... */ ์ ์ํด์ ๊ฒฝ๊ณ๊ฐ ๊ฒฐ์ ๋๋ค. ์๋ฐ ์ํํธ์จ์ด์ ํฌํจ๋์ด ์๋ javadoc ํด์ ์ฌ์ฉํ๋ฉด ๋ฌธ์ํ ์ฃผ์์ ํฌํจํ๋ HTML ํ์ผ์ ์๋์ผ๋ก ๋ง๋ค ์ ์๋ค. ๋ํ ๋ฌธ์ํ ์ฃผ์์ ์์ค ์ฝ๋๊ฐ ์๋ ๊ฐ๋ฐ์๋ค๋ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก, ์ค์ ๊ตฌํ๋ ์ฝ๋์๋ ์๊ด์ด ์๋ ์ฝ๋์ ๋ช ์ธ ์ฌํญ(specification)์ ํฌํจํ๋ค.
์ฃผ์์ ์ฝ๋์ ๋ํ ๊ฐ์์ ์ฝ๋ ์์ฒด๋ง ๊ฐ์ง๊ณ ๋ ์์ ์๋ ์ถ๊ฐ์ ์ธ ์ ๋ณด๋ค์ ์ ๊ณตํ๊ธฐ ์ํด ์ฌ์ฉ๋์ด์ผ ํ๋ค. ์ฃผ์์ ํ๋ก๊ทธ๋จ์ ์ฝ๋ ๊ฒ๊ณผ ์ดํดํ๋ ๊ฒ์ ๊ด๊ณ๋ ์ ๋ณด๋ง์ ํฌํจํ๊ณ ์์ด์ผ ํ๋ค. ์๋ฅผ ๋ค์ด, 'ํจํค์ง๋ฅผ ์ด๋ป๊ฒ ๋ง๋ค ๊ฒ์ธ๊ฐ?' ๋๋ 'ํ์ผ๋ค์ ์ด๋ ๋๋ ํ ๋ฆฌ์ ์์น์ํฌ ๊ฒ์ธ๊ฐ?'์ ๋ํ ์ ๋ณด๋ ์ฃผ์์ ํฌํจ๋์ด์๋ ์๋๋ค.
์ค์ํ๊ฑฐ๋ ์ฝ๋๋ง์ผ๋ก๋ ๋ช ํํ์ง ์์ ํ๋ก๊ทธ๋จ ์ค๊ณ์ ๋ํ ์ถ๊ฐ ์ค๋ช ์ ํฌํจํ๋ ๊ฒ์ ์ ์ ํ์ง๋ง, ๊ทธ๋ฌ๋ ์ฝ๋ ์์ ์ด๋ฏธ ํํ๋์ด ์๋ ์ค๋ณต ์ ๋ณด๋ ํผํด์ผ ํ๋ค. ์ค๋ณต๋ ์ฃผ์์ ์์ฑํ๋๋ฐ ๋ง์ ์๊ฐ์ ํ๋นํด์ ๊ณํ๋ ์๊ฐ์์ ํ๋ก๊ทธ๋จ์ ์์ฑํ์ง ๋ชปํ๋ ๊ฒฝ์ฐ๋ ๋ฐ์ํ๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฝ๋๊ฐ ๊ณ์ ๋ฐ์ ํ๋ฉด ๋์ด์์ ์ ํจํ์ง ์์ ๊ฒ ๊ฐ์ ์ ๋ณด๋ค์ ์ฃผ์์์ ์ ์ธํ๋ ๊ฒ์ด ๋ ๋์ ๋ฐฉ๋ฒ์ด๋ค.
* ๋๋ก๋ ์ฝ๋์ ๋ํ ์ฃผ์์ด ๋ง์ด ํ์ํ๋ค๋ ๊ฒ์ ์ฝ๋์ ํ์ง์ด ์ข์ง ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. ์ฃผ์์ ์ถ๊ฐํด์ผ ํ๋ค๊ณ ๋๋ ๋, ์ฝ๋๋ฅผ ์ข ๋ ๋ช ํํ๊ฒ ๋ค์ ์์ฑํ๋ ๊ฒ์ ๊ณ ๋ คํด ๋ณด๋ ๊ฒ์ด ์ข๋ค.
* ์ฃผ์์ ๋ณํ(*) ๋๋ ๋ค๋ฅธ ๋ฌธ์๋ฅผ ์ฌ์ฉํ์ฌ ๊ทธ๋ฆฐ ํฐ ์ฌ๊ฐํ์ ๋ฃ๋ ๋ฐฉ๋ฒ์ ํผํ๋๋ก ํ์.
* ์ฃผ์์ ํผ ํผ๋(form-feed: ํ๋ฆฐํฐ์์ ์ฉ์ง ๋ฐ๊ฟ)๋ ๋ฐฑ์คํ์ด์ค(backspace)์ ๊ฐ์ ํน์ ๋ฌธ์๋ฅผ ํฌํจํด์๋ ์ ๋๋ค.
5. 1 ๊ตฌํ ์ฃผ์
ํ๋ก๊ทธ๋จ์ ๋ค์๊ณผ ๊ฐ์ 4๊ฐ์ง ํ์์ ๊ตฌํ ์ฃผ์์ ํฌํจํ ์ ์๋ค.
- ๋ธ๋ก(Block) ์ฃผ์
- ํ ์ค(Single-Line) ์ฃผ์
- ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์
- ์ค ๋(End-Of-Line) ์ฃผ์
5. 1. 1 ๋ธ๋ก(Block) ์ฃผ์
๋ธ๋ก ์ฃผ์์ ํ์ผ, ๋ฉ์๋, ์๋ฃ๊ตฌ์กฐ, ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ค๋ช ์ ์ ๊ณตํ ๋ ์ฌ์ฉ๋๋ค. ๋ธ๋ก ์ฃผ์์ ๊ฐ๊ฐ์ ํ์ผ์ด ์์๋ ๋์ ๋ฉ์๋ ์ ์ ์ฌ์ฉ๋๋ค. ๋ํ ๋ฉ์๋ ์์์์ ๊ฐ์ด ๋ค๋ฅธ ์ฅ์์์ ์ฌ์ฉ๋ ์๋ ์๋ค. ๋ฉ์๋ ์์ ์กด์ฌํ๋ ๋ธ๋ก ์ฃผ์์ ์ฃผ์์ด ์ค๋ช ํ๋ ์ฝ๋์ ๊ฐ์ ๋จ์๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํด์ผํ๋ค.
๋ธ๋ก ์ฃผ์์ ๋ค๋ฅธ ์ฝ๋๋ค๊ณผ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ์ฒ์ ํ ์ค์ ๋น์ฐ๊ณ ์ฌ์ฉํ๋ค.
/*
* ์ฌ๊ธฐ์ ๋ธ๋ก ์ฃผ์์ ์์ฑํ๋ค.
*/
๋ธ๋ก ์ฃผ์์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ค์ ๊ณ ์น์ง ๋ชปํ๋๋ก ํ๊ธฐ ์ํ ํน๋ณํ ๋ธ๋ก ์ฃผ์์ /*- ์ผ๋ก ์์ํ ์ ์๋ค.
/*-
* ์ฌ๊ธฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ๋ฌด์ํ๋ ํน๋ณํ
* ๋ธ๋ก ์ฃผ์์ ์์ฑํ๋ค.
*
* one
* two
* three
*/
5. 1. 2 ํ ์ค(Single-Line) ์ฃผ์
์งง์ ์ฃผ์์ ๋ค๋ฐ๋ผ ์ค๋ ์ฝ๋์ ๊ฐ์ ๋์ผํ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ ํ ์ค๋ก ์์ฑํ ์ ์๋ค. ๋ง์ฝ ์ฃผ์์ด ํ ์ค์ ๋ค ๋ค์ด๊ฐ์ง ์๋๋ค๋ฉด, ๋ธ๋ก ์ฃผ์ ํ์์ ๋ฐ๋ผ์ผ ํ๋ค. ํ ์ค ์ฃผ์์ ๋น ์ค๋ก ์์๋์ด์ผ ํ๋ค.
if (condition) {
/* ์ด ์กฐ๊ฑด์ ๋ง์กฑํ๋ฉด ์คํ๋๋ค. */
...
}
5. 1. 3 ๊ผฌ๋ฆฌ(Trailing) ์ฃผ์
์์ฃผ ์งง์ ์ฃผ์์ด ํ์ํ ๊ฒฝ์ฐ ์ฃผ์์ด ์ค๋ช ํ๋ ์ฝ๋์ ๊ฐ์ ์ค์ ์์ฑํ๋ค. ํ์ง๋ง ์ค์ ์ฝ๋์๋ ๊ตฌ๋ถ๋ ์ ์๋๋ก ์ถฉ๋ถํ ๋ฉ๋ฆฌ ๋จ์ด๋จ๋ ค์ผ ํ๋ค.
if (a == 2) {
return TRUE; /* ํน๋ณํ ๊ฒฝ์ฐ */
} else {
return isPrime(a); /* a ๊ฐ ํ์์ธ ๊ฒฝ์ฐ */
}
5. 1. 4 ์ค ๋(End-Of-Line) ์ฃผ์
์ฃผ์ ๊ธฐํธ // ๋ ํ ์ค ๋ชจ๋๋ฅผ ์ฃผ์ ์ฒ๋ฆฌํ๊ฑฐ๋ ํ ์ค์ ์ผ๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํด์ผ ํ ๋ ์ฌ์ฉํ ์ ์๋ค. ๊ธด ๋ด์ฉ์ ์ฃผ์์ ํฌํจํ๊ธฐ ์ํด์ ์ฐ์๋๋ ์ฌ๋ฌ ์ค์ ์ด ์ฃผ์์ ์ฌ์ฉํ๋ ๊ฒ์ ์๋์ง๋ง, ์ด๋ค ์ฝ๋์ ์ผ๋ถ๋ถ์ ์ฃผ์ ์ฒ๋ฆฌํ๊ธฐ ์ํด์ ์ฌ๋ฌ ์ค์ ์ฐ์ํด์ ์ฌ์ฉํ๋ ๊ฒ์ ํ๋ฝ๋๋ค.
if (foo > 1) {
// double-flip์ ์คํํ๋ค.
...
}
else {
return false; // ์ด์ ๋ฅผ ์ฌ๊ธฐ์ ์ค๋ช
ํ๋ค.
}
//if (bar > 1) {
//
// // double-flip์ ์คํํ๋ค.
// ...
//}
//else {
// return false;
//}
5. 2 ๋ฌธ์ํ(Documentation) ์ฃผ์
* ์ฌ๊ธฐ์ ๋์ค๋ ์ฃผ์๋ค์ ์๋ "11์ฅ 1์ ์๋ฐ ์์ค ํ์ผ ์์ " ๋ฅผ ์ฐธ๊ณ ํ๊ธฐ ๋ฐ๋๋ค.
๋ฌธ์ํ ์ฃผ์์ ๋ค์ 5๊ฐ์ง๋ฅผ ์ค๋ช ํ๋ค.
- ์๋ฐ ํด๋์ค
- ์ธํฐํ์ด์ค
- ์์ฑ์
- ๋ฉ์๋
- ํ๋
๊ฐ๊ฐ์ ๋ฌธ์ํ ์ฃผ์์ ์ฃผ์ ๊ฒฝ๊ณ ๊ธฐํธ์ธ /** ... */ ์์ผ๋ก ๋ค์ด๊ฐ๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๊ฐ์ ๋ฌธ์ํ ์ฃผ์์ ํด๋์ค, ์ธํฐํ์ด์ค ๊ทธ๋ฆฌ๊ณ ๋ฉค๋ฒ ๋น ํ๋์ฉ ๊ฐ์ง๋ค. ๋ฌธ์ํ ์ฃผ์์ ์ ์ธ ๋ฐ๋ก ์ ์ ๋์์ผ ํ๋ค. ๋ค์ ์์ ๋ฅผ ์ดํด๋ณด์
/**
* Example ํด๋์ค๋ ...
*/
public class Example { ...
์ฒ์ ๋์ค๋ ํด๋์ค์ ์ธํฐํ์ด์ค๋ค์ ๋ค์ฌ์ฐ์ง ์๋ ๋ฐ๋ฉด์ ๊ทธ๋ค์ ๋ฉค๋ฒ๋ค์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค. ํด๋์ค์ ๋ํ ๋ฌธ์ํ ์ฃผ์(/**)์ ์ฒซ ๋ฒ์งธ ์ค์ ๋ค์ฌ์ฐ์ง ์๋๋ค. ๊ทธ ๋ค์์ ๋์ค๋ ๋ฌธ์ํ ์ฃผ์์ ๋ณํ๋ฅผ ์์ง์ผ๋ก ๋ง์ถ๊ธฐ ์ํด ๊ฐ๊ฐ 1๊ฐ์ ๋น ์นธ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค. ์์ฑ์๋ฅผ ํฌํจํ ๋ฉค๋ฒ๋ค์ ๋ฌธ์ํ ์ฃผ์ ์ฒซ ์ค์์๋ 4๊ฐ์ ๋น ์นธ์ ๋ค์ฌ์ฐ๊ธฐ ํ๊ณ , ๊ทธ ์ดํ์๋ 5๊ฐ์ ๋น ์นธ์ผ๋ก ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
๋ง์ฝ ํด๋์ค, ์ธํฐํ์ด์ค, ๋ณ์ ๋๋ ๋ฉ์๋์ ๋ํ ์ด๋ค ์ ๋ณด๋ฅผ ์ ๊ณตํ๊ณ ์ถ์ง๋ง ๋ฌธ์ํ ์ฃผ์์ ์ด์ธ๋ฆฌ์ง ์๋๋ค๊ณ ์๊ฐ๋๋ค๋ฉด, ํด๋์ค ์ ์ธ ๋ฐ๋ก ํ์ ๋ธ๋ก ์ฃผ์("5์ฅ 1.1์ ๋ธ๋ก(Block) ์ฃผ์") ๋๋ ํ ์ค ์ฃผ์("5์ฅ 1.2์ ํ ์ค(Single-Line) ์ฃผ์")์ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด, ํด๋์ค์ ๊ตฌํ์ ๋ํ ์ธ๋ถ ์ฌํญ๋ค์ ํด๋์ค์ ๋ํ ๋ฌธ์ํ ์ฃผ์์ด ์๋๋ผ, ํด๋์ค ์ ์ธ๋ฌธ ๋ค์์ ๋ธ๋ก ์ฃผ์์ ์ฌ์ฉํด์ผ ํ๋ค.
์๋ฐ๋ ๋ฌธ์ํ ์ฃผ์์ ์ฃผ์ ์ดํ์ ์ฒ์ ๋์ค๋ ์ ์ธ๋ฌธ๊ณผ ์ฐ๊ฒฐ์ํค๊ธฐ ๋๋ฌธ์ ๋ฌธ์ํ ์ฃผ์์ ๋ฉ์๋ ๋๋ ์์ฑ์ ๊ตฌํ ์์ ์์นํด์๋ ์ ๋๋ค.
6. ์ ์ธ
6. 1 ํ ์ค๋น ์ ์ธ๋ฌธ์ ์
ํ ์ค์ ํ๋์ ์ ์ธ๋ฌธ์ ์ฐ๋ ๊ฒ์ด ์ฃผ์๋ฌธ ์ฐ๋ ๊ฒ์ ์ฝ๊ฒ ํด์ฃผ๊ธฐ ๋๋ฌธ์ ํ ์ค์ ํ๋์ ์ ์ธ๋ฌธ์ ์ฐ๋ ๊ฒ์ด ์ข๋ค.
int level; // ๋ค์ฌ์ฐ๊ธฐ ๋จ์
int size; // ํ
์ดํด ํฌ๊ธฐ
์์ ๊ฐ์ด ์ฐ๋ ๊ฒ์ด ์๋์ ๊ฐ์ด ์ฐ๋ ๊ฒ๋ณด๋ค ์ข๋ค.
int level, size;
๊ฐ์ ์ค์ ์๋ก ๋ค๋ฅธ ํ์ ์ ์ ์ธํ๋ฉด ์ ๋๋ค.
int foo, fooarray[]; //์ ๋ ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
์์ ์์ ๋ ํ์ ๊ณผ ๋ณ์ ์ด๋ฆ์ฌ์ด์ ํ๋์ space๋ฅผ ๋์๋ค. ๋ ๋ค๋ฅธ ์ฌ์ฉ ๊ฐ๋ฅํ ๋ฐฉ๋ฒ์ ๋ค์๊ณผ ๊ฐ์ด ํญ์ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค.
int level; // ๋ค์ฌ์ฐ๊ธฐ ๋จ์
int size; // ํ
์ด๋ธ ํฌ๊ธฐ
Object currentEntry; // ํ
์ด๋ธ์์ ํ์ฌ ์ ํ๋ ๋ฐ์ดํฐ
6. 2 ์ด๊ธฐํ
์ง์ญ ๋ณ์์ ๊ฒฝ์ฐ, ์ง์ญ ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐํ ํ๋ ๊ฒ์ด ์ข๋ค. ๋ณ์์ ์ด๊ธฐํ ๊ฐ์ด ๋ค๋ฅธ ๊ณ์ฐ์ ์ํด์ ๊ฒฐ์ ๋๋ ๊ฒฝ์ฐ๋ผ๋ฉด, ๋ณ์๋ฅผ ์ ์ธํ ๋ ์ด๊ธฐํ ํ์ง ์์๋ ๊ด์ฐฎ๋ค.
6. 3 ๋ฐฐ์น
์ ์ธ์ ๋ธ๋ก์ ์์์ ์์นํด์ผ ํ๋ค(๋ณดํต ๋ธ๋ก์ ์ค๊ดํธ "{ }" ๋ก ๋๋ฌ์ธ์ธ ์ฝ๋๋ฅผ ์๋ฏธํ๋ค). ๋ณ์๋ฅผ ์ฒ์ ์ฌ์ฉํ ๋๊น์ง ๋ณ์์ ์ ์ธ์ ๋ฏธ๋ฃจ์ง ๋ง์. ์ด๋ฌํ ๊ฒฝ์ฐ ๋ถ์ฃผ์ํ ํ๋ก๊ทธ๋๋จธ๋ค์ ํผ๋์ ๋น ์ง ์ ์๊ณ , ์์ญ๋ด์์ ์ฝ๋๋ฅผ ์ด๋ํด์ผ ํ๋ ๊ฒฝ์ฐ์ ๋ฌธ์ ๋ฅผ ์ผ๊ธฐ์ํฌ ์ ์๋ค.
void myMethod() {
int int1 = 0; // ๋ฉ์๋ ๋ธ๋ก์ ์์
if (condition) {
int int2 = 0; // "if" ๋ธ๋ก์ ์์
...
}
}
์ด๋ฌํ ์์น์๋ ์์ธ๋ ์กด์ฌํ๋ค. ๊ทธ ์ค ํ๋๊ฐ for ๋ฌธ์์ ์ ์ธํ๋ ๋ฐ๋ณต๋ฌธ์ ์ํ ์ธ๋ฐ์ค์ด๋ค.
for (int i = 0; i < maxLoops; i++) { ... }
์์ ์์ญ์์ ์ ์ธ๋ ๊ฒ์ ์จ๊ธฐ๊ธฐ ์ํด์ ๋ธ๋ก์ ์ฒ์ ๋ถ๋ถ์์ ๋ค์ ์ ์ธํ๋ ๊ฒ์ ํผํด์ผ ํ๋ค. ์๋ฅผ๋ค์ด, ๋ธ๋ก ์์ ๋ธ๋ก์์ ๋์ผํ ๋ณ์ ์ด๋ฆ์ ์ฌ์ฉํด์ ์ ์ธํ์ง ๋ง์์ผ ํ๋ค.
int count;
...
myMethod() {
if (condition) {
int count = 0; // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง ๊ฒ!
...
}
...
}
6. 4 ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ธ
์๋ฐ ํด๋์ค์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธํ ๋, ๋ค์ 3๊ฐ์ง ์์น์ ๋ฐ๋ฅด๋๋ก ํ์
- ๋ฉ์๋ ์ด๋ฆ๊ณผ ๊ทธ ๋ฉ์๋์ ํ๋ผ๋ฏธํฐ ๋ฆฌ์คํธ์ ์์์ธ ๊ดํธ "(" ์ฌ์ด์๋ ๋น ๊ณต๊ฐ์ด ์์ด์ผ ํ๋ค.
- ์ฌ๋ ์ค๊ดํธ "{" ๋ ํด๋์ค/์ธํฐํ์ด์ค/๋ฉ์๋ ์ ์ธ๊ณผ ๋์ผํ ์ค์ ๋์ ์ฌ์ฉํ์
- ๋ซ๋ ์ค๊ดํธ "}" ๋ ์ฌ๋ ์ค๊ดํธ "{" ํ์ ๋ฐ๋ก ๋์์ผ ํ๋ null ๋ฌธ์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋, ์ฌ๋ ๋ฌธ์ฅ๊ณผ ๋์ผํ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ ์๋ก์ด ์ค์์ ์ฌ์ฉํ์
- ๋ฉ์๋๋ค์ ๊ตฌ๋ถํ๊ธฐ ์ํด์ ๊ฐ ๋ฉ์๋๋ค ์ฌ์ด์๋ ํ ์ค์ ๋น์ฐ๋๋ก ํ์
class Sample extends Object {
int ivar1;
int ivar2;
Sample(int i, int j) {
ivar1 = i;
ivar2 = j;
}
int emptyMethod() {}
...
}
7. ๋ฌธ(Statements)
7. 1 ๊ฐ๋จํ ๋ฌธ
๊ฐ๊ฐ์ ์ค์๋ ์ต๋ํ ํ๋์ ๋ฌธ(statement)๋ง ์ฌ์ฉํ๋๋ก ํ๋ค.
argv++; // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
argc--; // ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
argv++; argc--; // ์ด๋ ๊ฒ ์์ฑํ๋ ๊ฒ์ ํผํด๋ผ
7. 2 ๋ณตํฉ๋ฌธ
๋ณตํฉ๋ฌธ์ ์ค๊ดํธ "{ statements }" ๋ก ๋๋ฌ์ธ์ฌ์ง ๋ฌธ๋ค์ ๋ฆฌ์คํธ๋ฅผ ํฌํจํ๋ ๋ฌธ์ด๋ค. ์ด ๋ฆฌ์คํธ์ ํฌํจ๋ ์ ์๋ ๋ฌธ๋ค์ ๋ค์ ์ ์์๋ถํฐ ํ๋ ํ๋ ์๋ฅผ๋ค์ด ์ค๋ช ํ๊ฒ ๋ค. ๋ค์ ์์น์ ๋ฐ๋ฅด์
- ๋๋ฌ์ธ์ฌ์ง ๋ฌธ๋ค์ ๋ณตํฉ๋ฌธ๋ณด๋ค ํ ๋จ๊ณ ๋ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
- ์ฌ๋ ์ค๊ดํธ "{" ๋ ๋ณตํฉ๋ฌธ์ ์์ํ๋ ์ค์ ๋ง์ง๋ง์ ์์นํด์ผ ํ๋ค.
- ๋ซ๋ ์ค๊ดํธ "}" ๋ ์๋ก์ด ์ค์ ์จ์ผํ๊ณ , ๋ณตํฉ๋ฌธ์ ์์๊ณผ ๊ฐ์ ๋ค์ฌ์ฐ๊ธฐ๋ฅผ ํ๋ค.
- ์ค๊ดํธ๋ค์ด if-else ๋ฌธ์ด๋ for ๋ฌธ ๊ฐ์ ์ ์ด ๊ตฌ์กฐ์ ์ผ๋ถ๋ถ์ผ๋ก ์ฌ์ฉ๋์ด์ง ๋์๋ ์ค๊ดํธ๋ค์ด ๋ชจ๋ ๋ฌธ๋ค(๋จ ํ๋์ ๋ฌธ์ผ ๊ฒฝ์ฐ์๋)์ ๋๋ฌ์ธ๋๋ฐ ์ฌ์ฉ๋์ด์ ธ์ผ ํ๋ค(์ด๋ ๊ฒ ์ฌ์ฉํ๋ ๊ฒ์ด ์ค๊ดํธ๋ฅผ ๋ซ๋ ๊ฒ์ ์์ด๋ฒ๋ฆฌ๋ ๊ฒ ๋๋ฌธ์ ๋ฐ์ํ๋ ๋ฒ๊ทธ๋ฅผ ๋ง๋ค์ง ์๊ณ , ๋ฌธ์ ์ถ๊ฐํ๋ ๊ฒ์ ํฐ ๋์์ ์ค๋ค).
7. 3 return ๋ฌธ
๊ฐ์ ๋ฐํํ๋ return ๋ฌธ์ ํน๋ณํ ๋ฐฉ๋ฒ์ผ๋ก ๋ ํ์คํ return ๊ฐ์ ํํํ๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ๊ดํธ๋ฅผ ์ฌ์ฉํ์ง ์๋ ๊ฒ์ด ์ข๋ค.
return;
return myDisk.size();
return (size ? size : defaultSize);
7. 4 if, if-else, if else-if else ๋ฌธ
if-else ๋ฌธ์ ์ฌ์ฉํ ๋๋ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
if (condition) {
statements;
}
if (condition) {
statements;
} else {
statements;
}
if (condition) {
statements;
} else if (condition) {
statements;
} else {
statements;
}
* if ๋ฌธ์ ํญ์ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํ๋ค. ๋ค์๊ณผ ๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ ์ ์๋ ์ํฉ์ ํผํด์ผ ํ๋ค.
if (condition) // ์ด๋ ๊ฒ ์ค๊ดํธ {}๋ฅผ ์๋ตํด์ ์ฌ์ฉํ์ง ๋ง์
statement;
7. 5 for ๋ฌธ
for ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
for (initialization; condition; update) {
statements;
}
๋น for ๋ฌธ(๋ชจ๋ ์์ ์ด initialization, condition, update ์์ ์๋ฃ๋๋)์ ๋ค์๊ณผ ๊ฐ์ ํํ๋ฅผ ๊ฐ์ ธ์ผ ํ๋ค.
for (initialization; condition; update);
for ๋ฌธ์ initialization ๋๋ update ๋ถ๋ฌธ์์ ์ฝค๋ง(,) ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ ๋์๋ ์ธ๊ฐ ์ด์์ ๋ณ์๋ค์ ์ฌ์ฉํ๋ ๋ณต์ก์ฑ์ ํผํด์ผ ํ๋ค. ๋ง์ฝ ํ์ํ๋ค๋ฉด, for ๋ฌธ ์ด์ ์ ๋ฌธ์ ๋ถ๋ฆฌ์์ผ ์ฌ์ฉ(initialization์ ์ ๊ฒฝ์ฐ)ํ๊ฑฐ๋ for ๋ฌธ์ ๋ง์ง๋ง์ ๋ฌธ์ ๋ถ๋ฆฌ์์ผ ์ฌ์ฉ(update์ ์ ๊ฒฝ์ฐ)ํ๋ค.
7. 6 while ๋ฌธ
while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
while (condition) {
statements;
}
๋น while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
while (condition);
7. 7 do-while ๋ฌธ
do-while ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
do {
statements;
} while (condition);
7. 8 switch ๋ฌธ
switch ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
switch (condition) {
case ABC:
statements;
/* ๋ค์์ค๋ก ๊ณ์ ์งํํ๋ค. */
case DEF:
statements;
break;
case XYZ:
statements;
break;
default:
statements;
break;
}
๋ชจ๋ case๋ฅผ ์ํํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ break ๋ฌธ์ ์ฌ์ฉํ์ง ์์ผ๋ฉด ๋๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ ์์ ์์ ์ฝ๋์ ์ฒซ๋ฒ์งธ case์์ ๋ณผ์ ์๋ค.
๋ชจ๋ switch ๋ฌธ์ default case๋ฅผ ํฌํจํด์ผ ํ๋ค. ์์ ์์ ์ ๊ฐ์ด, ์ด๋ค ๊ฒฝ์ฐ์ default case์์ break๋ ์ค๋ณต์ ์ด์ง๋ง, ์ดํ์ ๋ ๋ค๋ฅธ case๊ฐ ์ถ๊ฐ๋์ด์ง ๊ฒฝ์ฐ ์๋ฌ๋ฅผ ๋ฐฉ์งํ ์ ์๋ค.
7. 9 try-catch ๋ฌธ
try-catch ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์ด ์์ฑํ๋ค.
try {
statements;
} catch (ExceptionClass e) {
statements;
}
try-catch ๋ฌธ์ try ๋ธ๋ก์ด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ๋๋ ์ง, ์๋๋ฉด ์ค๊ฐ์ ์๋ฌ๊ฐ ๋ฐ์ํ๋ ์ง์ ์๊ด์์ด ์คํ๋์ด์ผ ํ๋ ๋ถ๋ถ์ ์ถ๊ฐํ๊ธฐ ์ํด์ finally ๋ถ๋ถ์ ์ฌ์ฉํ ์ ์๋ค.
try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}
8. ๋น ๊ณต๊ฐ(White Space)
8. 1 ํ ์ค ๋์ฐ๊ธฐ(Blank Lines)
ํ ์ค์ ๋์ฐ๊ณ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด, ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๊ณ๊ฐ ์๋ ์ฝ๋๋ค์ ์ฝ๊ฒ ๊ตฌ๋ถํ ์ ์๊ธฐ ๋๋ฌธ์ ์ฝ๋์ ๊ฐ๋ ์ฑ(readability)์ ํฅ์์ํจ๋ค.
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ํ ์ค์ ๋์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ๋ฉ์๋๋ค ์ฌ์ด์์
- ๋ฉ์๋ ์์์์ ์ง์ญ ๋ณ์์ ๊ทธ ๋ฉ์๋์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ฅ ์ฌ์ด์์
- ๋ธ๋ก(Block) ์ฃผ์ ๋๋ ํ ์ค(Single-Line) ์ฃผ์ ์ด์ ์
- ๊ฐ๋ ์ฑ์ ํฅ์์ํค๊ธฐ ์ํ ๋ฉ์๋ ๋ด๋ถ์ ๋ ผ๋ฆฌ์ ์ธ ์น์ ๋ค ์ฌ์ด์
๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ ์ค์ ๋์ด์ ์ฝ๋๋ฅผ ์์ฑํ๋ค.
- ์์ค ํ์ผ์ ์น์ ๋ค ์ฌ์ด์์
- ํด๋์ค์ ์ธํฐํ์ด์ค์ ์ ์ ์ฌ์ด์์
8. 2 ๊ณต๋ฐฑ(Blank Spaces)
๊ณต๋ฐฑ์ ๋ค์๊ณผ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๋ค.
- ๊ดํธ์ ํจ๊ป ๋ํ๋๋ ํค์๋๋ ๊ณต๋ฐฑ์ผ๋ก ๋๋์ด์ผ ํ๋ค.
while (true) {
...
}
- ๋ฉ์๋ ์ด๋ฆ๊ณผ ๋ฉ์๋์ ์ฌ๋ ๊ดํธ ์ฌ์ด์ ๊ณต๋ฐฑ์ด ์ฌ์ฉ๋์ด์๋ ์ ๋๋ค๋ ๊ฒ์ ๋ช ์ฌํ์. ์ด๋ ๊ฒ ํ๋ ๊ฒ์ ๋ฉ์๋ ํธ์ถ๊ณผ ํค์๋๋ฅผ ๊ตฌ๋ณํ๋๋ฐ ๋์์ ์ค๋ค.
- ๊ณต๋ฐฑ์ ์ธ์(argument) ๋ฆฌ์คํธ์์ ์ฝค๋ง ์ดํ์ ๋ํ๋์ผ ํ๋ค.
- .์ ์ ์ธํ ๋ชจ๋ ์ดํญ(binary) ์ฐ์ฐ์๋ ์ฐ์ฐ์๋ค๊ณผ๋ ๊ณต๋ฐฑ์ผ๋ก ๋ถ๋ฆฌ๋์ด์ ธ์ผ ํ๋ค. ๊ณต๋ฐฑ์ ๋จํญ ์ฐ์ฐ์(++ ํน์ --)์ ๊ฒฝ์ฐ์๋ ์ฌ์ฉํด์๋ ์ ๋๋ค.
a += c + d;
a = (a + b) / (c * d);
while (d++ = s++) {
n++;
}
printSize("size is " + foo + "\n");
- for ๋ฌธ์์ ์ฌ์ฉํ๋ ์ธ ๊ฐ์ ์(expression) ๋ค์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ๋๋์ด์ผ ํ๋ค.
for (expr1; expr2; expr3)
- ๋ณ์์ ํ์ ์ ๋ณํํ๋ ์บ์คํธ(cast)์ ๊ฒฝ์ฐ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ผ ํ๋ค.
myMethod((byte) aNum, (Object) x);
myMethod((int) (cp + 5), ((int) (i + 3)) + 1);
9. ๋ช ๋ช (Naming) ๊ท์น
๋ช ๋ช ๊ท์น, ์ฆ ์ด๋ฆ์ ์ ํ๋ ๊ท์น์ ํ๋ก๊ทธ๋จ์ ๋ ์ฝ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค์ผ๋ก์จ ๋ ์ดํดํ๊ธฐ ์ฝ๊ฒ ๋ง๋ค์ด ์ค๋ค. ๋ํ ์๋ณ์(identifier)๋ฅผ ํตํด์ ๊ธฐ๋ฅ์ ๋ํ ์ ๋ณด๋ ์ป์ ์ ์๋ค. ์๋ฅผ ๋ค์๋ฉด, ๊ทธ๊ฒ์ด ์์์ธ์ง ํจํค์ง์ธ์ง ํด๋์ค์ธ์ง๋ฅผ ์ ์ ์๋๋ก ๋์์ค๋ค. ์ด๋ฌํ ์ ๋ณด๋ ์ฝ๋๋ฅผ ์ดํดํ๋๋ฐ ํฐ ๋์์ด ๋๋ค.
๋ณธ ์ฅ์์ ์๊ฐํ ๋ช ๋ช ๊ท์น์ ์๋ณ์ ํ์ ์ ๋ค์ 6๊ฐ์ง์ด๋ค.
- Packages
- Classes
- Interfaces
- Methods
- Variables
- Constants
9. 1 Packages
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํจํค์ง ์ด๋ฆ์ ์ต์์ ๋ ๋ฒจ์ ํญ์ ASCII ๋ฌธ์์ ํฌํจ๋์ด ์๋ ์๋ฌธ์๋ก ์ฐ๊ณ , ๊ฐ์ฅ ๋์ ๋ ๋ฒจ์ ๋๋ฉ์ธ ์ด๋ฆ ์ค ํ๋์ด์ด์ผ ํ๋ค.
- ํ์ฌ๋ com, edu, gov, mil, net, org, ๋๋ 1981๋ ISO Standard 316์ ๋ช ์๋ ์์ด ๋ ๋ฌธ์๋ก ํํ๋๋ ๋๋ผ ๊ตฌ๋ณ ์ฝ๋๊ฐ ์ฌ์ฉ๋๋ค.
- ํจํค์ง ์ด๋ฆ์ ๋๋จธ์ง ๋ถ๋ถ์ ์กฐ์ง ๋ด๋ถ์ ๋ช ๋ช ๊ท์น์ ๋ฐ๋ฅด๋ฉด ๋๋ค. ์ด๋ฌํ ๊ท์น์ ๋ฐ๋ผ ๋ง๋ค์ด์ง ์ด๋ฆ์ ๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ์์ ๋๋ ํ ๋ฆฌ ์ด๋ฆ์ผ๋ก๋ ์ฌ์ฉ๋๋ค.
- ์๋ฅผ ๋ค๋ฉด ๋ถ์๋ช , ํ๋ช , ํ๋ก์ ํธ๋ช , ์ปดํจํฐ ์ด๋ฆ, ๋๋ ๋ก๊ทธ์ธ ์ด๋ฆ ๋ฑ์ด๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- com.sun.eng
- com.apple.quicktime.v2
- edu.cmu.cs.bovik.cheese
9. 2 Classes
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋์ค ์ด๋ฆ์ ๋ช ์ฌ์ด์ด์ผ ํ๋ฉฐ, ๋ณตํฉ ๋จ์ด์ผ ๊ฒฝ์ฐ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ ๋๋ฌธ์์ด์ด์ผ ํ๋ค.
- ํด๋์ค ์ด๋ฆ์ ๊ฐ๋จํ๊ณ ๋ช ์์ ์ผ๋ก ์์ฑํด์ผ ํ๋ค.
- ์์ ํ ๋จ์ด๋ฅผ ์ฌ์ฉํ๊ณ ๋ ๋ฌธ์์ด์ ์ฝ์ด๋ ํผํ๋๋ก ํ๋ค(๋ง์ฝ, ์ฝ์ด๊ฐ URL์ด๋ HTML๊ณผ ๊ฐ์ด ๋ ๋ง์ด ,๋ ๋๊ฒ ์ฌ์ฉ๋๊ณ ์๋ค๋ฉด ์ฝ์ด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ๋ ๊ด์ฐฎ๋ค).
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- class Raster;
- class ImageSprite;
9. 3 Interfaces
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์ธํฐํ์ด์ค ์ด๋ฆ๋ ํด๋์ค ์ด๋ฆ๊ณผ ๊ฐ์ ๋๋ฌธ์ ์ฌ์ฉ ๊ท์น์ ์ ์ฉํด์ผ ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- interface RasterDelegate;
- interface Storing;
9. 4 Methods
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ฉ์๋์ ์ด๋ฆ์ ๋์ฌ์ด์ด์ผ ํ๋ฉฐ, ๋ณตํฉ ๋จ์ด์ผ ๊ฒฝ์ฐ ์ฒซ ๋จ์ด๋ ์๋ฌธ์๋ก ์์ํ๊ณ ๊ทธ ์ดํ์ ๋์ค๋ ๋จ์ด์ ์ฒซ ๋ฌธ์๋ ๋๋ฌธ์๋ก ์ฌ์ฉํด์ผ ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- run();
- runFast();
- getBackground();
9. 5 Variables
๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ๋ณ์ ์ด๋ฆ์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ์๋ฌธ์๋ก ์์ํ๊ณ , ๊ฐ๊ฐ์ ๋ด๋ถ ๋จ์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์๋ ๋๋ฌธ์๋ก ์์ํด์ผ ํ๋ค.
- ๋ณ์ ์ด๋ฆ์ด ์ธ๋๋ฐ (_) ๋๋ ๋ฌ๋ฌ ํ์ ๋ฌธ์๋ก ์์ํ๋ ๊ฒ์ด ํ์ฉ๋๊ธฐ๋ ํ์ง๋ง, ์ด ๋ฌธ์๋ค๋ก ์์ํ์ง ์๋๋ก ์ฃผ์ํ์.
- ์ด๋ฆ์ ์งง์ง๋ง ์๋ฏธ ์์ด์ผ ํ๋ค.
- ์ด๋ฆ์ ์ ํ์ ๊ทธ ๋ณ์์ ์ฌ์ฉ ์๋๋ฅผ ์์๋ผ ์ ์๋๋ก ์๋ฏธ์ ์ด์ด์ผ ํ๋ค.
- ํ ๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋ณ์ ์ด๋ฆ์ ์์์ ์ผ๋ก๋ง ์ฌ์ฉํ๊ณ ๋ฒ๋ฆด ๋ณ์์ผ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ํผํด์ผ ํ๋ค.
- ๋ณดํต์ ์์ ๋ณ์๋ค์ ์ด๋ฆ์ integer ์ผ ๊ฒฝ์ฐ์๋ i, j, k, m, n์ ์ฌ์ฉํ๊ณ , character ์ผ ๊ฒฝ์ฐ์๋ c, d, e๋ฅผ ์ฌ์ฉํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- int i;
- char c;
- float myWidth;
9. 6 Constants
- ๋ช ๋ช ๊ท์น์ ๋ค์๊ณผ ๊ฐ๋ค.
- ํด๋์ค ์์๋ก ์ ์ธ๋ ๋ณ์๋ค๊ณผ ANSI ์์๋ค์ ์ด๋ฆ์ ๋ชจ๋ ๋๋ฌธ์๋ก ์ฐ๊ณ ๊ฐ๊ฐ์ ๋จ์ด๋ ์ธ๋๋ฐ("_")๋ก ๋ถ๋ฆฌ ํด์ผ ํ๋ค.
- ๋๋ฒ๊น ์ ์ฝ๊ฒ ํ๊ธฐ ์ํด์ ANSI ์์๋ค์ ์ฌ์ฉ์ ์์ ํ๋๋ก ํ๋ค.
์์ ๋ ๋ค์๊ณผ ๊ฐ๋ค.
- static final int MIN_WIDTH = 4;
- static final int MAX_WIDTH = 999;
- static final int GET_THE_CPU = 1;
10. ์ข์ ํ๋ก๊ทธ๋๋ฐ ์ต๊ด
10. 1 ์ธ์คํด์ค ๋ณ์์ ํด๋์ค ๋ณ์๋ฅผ ์ธ๋ถ์ ๋ ธ์ถํ์ง ๋ง๊ณ ๋์ ์ ๊ทผ์ ์ ๊ณต
์ธ์คํด์ค ๋ณ์ ๋๋ ํด๋์ค ๋ณ์๋ฅผ ํฉ๋นํ ์ด์ ์์ด public์ผ๋ก ์ ์ธํ์ง ๋ง์. ์ธ์คํด์ค ๋ณ์๋ค์ ๋ช ์์ ์ผ๋ก ์ ์ธ๋ ํ์๊ฐ ์๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ธ์คํด์ค ๋ณ์๊ฐ public์ผ๋ก ์ ์ธ๋๋ ๊ฒ์ด ์ ์ ํ ๊ฒฝ์ฐ๋ ํด๋์ค ์์ฒด๊ฐ ์ด๋ค ๋์(behavior)์ ๊ฐ์ง์ง ์๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ์ผ(data structure) ๊ฒฝ์ฐ์ด๋ค. ๋ค์ ๋งํด์ ๋ง์ฝ class ๋์ struct๋ฅผ ์ฌ์ฉํด์ผ ํ๋ ๊ฒฝ์ฐ๋ผ๋ฉด(๋ง์ฝ Java๊ฐ struct๋ฅผ ์ง์ํ๋ค๋ฉด) class์ ์ธ์คํด์ค ๋ณ์๋ค์ public์ผ๋ก ์ ์ธํ๋ ๊ฒ์ด ์ ํฉํ๋ค.
10. 2 ํด๋์ค ๋ณ์์ ํด๋์ค ๋ฉ์๋๋ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ํธ์ถ
ํด๋์ค(static) ๋ณ์ ๋๋ ํด๋์ค ๋ฉ์๋๋ฅผ ํธ์ถํ๊ธฐ ์ํด์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ํผํด์ผ ํ๋ค. ๋์ ์ ํด๋์ค ์ด๋ฆ์ ์ฌ์ฉํด๋ผ
classMethod(); // ์ข์ ์ฌ์ฉ๋ฒ
AClass.classMethod(); // ์ข์ ์ฌ์ฉ๋ฒ
anObject.classMethod(); // ๋์ ์ฌ์ฉ๋ฒ
10. 3 ์ซ์๋ ๋ฐ๋ก ์ฌ์ฉํ์ง ์๊ณ ์ ์ธํด์ ๋ณ์ ์ด๋ฆ์ผ๋ก ์ ๊ทผ
์ซ์ ์์๋ ์นด์ดํธ ๊ฐ์ผ๋ก for ๋ฃจํ์ ๋ํ๋๋ -1, 0, 1์ ์ ์ธํ๊ณ ๋ ์ซ์ ์์ฒด๋ฅผ ์ฝ๋์ ์ฌ์ฉํ์ง ๋ง์
10. 4 ๋ณ์์ ๊ฐ์ ํ ๋นํ ๋ ์ฃผ์ํ ๊ฒ๋ค
- ํ๋์ ๋ฌธ(statement)์์ ๊ฐ์ ๊ฐ์ ์ฌ๋ฌ ๊ฐ์ ๋ณ์๋ค์ ํ ๋นํ์ง ๋ง์(์ด๋ ๊ฒ ํ๋ฉด ์ฝ๊ธฐ๊ฐ ์ด๋ ต๊ฒ ๋๋ค)
fooBar.fChar = barFoo.lchar = 'c'; // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
- ๋น๊ต ์ฐ์ฐ์(equality operator: ==)์ ํผ๋๋๊ธฐ ์ฌ์ด ๊ณณ์ ํ ๋น ์ฐ์ฐ์(assignment operator: =)๋ฅผ ์ฌ์ฉํ์ง ๋ง์
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์ (์๋ฐ๊ฐ ํ์ฉํ์ง ์์)
if (c++ = d++) {
...
}
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
if ((c++ = d++) != 0) {
...
}
- ์คํ์ ์ฑ๋ฅ ํฅ์์ ์ํด์ ํ ๋น๋ฌธ(assignment statement)์์ ๋ ๋ค๋ฅธ ํ ๋น๋ฌธ์ ์ฌ์ฉํ์ง ๋ง์
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
d = (a = b + c) + r;
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
a = b + c;
d = a + r;
10. 5 ๊ทธ ์ธ ์ ๊ฒฝ์จ์ผ ํ ๊ฒ๋ค
10. 5. 1 ๊ดํธ
์ฐ์ฐ์ ์ฐ์ ์์ ๋ฌธ์ ๋ฅผ ํผํ๊ธฐ ์ํด์ ๋ณตํฉ ์ฐ์ฐ์๋ฅผ ํฌํจํ๋ ๊ฒฝ์ฐ์๋ ์์ ๋กญ๊ฒ ๊ดํธ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ์๊ฐ์ด๋ค(์์ฑ์๋ ์ฐ์ฐ์ ์ฐ์ ์์๋ฅผ ํ์คํ๊ฒ ์๊ณ ์๋ค๊ณ ํ ์ง๋ผ๋, ๋ค๋ฅธ ํ๋ก๊ทธ๋๋จธ์๊ฒ๋ ์์ํ ์ ์๋ค๋ ๊ฒ์ ๊ธฐ์ตํ์).
if (a == b && c == d) // ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if ((a == b) && (c == d)) // ์ด๋ ๊ฒ ์ฌ์ฉํ์
10. 5. 2 ๋ฐํ ๊ฐ
ํ๋ก๊ทธ๋จ์ ๊ตฌ์กฐ์ ๋ชฉ์ ์ด ์ผ์นํด์ผ ํ๋ค.
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if (booleanExpression) {
return true;
} else {
return false;
}
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
return booleanExpression;
// ์ด๋ ๊ฒ ์ฌ์ฉํ์ง ๋ง์
if (condition) {
return x;
}
return y;
// ๋ค์๊ณผ ๊ฐ์ด ์จ์ผ ํ๋ค
return (condition ? x : y);
10. 5. 3 ์กฐ๊ฑด ์ฐ์ฐ์ '?' ์ด์ ์ ๋์ค๋ ์(expression)
์ผํญ ์ฐ์ฐ์(ternary operator - ?:) ์์ ? ์ด์ ์ ์ดํญ ์ฐ์ฐ์(binary operator)๋ฅผ ํฌํจํ๋ ์(expression)์ด ์๋ ๊ฒฝ์ฐ์๋, ๊ผญ ๊ดํธ๋ฅผ ์ฌ์ฉํด์ผ ํ๋ค.
(x >= 0) ? x : -x;
11. ์ฝ๋ ์์
11. 1 ์๋ฐ ์์ค ํ์ผ ์์
๋ค์ ์์ ๋ ํ๋์ public class๋ฅผ ๊ฐ์ง๋ ์์ค ํ์ผ์ ์ด๋ป๊ฒ ์์ ํ๋์ง ๋ถ์ฌ์ค๋ค.
* ์๋ฐ์์ ์ฌ์ฉํ๋ interface๋ ๋น์ทํ๊ฒ ๊ตฌ์ฑ๋๋ค.
๋ง์น๋ฉฐ..
๋ณธ ํฌ์คํ ์ ์๋ฌธ์ ์์ ๋ฐํ๋ฏ์ด Java๊ฐ Oracle์ ์ธ์๋๊ธฐ ์ ์ Sun์์ 1999๋ ๋์ ์์ฑ๋ Code Conventions ์ด๋ค. ๊ณต์ ๋ฌธ์๋ ์์ด๋ก ์์ฑ๋์์ผ๋ฉฐ ํ๊ธ ๋ฒ์ญ๋ณธ์ ์ ๊ณตํด์ฃผ์ง ์์ ์์ฌ์ ๋๋ฐ ๊ฐ๊ฒฉ์ค๋ฝ๊ฒ๋..(?) "kwangshin" ๋์ ๋ธ๋ก๊ทธ์์ ๋ฒ์ญ๋ณธ์ ์ฐพ์ ๋ณผ ์ ์์๋ค.
๋ฒ์ญ๋ณธ์ ๋ด์ฉ์ ๊ทธ๋๋ก ํผ์ค๋ฉด ์๋ฃ๋ฅผ ํผ์๋ค๋ ์์ผํจ(์๋ฃ๋ฅผ ๊ฐ๊ณ ์์ผ๋ฉด ๊ณต๋ถ๋ฅผ ์ํด๋ ์ด๋ฏธ ์ด ์ง์์ ๋ด๊ฐ ๊ฐ๊ณ ์๋ค๋?)์ ์ง์ ์ ์ธ ๊ณต๋ถ๋ ์๋ฒฝํ ํ์ง ์์๊ฒ ๊ฐ์ ์ผ์ผํ ํ์ดํ์ ํ๋ฉฐ ์์ฑํด๋ณด์๋ค. ๋ชฉ์ฐจ์ ๋ฒ์ญ๋ ๋งํฌ๋ฅผ ์ฝ๊ฐ ์์ ํ ๋ถ๋ถ์ด ์๋ค. ํ์ง๋ง ์๋ฌธ๊ณผ ํฌ๊ฒ ๋ค๋ฅด์ง ์๊ฒ ์์ฑํด๋ณด์๋ค.
๋ง์ ๋์์ด ๋ฌ๋ค. ์๋ฐ ๊ฐ๋ฐ์๋ผ๋ฉด ์ฒ์ ๊ณต๋ถ๋ฅผ ์์ํ๋ ์์ ์ ํ๋ฒ ์ฏค์ ์๋ ํด์ ๊ณต๋ถํด์ผ ํ๋ค๊ณ ์๊ฐ๋๋ค.
์ถ์ฒ: https://myeonguni.tistory.com/1596 [๋ช ์ฐ๋๋ท์ปด:ํฐ์คํ ๋ฆฌ]
'๐ Study > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ค๋ฒ๋ผ์ด๋ฉ(Overriding) (0) | 2022.03.16 |
---|