๐Ÿ“š Study/Java

java ์ฝ”๋”ฉ ๊ทœ์น™

kkh1902 2022. 9. 18. 14:21
728x90
๋ฐ˜์‘ํ˜•

[์ฝ”๋”ฉ ๊ทœ์น™] ์ž๋ฐ”์ฝ”๋”ฉ ๊ทœ์น™(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 [๋ช…์šฐ๋‹ˆ๋‹ท์ปด:ํ‹ฐ์Šคํ† ๋ฆฌ]

728x90
๋ฐ˜์‘ํ˜•