Skip to content

๐Ÿ‡ฐ๐Ÿ‡ท ๊ตฌ๊ธ€ ์ž๋ฐ” ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ๋ฌธ์„œ ํ•œ๊ธ€ ๋ฒˆ์—ญ๋ณธ 2023

Notifications You must be signed in to change notification settings

jthugg/Google-Java-Style-Guide-Ko-Kr-2023

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

1 Commit
ย 
ย 

Repository files navigation

๐Ÿ‡ฐ๐Ÿ‡ท Java Style Guide ํ•œ๊ธ€ ๋ฒˆ์—ญ๋ณธ 2023

2023๋…„ 2์›” 15์ผ ์ž‘์„ฑ

Google Java Style Guide ์›๋ฌธ ๋งํฌ

๊ธฐ์กด ๊ฒ€์ƒ‰ ๊ฒฐ๊ณผ๋กœ ์ฐพ์•„ ๋ณผ ์ˆ˜ ์žˆ๋˜ ์ž๋ฃŒ๋“ค์— ๋ˆ„๋ฝ, ๋ณ€๊ฒฝ, ์–ด์ƒ‰ํ•œ ๋ถ€๋ถ„์ด ์žˆ์–ด ์ตœ์‹ ํ™”ํ–ˆ๊ณ  ๊ฐ€๋Šฅํ•œ ๋งค๋„๋Ÿฝ๊ฒŒ ์ฝํž ์ˆ˜ ์žˆ๊ฒŒ ์ •๋ฆฌํ–ˆ์Šต๋‹ˆ๋‹ค.
์˜ค์—ญ์ด ์žˆ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์ ˆ๋Œ€์ ์œผ๋กœ ์™„๋ฒฝํ•œ ์ž๋ฃŒ๊ฐ€ ์•„๋‹˜์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.
์˜คํƒˆ์ž๋‚˜ ์˜ค์—ญ ๋“ฑ ์ž˜๋ชป๋œ ๋ถ€๋ถ„์ด ๋ฐœ๊ฒฌ๋  ๊ฒฝ์šฐ ๊นƒํ—™ ์ด์Šˆ๋‚˜ ๋ฒจ๋กœ๊ทธ ๋Œ“๊ธ€ ๋“ฑ์œผ๋กœ ์•Œ๋ ค์ฃผ์‹œ๋ฉด ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

1 ์†Œ๊ฐœ

์ด ๋ฌธ์„œ๋Š” Javaโ„ข๏ธ ์–ธ์–ด๋ฅผ ์ด์šฉํ•œ ์†Œ์Šค์ฝ”๋“œ์— ๋Œ€ํ•œ Google ์ฝ”๋”ฉ ๊ทœ์น™์˜ ์™„์ „ํ•œ ์ •์˜๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. Javaโ„ข๏ธ ์†Œ์Šค ํŒŒ์ผ์€ ์—ฌ๊ธฐ ์žˆ๋Š” ๋ชจ๋“  ๊ทœ์น™๋“ค์€ ์ค€์ˆ˜ ํ•œ ๊ฒฝ์šฐ์—๋งŒ Google ์Šคํƒ€์ผ๋กœ ์„ค๋ช…๋ฉ๋‹ˆ๋‹ค.

๋‹ค์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์Šคํƒ€์ผ๊ณผ ๊ฐ™์ด, ๋‹ค๋ฃจ๋Š” ์ด์Šˆ๋“ค์€ ํฌ๋งคํŒ…์˜ ๋ฏธ์ ๋ฌธ์ œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋‹ค๋ฅธ ์œ ํ˜•์˜ ์ปจ๋ฒค์…˜์ด๋‚˜ ์ฝ”๋”ฉ ๊ทœ์น™์—๋„ ์ ์šฉ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๋ฌธ์„œ๋Š” ๋ณดํŽธ์ ์œผ๋กœ ๋”ฐ๋ฅด๋Š” ์—„๊ฒฉํ•œ ๊ทœ์น™์— ์ดˆ์ ์„ ๋งž์ถ”๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  (์‚ฌ๋žŒ์ด๋‚˜ ๋„๊ตฌ ๊ฐ™์€) ๋ช…ํ™•ํ•˜๊ฒŒ ๊ฐ•์ œ ํ•  ์ˆ˜ ์—†๋Š” ์กฐ์–ธ์„ ์ œ๊ณตํ•˜๋Š”๊ฒƒ์„ ํ”ผํ•ฉ๋‹ˆ๋‹ค.

1.1 ์šฉ์–ด ์ฐธ๊ณ 

์ด ๋ฌธ์„œ์—์„œ ํŠน๋ณ„์ด ๋ช…์‹œํ•˜์ง€ ์•Š๋Š” ํ•œ:

  1. ์šฉ์–ด class(ํด๋ž˜์Šค)๋Š” "์ผ๋ฐ˜์ ์ธ" ํด๋ž˜์Šค๋‚˜ ์—ด๊ฑฐํ˜• ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์–ด๋…ธํ…Œ์ด์…˜ ์œ ํ˜•(@interface)์„ ํฌ๊ด„์ ์œผ๋กœ ์˜๋ฏธํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  2. ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋Š” ์ค‘์ฒฉ๋œ ํด๋ž˜์Šค๋‚˜ ํ•„๋“œ, ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž ๊ฐ™์€ ์ด๋‹ˆ์…œ๋ผ์ด์ €์™€ ์ฃผ์„์„ ์ œ์™ธํ•œ ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ตœ์ƒ์œ„ ์ฝ˜ํ…์ธ ๋ฅผ ํฌ๊ด„์ ์œผ๋กœ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
  3. Comment(์ฃผ์„)๋Š” ํ•ญ์ƒ ๊ตฌํ˜„ ์ฃผ์„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๋Š” documentation comments๋ผ๋Š” ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ , ๋Œ€์‹  Javadoc์ด๋ผ๋Š” ์ผ๋ฐ˜์ ์ธ ์šฉ์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

1.2 ๊ฐ€์ด๋“œ ๋…ธํŠธ

์ด ๋ฌธ์„œ์ƒ์— ์žˆ๋Š” ์˜ˆ์ œ์ฝ”๋“œ๋Š” ํ‘œ์ค€์ด ์•„๋‹™๋‹ˆ๋‹ค. ์ฆ‰, ์˜ˆ์ œ๋Š” Google ์Šคํƒ€์ผ์ด์ง€๋งŒ ์ฝ”๋“œ๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์œ ์ผํ•˜๊ณ  ์„ธ๋ จ๋œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜์ง€ ๋ชปํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ œ์†์—์„œ ๋งŒ๋“ค์–ด์ง„ ์„ ํƒ์  ํ˜•์‹ ์ง€์ •(Optional formatting choices)์€ ๊ทœ์น™์œผ๋กœ ๊ฐ•์ œ๋˜๋ฉด ์•ˆ๋ฉ๋‹ˆ๋‹ค.

2 ์†Œ์Šค ํŒŒ์ผ ๊ธฐ๋ณธ

2.1 ํŒŒ์ผ๋ช…

์†Œ์Šค ํŒŒ์ผ์˜ ์ด๋ฆ„์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•˜๋Š” ์ตœ์ƒ์œ„ ํด๋ž˜์Šค ์ด๋ฆ„(์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ด๋ฆ„)๊ณผ .javaํ™•์žฅ์ž๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

2.2 ํŒŒ์ผ ์ธ์ฝ”๋”ฉ UTF-8

์†Œ์ŠคํŒŒ์ผ์€ UTF-8๋กœ ์ธ์ฝ”๋”ฉ๋ฉ๋‹ˆ๋‹ค.

2.3 ํŠน์ˆ˜๋ฌธ์ž

2.3.1 ๊ณต๋ฐฑ๋ฌธ์ž

๊ฐœํ–‰๋ฌธ์ž(์›๋ฌธ์ƒ 'line terminator ') ์‹œํ€€์Šค๋ฅผ ์ œ์™ธํ•˜๊ณ  **ASCII horizontal space character (0x20)**๋Š” ์†Œ์Šค ํŒŒ์ผ ๋‚ด๋ถ€์—์„œ ๋‚˜ํƒ€๋‚˜๋Š” ์œ ์ผํ•œ ๊ณต๋ฐฑ๋ฌธ์ž์ž…๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ๋‹ค์Œ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.:

  1. ๋ฌธ์ž์—ด๊ณผ ๋ฌธ์ž ๋ฆฌํ„ฐ๋Ÿด ๋‚ด๋ถ€์˜ ๋‹ค๋ฅธ ๊ณต๋ฐฑ๋ฌธ์ž๋Š” ํƒˆ์ถœ ์ฒ˜๋ฆฌ ๋ฉ๋‹ˆ๋‹ค.
  2. ํƒญ ๋ฌธ์ž๋Š” ๋“ค์—ฌ์“ฐ๊ธฐ์— ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

2.3.2 ํŠน์ˆ˜ํ•œ ํƒˆ์ถœ ์‹œํ€€์Šค

ํŠน์ˆ˜ํ•œ ํƒˆ์ถœ ์‹œํ€€์Šค๋ฅผ ๊ฐ€์ง„ ๋ฌธ์ž๋“ค(\b๊ณผ \t, \n, \f, \r, \", \', \\)์€ ํ•ด๋‹น ์ง„์ˆ˜(์˜ˆ. \012) ๋˜๋Š” ์œ ๋‹ˆ์ฝ”๋“œ(์˜ˆ. \u000a) ํƒˆ์ถœ ๋Œ€์‹  ํ•ด๋‹น ๋ฌธ์ž๊ฐ€ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

2.3.3 Non-ASCII ๋ฌธ์ž

์•„์Šคํ‚ค์ฝ”๋“œ ์™ธ ๋‚˜๋จธ์ง€ ๋ฌธ์ž์˜ ๊ฒฝ์šฐ, ์‹ค์ œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž(์˜ˆ. โˆž)๋˜๋Š” ๊ฐ™์€ ์œ ๋‹ˆ์ฝ”๋“œ ํƒˆ์ถœ(์˜ˆ. \u221e)์ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ๋ฅผ ๋” ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์— ๋”ฐ๋ผ ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์œ ๋‹ˆ์ฝ”๋“œ๊ฐ€ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด๋‚˜ ์ฃผ์„ ์™ธ๋ถ€์—์„œ ํƒˆ์ถœํ•˜๋Š”๊ฒƒ์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒ: ์œ ๋‹ˆ์ฝ”๋“œ ํƒˆ์ถœ ์ผ€์ด์Šค๋‚˜ ์‹ค์ œ ์œ ๋‹ˆ์ฝ”๋“œ ๋ฌธ์ž๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๊ฒฝ์šฐ, ์„ค๋ช…ํ•˜๋Š” ์ฃผ์„์ด ๋งค์šฐ ๋„์›€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

Example Discussion
Stringย unitAbbrevย =ย "ฮผs"; ์ตœ๊ณ : ์ฃผ์„์ด ์—†์ง€๋งŒ ๊ฐ€์žฅ ๋ช…ํ™•ํ•ฉ๋‹ˆ๋‹ค
Stringย unitAbbrevย =ย "\u03bcs";ย // "ฮผs" ํ—ˆ์šฉ๋˜์ง€๋งŒ, ์ด๋ ‡๊ฒŒ ์‚ฌ์šฉ ํ•  ์ด์œ ๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.
Stringย unitAbbrevย =ย "\u03bcs";ย // Greek letter mu, "s" ํ—ˆ์šฉ๋˜์ง€๋งŒ, ์–ด์ƒ‰ํ•˜๊ณ  ์‹ค์ˆ˜ํ•˜๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค.
String unitAbbrev = "\u03bcs"; ๋‚˜์จ: ์ด๊ฒƒ์ด ๋ฌด์—‡์ธ์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
returnย '\ufeff'ย +ย content;ย // byte order mark ์ข‹์Œ: ์ถœ๋ ฅํ•  ์ˆ˜ ์—†๋Š” ๋ฌธ์ž์—๋Š” ํƒˆ์ถœ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฃผ์„์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

ํŒ: ์ผ๋ถ€ ํ”„๋กœ๊ทธ๋žจ์ด Non-ASCII ๋ฌธ์ž๋ฅผ ์ œ๋Œ€๋กœ ์ฒ˜๋ฆฌํ•˜์ง€ ๋ชปํ•  ์ˆ˜๋„ ์žˆ๋‹ค๋Š” ๊ฒƒ ๋•Œ๋ฌธ์— ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์„ ํฌ๊ธฐํ•˜์ง€ ๋งˆ์„ธ์š”. ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ์ผ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ํ”„๋กœ๊ทธ๋žจ๋“ค์ด ์ค‘๋‹จ๋˜๊ณ  ์ˆ˜์ •๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

3 ์†Œ์Šค ํŒŒ์ผ ๊ตฌ์กฐ

์†Œ์Šค ํŒŒ์ผ์€ ๋‹ค์Œ ์ˆœ์„œ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.:

  1. ๋ผ์ด์„ผ์Šค๋‚˜ ์ €์žฅ๊ถŒ ์ •๋ณด(์žˆ๋‹ค๋ฉด)
  2. ํŒจํ‚ค์ง€ ์„ ์–ธ
  3. ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค
  4. ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค

์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ๋นˆ ์ค„์ด ๊ฐ ์„น์…˜์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค.

3.1 ๋ผ์ด์„ผ์Šค๋‚˜ ์ €์žฅ๊ถŒ ์ •๋ณด, ์žˆ๋Š” ๊ฒฝ์šฐ

๋ผ์ด์„ผ์Šค๋‚˜ ์ €์žฅ๊ถŒ ์ •๋ณด๊ฐ€ ํŒŒ์ผ์— ํฌํ•จ๋˜์–ด ์žˆ๋‹ค๋ฉด ์—ฌ๊ธฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค.

3.2 ํŒจํ‚ค์ง€ ์„ ์–ธ

ํŒจํ‚ค์ง€ ์„ ์–ธ์€ ์ค„ ๋ฐ”๊ฟˆ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํŒจํ‚ค์ง€๋ฌธ์—๋Š” ์—ด ์ œํ•œ (์„น์…˜ 4.4 ์ฐธ๊ณ , ์—ด ์ œํ•œ: 100)์„ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3.3 ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค

3.3.1 ์™€์ผ๋“œ์นด๋“œ ์ž„ํฌํŠธ ๊ธˆ์ง€

static ๋˜๋Š” ๊ธฐํƒ€ ์™€์ผ๋“œ ์นด๋“œ ์ž„ํฌํŠธ๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.

3.3.2 ์ค„ ๋ฐ”๊ฟˆ ์—†์Œ

์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค์€ ์ค„ ๋ฐ”๊ฟˆ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค์—๋Š” ์—ด ์ œํ•œ (์„น์…˜ 4.4 ์ฐธ๊ณ , ์—ด ์ œํ•œ: 100)์„ ์ ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

3.3.3 ์ •๋ ฌ ๋ฐ ๊ฐ„๊ฒฉ

์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค์€ ๋‹ค์Œ๊ณผ๊ฐ™์ด ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.:

  1. ๋‹จ์ผ๋ธ”๋ก์—์„œ ๋ชจ๋“  static ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค.
  2. ๋‹จ์ผ๋ธ”๋ก์˜ ๋ชจ๋“  non-static ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๋“ค.

๋งŒ์•ฝ static ์ž„ํฌํŠธ์™€ non-static ์ž„ํฌํŠธ๊ฐ€ ๋ชจ๋‘ ์กด์žฌํ•œ๋‹ค๋ฉด, ํ•˜๋‚˜์˜ ๋นˆ ์ค„์ด ๋‘ ๋ธ”๋ก์„ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ ์ž„ํฌํŠธ๋ฌธ ์‚ฌ์ด์—๋Š” ๋นˆ ์ค„์ด ์—†์Šต๋‹ˆ๋‹ค.

๊ฐ ๋ธ”๋ก๋‚ด์—์„œ ์ž„ํฌํŠธ ํ•œ ์ด๋ฆ„์€ ASCII ์ •๋ ฌ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.(์ฐธ๊ณ : "."๊ฐ€ ";" ์•ž์— ์ •๋ ฌ๋˜๋ฏ€๋กœ ASCII ์ •๋ ฌ ์ˆœ์„œ์ธ ์ž„ํฌํŠธ ๊ตฌ๋ฌธ๊ณผ ๋‹ค๋ฆ…๋‹ˆ๋‹ค.)

3.3.4 ํด๋ž˜์Šค static ์ž„ํฌํŠธ ๊ธˆ์ง€

static ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” static ์ž„ํฌํŠธ๊ฐ€ ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜ ์ž„ํฌํŠธ๋ฅผ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3.4 ํด๋ž˜์Šค ์„ ์–ธ

3.4.1 ์ •ํ™•ํžˆ ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค ์„ ์–ธ

์†Œ์ŠคํŒŒ์ผ๋ณ„ ๊ฐ์ž ํ•˜๋‚˜์˜ ์ตœ์ƒ์œ„ ํด๋ž˜์Šค๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

3.4.2 ํด๋ž˜์Šค ๋‚ด์šฉ ์ •๋ ฌ ์ˆœ์„œ

ํด๋ž˜์Šค ๋ฉค๋ฒ„๋‚˜ ์ด๋‹ˆ์…œ๋ผ์ด์ €์˜ ์ •๋ ฌ ์ˆœ์„œ๋Š” ์ดํ•ดํ•˜๋Š”๋ฐ ํฐ ์˜ํ–ฅ์„ ๋ฏธ์นฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋ช…ํ™•ํžˆ ์ •ํ•ด์ง„ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํด๋ž˜์Šค๋Š” ๋‹ค๋ฅธ ๋ฐฉ์‹์œผ๋กœ ๋‚ด์šฉ์˜ ์ˆœ์„œ๋ฅผ ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ค‘์š”ํ•œ๊ฒƒ์€ ๊ฐ ํด๋ž˜์Šค๊ฐ€ ๋ช‡๊ฐ€์ง€ ๊ด€๋ฆฌ์ž๊ฐ€ ์š”์ฒญํ•˜๋ฉด ์„ค๋ช… ํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•˜๋Š” ๋…ผ๋ฆฌ์  ์ˆœ์„œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ๋“ค๋ฉด, ์ƒˆ ๋ฉ”์„œ๋“œ๊ฐ€ ์Šต๊ด€์ ์œผ๋กœ ํด๋ž˜์Šค ๋์— ์ถ”๊ฐ€๋˜์—ˆ๋‹ค๋ฉด ์ด๋Š” "์ถ”๊ฐ€๋œ ์ˆœ์„œ์ˆœ" ์ •๋ ฌ์ผ ๋ฟ ๋…ผ๋ฆฌ์  ์ˆœ์„œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

3.4.2.1 ์˜ค๋ฒ„๋กœ๋“œ: ์ ˆ๋Œ€ ๋ถ„ํ•  ํ•˜์ง€ ๋ง๊ฒƒ

ํด๋ž˜์Šค ๋‚ด๋ถ€์— ๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„ ๋ฉ”์„œ๋“œ๊ฐ€ ์—ฌ๋Ÿฌ๊ฐœ ์žˆ๋Š” ๊ฒฝ์šฐ ์ด๋“ค ์‚ฌ์ด์— ๋‹ค๋ฅธ ์ฝ”๋“œ ์ˆœ์„œ๋Œ€๋กœ ๋‚˜ํƒ€๋‚ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ƒ์„ฑ์ž๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ(๊ฐ™์€ ์ด๋ฆ„์„ ๊ฐ€์ง„)๋„ ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์€ static ์ด๋‚˜ private ๊ฐ™์€ ์ ‘๊ทผ์ œํ•œ์ž๊ฐ€ ๋ฉ”์„œ๋“œ๋ณ„๋กœ ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

4 ํฌ๋งคํŒ…

์šฉ์–ด ์ฐธ๊ณ : block-like ๊ตฌ์กฐ๋Š” ํด๋ž˜์Šค๋˜๋Š” ๋ฉ”์„œ๋“œ, ์ƒ์„ฑ์ž์˜ ๋ณธ๋ฌธ์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”์˜ ์„น์…˜ 4.8.3.1์— ๋”ฐ๋ผ ๋ชจ๋“  ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”๋Š” ์„ ํƒ์ ์œผ๋กœ block-like ๊ตฌ์กฐ๋กœ ์ฒ˜๋ฆฌ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.1 ๊ด„ํ˜ธ

4.1.1 ์„ ํƒ์‚ฌํ•ญ์ธ ๊ฒฝ์šฐ์—๋„ ์ค‘๊ด„ํ˜ธ ์‚ฌ์šฉ

๊ด„ํ˜ธ๋Š” if์™€ else, for, do, while๋ฌธ์˜ ๋‚ด์šฉ์ด ๋น„์–ด์žˆ๊ฑฐ๋‚˜ ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์ด ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

๋žŒ๋‹คํ‘œํ˜„ ๊ฐ™์€ ๋‹ค๋ฅธ ์„ ํƒ์  ๊ด„ํ˜ธ๋Š” ํ•ด๋‹น๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.1.2 ๋น„์–ด์žˆ์ง€ ์•Š์€ ๋ธ”๋ก๋“ค: K & R ์Šคํƒ€์ผ

๋น„์–ด์žˆ์ง€ ์•Š๊ฑฐ๋‚˜ block-like ๊ตฌ์กฐ์—์„œ ๊ด„ํ˜ธ๋Š” Kernighan & Ritchie ์Šคํƒ€์ผ("์ด์ง‘ํŠธ ๋Œ€๊ด„ํ˜ธ")์„ ๋”ฐ๋ฆ…๋‹ˆ๋‹ค.:

  • ์•„๋ž˜ ์ž์„ธํžˆ ์„ค๋ช…๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ , ์—ฌ๋Š” ๊ด„ํ˜ธ ์•ž์—๋Š” ์ค„๋ฐ”๊ฟˆ์ด ์—†์Šต๋‹ˆ๋‹ค.
  • ์—ฌ๋Š” ๊ด„ํ˜ธ ๋’ค์—์„œ ์ค„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • ๋‹ซ๋Š” ๊ด„ํ˜ธ ์•ž์—์„œ ์ค„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  • ๋‹ซ๋Š” ๊ด„ํ˜ธ ๋’ค์—์„œ๋Š” ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋ฌธ์žฅ์„ ๋๋‚ด๋Š” ๊ฒฝ์šฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋‚˜ ์ƒ์„ฑ์ž, ๋ช…๋ช…๋œ ํด๋ž˜์Šค์˜ ๋ณธ๋ฌธ์„ ์ข…๋ฃŒํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ค„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, else๋‚˜ ์‰ผํ‘œ๊ฐ€ ๋”ฐ๋ผ์˜ค๋Š” ๊ฒฝ์šฐ์—๋Š” ์ค„๋ฐ”๊ฟˆ์ด ์—†์Šต๋‹ˆ๋‹ค.

์˜ˆ์™ธ ์‚ฌํ•ญ: ์ด ๊ทœ์น™๋“ค์ด ์„ธ๋ฏธ์ฝœ๋ก (;)์œผ๋กœ ๋๋‚˜๋Š” ํ•˜๋‚˜์˜ ๋ฌธ์žฅ์„ ํ—ˆ์šฉํ•˜๋Š” ์œ„์น˜์—์„œ๋Š” ๋ฌธ์žฅ ๋ธ”๋ก์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ด ๋ธ”๋ก์˜ ์—ฌ๋Š” ๊ด„ํ˜ธ ์•ž์—์„œ ์ค„์„ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ธ”๋ก๋“ค, ์˜ˆ๋ฅผ ๋“ค์–ด ๋‚ด๋ถ€์Šค์œ„์น˜๋ฌธ ๊ฐ™์€ ๋ธ”๋ก๋“ค์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๋ฅผ ์ œํ•œํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…๋ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

return () -> {
    while (condition()) {
        method();
    }
};

return new MyClass() {
    @Override public void method() {
        if (condition()) {
            try {
              something();
            } catch (ProblemException e) {
              recover();
            }
        } else if (otherCondition()) {
            somethingElse();
        } else {
            lastThing();
        }
        {
            int x = foo();
           frob(x);
        }
    }
};

์—ด๊ฑฐํ˜• ํด๋ž˜์Šค๋“ค์— ๋Œ€ํ•œ ๋ช‡๊ฐ€์ง€ ์˜ˆ์™ธ์กฐํ•ญ๋“ค์€ ์„น์…˜ 4.8.1, ์—ด๊ฑฐํ˜• ํด๋ž˜์Šค์— ๋‚˜์™€ ์žˆ์Šต๋‹ˆ๋‹ค.

4.1.3 ๋นˆ ๋ธ”๋ก๋“ค: ๊ฐ„๊ฒฐํ•  ์ˆ˜ ์žˆ์Œ

๋นˆ ๋ธ”๋ก์ด๋‚˜ block-like ๊ตฌ์กฐ๋Š” K & R ์Šคํƒ€์ผ(์„น์…˜ 4.1.2์— ์„ค๋ช…๋๋“ฏ)์„ ์ ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•„๋‹ˆ๋ฉด, ๋‹ค์ค‘ ๋ถˆ๋ก ๋ฌธ์žฅ(์—ฌ๋Ÿฌ ๋ธ”๋ก์„ ์ง์ ‘ ํฌํ•จํ•˜๋Š” ๋ธ”๋ก: if/else๋‚˜ try/catch/finally)์˜ ์ผ๋ถ€๊ฐ€ ์•„๋‹Œ ํ•œ ๊ด„ํ˜ธ({})์‚ฌ์ด์— ๋ฌธ์ž๋‚˜ ์ค„๋ฐ”๊ฟˆ ์—†์ด ๋‹ซ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์‹œ:

    // ํ—ˆ์šฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    void doNothing() {}

    // ๋˜ํ•œ ํ—ˆ์šฉ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    void doNothingElse() {
    }
    // ํ—ˆ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.: ๋ฉ€ํ‹ฐ๋ธ”๋ก ๊ตฌ๋ฌธ์—์„œ๋Š” ๊ฐ„๊ฒฐํ•œ ๋นˆ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    try {
        doSomething();
    } catch (Exception e) {}

4.2 ๋ธ”๋ก ๋“ค์—ฌ์“ฐ๊ธฐ: +2 ๊ณต๋ฐฑ

์ƒˆ๋กœ์šด ๋ธ”๋ก์ด๋‚˜ block-like ๊ตฌ์กฐ๊ฐ€ ์—ด๋ฆด ๋•Œ ๋งˆ๋‹ค, ๋“ค์—ฌ์“ฐ๊ธฐ๊ฐ€ ๋‘ ์นธ์”ฉ ์ฆ๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋ธ”๋ก์ด ๋๋‚  ๋•Œ, ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ์ด์ „ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ์€ ๋ธ”๋ก ์ „์ฒด์˜ ์ฝ”๋“œ์™€ ์ฃผ์„ ๋ชจ๋‘์— ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. (๋น„์–ด์žˆ์ง€ ์•Š์€ ๋ธ”๋ก: K & R ์Šคํƒ€์ผ, ์„น์…˜ 4.1.2 ๋ฅผ ์ฐธ์กฐํ•˜์„ธ์š”.)

4.3 ํ•œ์ค„์— ํ•˜๋‚˜์˜ ๋ฌธ์žฅ

๊ฐ ๋ฌธ์žฅ ๋’ค์—๋Š” ์ค„๋ฐ”๊ฟˆ์ด ๋”ฐ๋ผ์˜ต๋‹ˆ๋‹ค.

4.4 ์—ด ์ œํ•œ: 100

์ž๋ฐ”์ฝ”๋“œ๋Š” 100์ž๋กœ ์—ด์„ ์ œํ•œ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ "๋ฌธ์ž"๋Š” ๋ชจ๋“  ์œ ๋‹ˆ์ฝ”๋“œ ํฌ์ธํŠธ๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค. ์•„๋ž˜ ์–ธ๊ธ‰ํ•œ ๊ฒƒ์„ ์ œ์™ธํ•˜๊ณ  ์ด ์ œํ•œ์„ ์ดˆ๊ณผํ•œ ๋ชจ๋“  ๋ผ์ธ์€ ๋ฐ˜๋“œ์‹œ ์„น์…˜ 4.5, ์ค„ ๋ฐ”๊ฟˆ์— ๋Œ€ํ•œ ์„ค๋ช…๋Œ€๋กœ ์ค„ ๋ฐ”๊ฟˆ ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์œ ๋‹ˆ์ฝ”๋“œ ํฌ์ธํŠธ๋“ค์€ ์ถœ๋ ฅ๋˜๋Š” ๋„ˆ๋น„๊ฐ€ ๋„“๊ฑฐ๋‚˜ ์ข์•„๋„ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋กœ ๊ณ„์‚ฐ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ „์ฒด ๋„ˆ๋น„ ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ์ด ๊ทœ์น™์ด ๊ฐ•์ œ๋˜๋Š” ์œ„์น˜๋ณด๋‹ค ๋จผ์ € ์ค„๋ฐ”๊ฟˆ์„ ์„ ํƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ์™ธ:

  1. ์—ด์ œํ•œ์„ ๋”ฐ๋ฅผ ์ˆ˜ ์—†๋Š” ๋ผ์ธ๋“ค์€ ๊ทœ์น™ ์ ์šฉ์ด ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, Javadoc ์˜ ๊ธด URL ์ด๋‚˜ ๊ธด JSNI ๋ฉ”์„œ๋“œ ์ฐธ์กฐ)
  2. ํŒจํ‚ค์ง€์„ ์–ธ๊ณผ ์ž„ํฌํŠธ๋ฌธ์žฅ. (์„น์…˜ 3.2 ํŒจํ‚ค์ง€ ์„ ์–ธ๊ณผ ์„น์…˜ 3.3 ์ž„ํฌํŠธ๋ฌธ์„ ์ฐธ์กฐํ•˜์„ธ์š”.)
  3. ์…ธ์— ๋ณต๋ถ™๋˜๋Š” ์ฃผ์„์˜ ๋ช…๋ น ๋ผ์ธ.
  4. ๋“œ๋ฌผ๊ฒŒ ์š”๊ตฌ๋˜๋Š” ๊ฒฝ์šฐ ์•„์ฃผ ๊ธด ์‹๋ณ„์ž๋„ ์—ด์ œํ•œ์„ ์ดˆ๊ณผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด ๋•Œ, ์œ ํšจํ•œ ์ค„ ๋ฐ”๊ฟˆ์€ ๊ตฌ๊ธ€-์ž๋ฐ”-ํ˜•์‹์œผ๋กœ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค.

4.5 ์ค„ ๋ฐ”๊ฟˆ

์šฉ์–ด ์ฐธ๊ณ : ํ•œ ์ค„์„ ๋ฌธ์ œ์—†์ด ์ ์œ ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๊ฐ€ ํ•˜๋‚˜์˜ ์ค„์—์„œ ์—ฌ๋Ÿฌ์ค„๋กœ ๋‚˜๋‰  ๋•Œ, ์ด ์ž‘์—…์„ ์ค„ ๋ฐ”๊ฟˆ์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

๋ชจ๋“  ์ƒํ™ฉ์—์„œ ์ค„๋ฐ”๊ฟˆ์„ ์ •ํ™•ํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ด๋Š” ํฌ๊ด„์ ์ด๊ณ  ๊ฒฐ์ •์ ์ธ ๊ณต์‹์€ ์—†์Šต๋‹ˆ๋‹ค. ๋งค์šฐ ์ž์ฃผ ๊ฐ™์€ ์ฝ”๋“œ ์กฐ๊ฐ์„ ์ค„๋ฐ”๊ฟˆ ํ•˜๋Š” ๋ช‡๊ฐ€์ง€ ๋ฐฉ๋ฒ•์ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์ค„ ๋ฐ”๊ฟˆ์˜ ๋Œ€ํ‘œ์ ์ธ ์ด์œ ๊ฐ€ ์—ด ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•จ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ๋กœ ์—ด ์ œํ•œ์„ ์ค€์ˆ˜ํ•˜๋Š” ์ฝ”๋“œ ๋˜ํ•œ ์ž‘์„ฑ์ž์˜ ์žฌ๋Ÿ‰์— ๋”ฐ๋ผ ์ค„ ๋ฐ”๊ฟˆ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

ํŒ: ๋ฉ”์„œ๋“œ ๋ถ„๋ฆฌ๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜๊ฐ€ ์ค„ ๋ฐ”๊ฟˆ ์—†์ด ์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.5.1 ์–ด๋””์„œ ์ค„์„ ๋ฐ”๊พธ๋‚˜์š”?

์ค„๋ฐ”๊ฟˆ์˜ ์ฃผ์š” ์ง€์นจ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค: ๋” ๋†’์€ ๊ตฌ๋ฌธ ๋ ˆ๋ฒจ์—์„œ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค. ๋˜ํ•œ:

  1. ํ•œ ์ค„์ด ๋น„ ํ• ๋‹น ์—ฐ์‚ฐ์ž์—์„œ ๋ฐ”๋€” ๋•Œ, ๊ธฐํ˜ธ ์•ž์—์„œ ๋ฐ”๋€๋‹ˆ๋‹ค. (C++ ์ด๋‚˜ Javascript ์™€ ๊ฐ™์€ ๋‹ค๋ฅธ ์–ธ์–ด์˜ Google ์Šคํƒ€์ผ์—์„œ ์ ์šฉ๋˜๋Š” ๊ฒƒ๊ณผ ๋‹ค๋ฅด๋‹จ ๊ฒƒ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.)
    • ๋˜ํ•œ ์ด๊ฒƒ์€ ๋‹ค์Œ "operator-like" ๊ธฐํ˜ธ๋“ค์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
      • ์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ(.)
      • ๋ฉ”์„œ๋“œ ์ฐธ์กฐ์˜ ๋‘ ์ฝœ๋ก (::)
      • ํƒ€์ž… ๋ฐ”์šด๋“œ์˜ ์•ฐํผ์„ผ๋“œ(<T extends Foo & Bar>)
      • catch ๋ธ”๋ก์˜ ํŒŒ์ดํ”„(catch (FooException | BarException e))
  2. ํ• ๋‹น ์—ฐ์‚ฐ์ž์—์„œ ์ค„์ด ๋ฐ”๋€” ๋•Œ, ์ค„๋ฐ”๊ฟˆ์€ ์ผ๋ฐ˜์ ์œผ๋กœ ๊ธฐํ˜ธ ๋’ค์— ์˜ค์ง€๋งŒ, ์–ด๋Š์ชฝ์ด๋“  ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์ด๊ฒƒ์€ ํ–ฅ์ƒ๋œ for ("foreach")๋ฌธ์˜ "assignment-operator-like"ํ•œ ์ฝœ๋ก ์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
  3. ๋ฉ”์„œ๋“œ๋‚˜ ์ƒ์„ฑ์ž ์ด๋ฆ„์€ ๊ทธ ๋’ค์— ์˜ค๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋ถ™์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  4. ์‰ผํ‘œ(,)๋Š” ์•ž์— ์˜ค๋Š” ํ† ํฐ์— ๊ณ„์† ๋ถ™์–ด์žˆ์Šต๋‹ˆ๋‹ค.
  5. ๋žŒ๋‹ค์—์„œ ๋ณธ๋ฌธ์˜ ๊ด„ํ˜ธ๊ฐ€ ์—†๋Š” ๋‹จ์ผ ํ‘œํ˜„์‹์œผ๋กœ ๊ตฌ์„ฑ๋  ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ , ํ™”์‚ดํ‘œ์™€ ์ธ์ ‘ํ•œ ์ค„์€ ์ ˆ๋Œ€ ๋ฐ”๋€Œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:
MyLambda<String, Long, Object> lambda =
    (String label, Long value, Object obj) -> {
        ...
    };

Predicate<String> predicate = str ->
    longExpressionInvolving(str);

์ฐธ๊ณ : ์ค„ ๋ฐ”๊ฟˆ์˜ ๊ฐ€์žฅ ์ฃผ๋œ ๋ชฉ์ ์€ ๊น”๋”ํ•œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•จ ์ž…๋‹ˆ๋‹ค, ๋ผ์ธ์— ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ๋“ค์–ด๊ฐ„ ์ฝ”๋“œ๋Š” ํ•„์ˆ˜ ์š”์†Œ๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.

4.5.2 ์—ฐ์† ์ค„ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ผ์ธ์€ ์ตœ์†Œ +4 ๊ณต๋ฐฑ

์ค„ ๋ฐ”๊ฟˆ ์‹œ, ์ฒซ ์ค„ ๋‹ค์Œ์˜ ๊ฐ ๋ผ์ธ์€ (๊ฐ ์—ฐ์† ์ค„) ์ตœ์†Œ +4 ๊ณต๋ฐฑ ์ด์ƒ ๋“ค์—ฌ์”๋‹ˆ๋‹ค.

์—ฐ์†์ค„์ด ์—ฌ๋Ÿฌ๊ฐœ์ธ ๊ฒฝ์šฐ ์›ํ•˜๋Š” ๋งŒํผ +4๊ณต๋ฐฑ ์ด์ƒ์œผ๋กœ ๋ณ€๊ฒฝ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ๋‘๊ฐœ์˜ ์—ฐ์† ์ค„์€ ๊ตฌ๋ฌธ ์ƒ ๋ณ‘๋ ฌ ์š”์†Œ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ๊ฐ™์€ ๋ ˆ๋ฒจ๋กœ ๋“ค์—ฌ์”๋‹ˆ๋‹ค.

์ˆ˜ํ‰ ์ •๋ ฌ์— ๊ด€ํ•œ ์„น์…˜ 4.6.3์€ ํŠน์ • ํ† ํฐ์„ ์ง์ „ ๋ผ์ธ๊ณผ ์ •๋ ฌํ•˜๊ธฐ์œ„ํ•ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ณต๋ฐฑ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ถŒ์žฅ๋˜์ง€ ์•Š๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

4.6 ๊ณต๋ฐฑ

4.6.1 ์„ธ๋กœ ๊ณต๋ฐฑ

ํ•˜๋‚˜์˜ ๋นˆ ์ค„์€ ํ•ญ์ƒ ๋‹ค์Œ๊ณผ ๊ฐ™์„ ๋•Œ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.:

  1. ์—ฐ์†์ ์ธ ๋ฉค๋ฒ„๋‚˜ ํด๋ž˜์Šค ์ดˆ๊ธฐํ™” ์‚ฌ์ด: ํ•„๋“œ๋‚˜ ์ƒ์„ฑ์ž, ๋ฉ”์„œ๋“œ, ์ค‘์ฒฉ ํด๋ž˜์Šค, ์ •์  ์ดˆ๊ธฐํ™” ๊ฐ์ฒด ์ดˆ๊ธฐํ™”
  • ์˜ˆ์™ธ: ๋‘๊ฐœ์˜ ์—ฐ์†๋œ ํ•„๋“œ ์‚ฌ์ด(์‚ฌ์ด์— ์•„๋ฌด๋Ÿฐ ๋‹ค๋ฅธ ์ฝ”๋“œ๊ฐ€ ์—†์„ ๋•Œ) ๋นˆ ์ค„์€ ์„ ํƒ์ ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋นˆ ์ค„์€ ๋…ผ๋ฆฌ์  ๊ทธ๋ฃน์„ ๋งŒ๋“ค์–ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ์˜ˆ์™ธ: ์—ด๊ฑฐ์˜ ์ƒ์ˆ˜ ์‚ฌ์ด ๋นˆ ์ค„์€ ์„น์…˜ 4.8.1์—์„œ ๋‹ค๋ฃน๋‹ˆ๋‹ค.
  1. ์ด ๋ฌธ์„œ์˜ ๋‹ค๋ฅธ ์„น์…˜์ด ์š”๊ตฌํ•˜๋Š” ๋ฐ”์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค (์˜ˆ์‹œ: ์„น์…˜ 3 ์†Œ์Šค ํŒŒ์ผ ๊ตฌ์กฐ, ์„น์…˜ 3.3 ์ž„ํฌํŠธ ๊ตฌ๋ฌธ).

๋˜ํ•œ ๋นˆ ์ค„์€ ๊ฐ€๋…์„ฑ์„ ๋†’์ด๋Š” ๋ชจ๋“  ์œ„์น˜์—์„œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค, ์˜ˆ๋ฅผ ๋“ค์–ด ๋…ผ๋ฆฌ์  ํ•˜์œ„์„น์…˜์œผ๋กœ ๊ตฌ์„ฑ๋˜๋Š” ๋ช…๋ น๋ฌธ ์‚ฌ์ด. ์ฒซ๋ฒˆ์งธ ๋ฉค๋ฒ„๋‚˜ ์ด๋‹ˆ์…œ๋ผ์ด์ € ์•ž์˜ ๋นˆ ์ค„์ด๋‚˜, ๋งˆ์ง€๋ง‰ ๋ฉค๋ฒ„๋‚˜ ์ด๋‹ˆ์…œ๋ผ์ด์ € ๋’ค์˜ ๋นˆ ์ค„์€ ๊ถŒ์žฅ๋˜์ง€ ์•Š์ง€๋งŒ ๊ธˆ์ง€๋˜์ง€๋„ ์•Š์Šต๋‹ˆ๋‹ค.

์—ฌ๋Ÿฌ๊ฐœ์˜ ์—ฐ์†์ ์ธ ๋นˆ ์ค„์€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค๋งŒ, ์ ˆ๋Œ€ ํ•„์ˆ˜(๋˜๋Š” ๊ถŒ์žฅ)๋Š” ์•„๋‹™๋‹ˆ๋‹ค.

4.6.2 ๊ฐ€๋กœ ๊ณต๋ฐฑ

๋ฆฌํ„ฐ๋Ÿด๊ณผ ์ฃผ์„, Javadoc ์„ ์ œ์™ธํ•˜๊ณ  ์–ธ์–ด๋‚˜ ๋‹ค๋ฅธ ์Šคํƒ€์ผ ๊ทœ์น™์—์„œ ์š”๊ตฌํ•˜๋Š” ์œ„์น˜ ์™ธ์—, ํ•˜๋‚˜์˜ ASCII ๊ณต๋ฐฑ์€ ๋‹ค์Œ์—์„œ๋งŒ ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  1. if, for, catch์™€ ๊ฐ™์€ ์˜ˆ์•ฝ์–ด ๋’ค์— ๋‚˜์˜ค๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ(() ์•ž
  2. else๋‚˜ catch๊ณผ ๊ฐ™์€ ์˜ˆ์•ฝ์–ด ์•ž์— ๋‚˜์˜ค๋Š” ๋‹ซ๋Š” ์ค‘๊ด„ํ˜ธ(}) ์•ž
  3. ์•„๋ž˜ ๋‘ ์˜ˆ์™ธ๋ฅผ ์ œ์™ธํ•œ, ๋ชจ๋“  ์—ฌ๋Š” ์ค‘๊ด„ํ˜ธ(}) ์•ž
    • @SomeAnnotation({a, b}) (๊ณต๋ฐฑ์ด ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
    • String[][] x = {{"foo"}}; (์•„๋ž˜ 9๋ฒˆ ํ•ญ๋ชฉ์— ์˜ํ•ด {{์‚ฌ์ด์— ๊ณต๋ฐฑ์ด ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.)
  4. ์ดํ•ญ ๋˜๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ๊ธฐํ˜ธ ์•ž, ๋’ค. ์ด๋Š” "operator-like"๊ธฐํ˜ธ๋“ค์—๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.
    • ์ธ์ ‘ํ•œ ํƒ€์ž…๋ฐ”์šด๋”ฉ์˜ ์•ฐํผ์ƒŒ๋“œ: <T extends Foo & Bar>
    • catch ๋ธ”๋ก์—์„œ ์—ฌ๋Ÿฌ ์˜ˆ์™ธ๋ฅผ ํ•ธ๋“ค๋ง ํ•  ๋•Œ ํŒŒ์ดํ”„:
      catch(FooException | BarException e)
    • ํ–ฅ์ƒ๋œ for("foreach")๋ฌธ์˜ ์ฝœ๋ก (:)
    • ๋žŒ๋‹ค ํ‘œํ˜„์˜ ํ™”์‚ดํ‘œ: (String str) -> str.length()
      ํ•˜์ง€๋งŒ ์•„๋ž˜์—์„œ๋Š” ์ ์šฉ ๋  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
    • Object::toString๊ณผ ๊ฐ™์€ ๋ฉ”์„œ๋“œ ์ฐธ์กฐ์˜ ์ฝœ๋ก (::) ๋‘๊ฐœ
    • object.toString()๊ณผ ๊ฐ™์€ ์  ๊ตฌ๋ถ„ ๊ธฐํ˜ธ
  5. ,:;๋’ค๋‚˜ ์บ์ŠคํŒ… ํ•  ๋•Œ ๋‹ซ๋Š” ๊ด„ํ˜ธ()) ๋’ค
  6. ์ฃผ์„์„ ์‹œ์ž‘ํ•˜๋Š” ๋”๋ธ” ์Šฌ๋ž˜์‹œ(//)์™€ ๋ชจ๋“  ์ปจํ…์ธ  ์‚ฌ์ด, ๊ณต๋ฐฑ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  7. ๋”๋ธ” ์Šฌ๋ž˜์‹œ์™€ ์ฃผ์„ ๋‚ด์šฉ ์‚ฌ์ด. ๊ณต๋ฐฑ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.
  8. ์„ ์–ธ ์‹œ ๋ณ€์ˆ˜ ํƒ€์ž…๊ณผ ์ด๋ฆ„ ์‚ฌ์ด: List<String> list
  9. ๋ฐฐ์—ด ์„ ์–ธ ์‹œ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€์—์„œ ์„ ํƒ์ ์œผ๋กœ ํ—ˆ์šฉ
    • new int[] {5, 6} ์™€ new int[] { 5, 6 } ๋‘˜ ๋‹ค ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  10. ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜๊ณผ ๋Œ€๊ด„ํ˜ธ[] ๋˜๋Š” ...

์ด ๊ทœ์น™์€ ์ค„์˜ ์‹œ์ž‘์ด๋‚˜ ๋์—์„œ ์ถ”๊ฐ€์ ์ธ ๊ณต๋ฐฑ์„ ์š”๊ตฌํ•˜๊ฑฐ๋‚˜ ๊ธˆ์ง€ํ•˜๋Š”๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.; ๋‚ด๋ถ€ ๊ณต๊ฐ„๋งŒ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

4.6.3 ๊ฐ€๋กœ ์ •๋ ฌ: ์š”๊ตฌ๋˜์ง€ ์•Š์Œ

์šฉ์–ด ์ฐธ๊ณ : ๊ฐ€๋กœ ์ •๋ ฌ์€ ํŠน์ • ํ† ํฐ์ด ์ด์ „ ์ค„์˜ ๋‹ค๋ฅธ ํ† ํฐ ๋ฐ”๋กœ ์•„๋ž˜์— ๋‚˜ํƒ€๋‚˜๋„๋ก ์ฝ”๋“œ์— ์—ฌ๋Ÿฌ๊ฐœ์˜ ๊ณต๋ฐฑ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ Google ์Šคํƒ€์ผ์—์„œ ์š”๊ตฌ๋˜๋Š”๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ด๋ฏธ ์‚ฌ์šฉ๋œ ์œ„์น˜์—์„œ ์ •๋ ฌ์„ ์œ ์ง€ํ•  ํ•„์š”๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ์ •๋ ฌ ์—†์ด, ์ •๋ ฌํ•˜์—ฌ ์‚ฌ์šฉํ•˜๋Š” ์˜ˆ์‹œ๋“ค ์ž…๋‹ˆ๋‹ค.:

private int x; // ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.
private Color color; // ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.

private int   x;      // ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค, ํ–ฅํ›„ ํŽธ์ง‘ํ•ฉ๋‹ˆ๋‹ค.
private Color color;  // ์ •๋ ฌํ•˜์ง€ ์•Š์€ ํŒจ ๋‘˜ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ: ์ •๋ ฌ์€ ๊ฐ€๋…์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์ง€๋งŒ, ํ–ฅํ›„ ์œ ์ง€๋ณด์ˆ˜์— ๋ฌธ์ œ๋ฅผ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‚˜์ค‘์— ๋‹จ ํ•œ ์ค„๋งŒ ์ˆ˜์ •ํ•˜๋Š”๊ฒƒ์„ ๊ณ ๋ คํ•ด๋ณด์‹ญ์‹œ์˜ค. ์ด ์ˆ˜์ •์œผ๋กœ ๊ดœ์ฐฎ์€ ํฌ๋งท์„ ๋ง์น  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋” ์ž์ฃผ ์ฝ”๋”(์•„๋งˆ๋„ ๋‹น์‹ )์—๊ฒŒ ๊ทผ์ฒ˜ ๋ผ์ธ ๊ณต๋ฐฑ์„ ๋งž์ถ”๋ผ๋Š” ๋ฉ”์„ธ์ง€๋ฅผ ํ‘œ์‹œํ•˜๋ฉฐ, ์ผ๋ จ์˜ ์žฌ๊ตฌ์„ฑ์„ ๋ถˆ๋Ÿฌ ์ผ์œผํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ ํ•œ์ค„์˜ ์ˆ˜์ •์€ "ํญ๋ฐœ ๋ฐ˜๊ฒฝ"์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค. ์ด๋Š” ์ตœ์•…์˜ ๋ฌด์˜๋ฏธํ•œ ์ž‘์—…์„ ์ดˆ๋ž˜ํ•  ์ˆ˜ ์žˆ๊ณ , ๋ฒ„์ „ ๊ธฐ๋ก ์ •๋ณด๋ฅผ ์†์ƒ์‹œํ‚ค๊ณ , ๊ฒ€ํ† ์ž์˜ ์†๋„๋ฅผ ์ €ํ•˜์‹œํ‚ค๊ณ  ๋จธ์ง€์ถฉ๋Œ์„ ๋ฐœ์ƒ ์‹œํ‚ต๋‹ˆ๋‹ค.

4.7 ๊ทธ๋ฃน ๊ด„ํ˜ธ: ๊ถŒ์žฅ๋จ

์„ ํƒ์ ์œผ๋กœ ๊ด„ํ˜ธ๋ฅผ ๊ทธ๋ฃนํ™” ํ•˜๋Š”๊ฒƒ์€ ์ž‘์„ฑ์ž์™€ ๊ฒ€ํ† ์ž๊ฐ€ ์ฝ”๋“œ๋ฅผ ์ž˜๋ชป ์ดํ•ดํ•˜๊ฑฐ๋‚˜ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋งŒ๋“ค ๊ฐ€๋Šฅ์„ฑ์ด ์—†๋‹ค๊ณ  ๋™์˜ํ•˜๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ƒ๋žต๋ฉ๋‹ˆ๋‹ค. ๋ชจ๋“  ์‚ฌ๋žŒ์ด ์ „์ฒด ์ž๋ฐ” ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„ ํ…Œ์ด๋ธ”์„ ๊ธฐ์–ตํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•˜๋Š”๊ฒƒ์€ ๋น„ํ•ฉ๋ฆฌ์ ์ž…๋‹ˆ๋‹ค.

4.8 ํŠน์ • ๊ตฌ์กฐ

4.8.1 ์—ด๊ฑฐํ˜• ํด๋ž˜์Šค

์—ด๊ฑฐํ˜• ์ƒ์ˆ˜ ๋’ค์— ์˜ค๋Š” ๊ฐ๊ฐ์˜ ์‰ผํ‘œ ๋’ค์— ์ค„ ๋ฐ”๊ฟˆ์€ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค. ์ถ”๊ฐ€์ ์ธ ๋นˆ ์ค„(๋ณดํ†ต ํ•œ ์ค„)๋˜ํ•œ ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ์•„๋ž˜๋Š” ํ•œ๊ฐ€์ง€ ์˜ˆ์ œ์ž…๋‹ˆ๋‹ค.:

private enum Answer {
    YES {
        @Override public String toString() {
            return "yes ";
        }
    },
  
    NO,
    MAYBE
}

๋ฉ”์„œ๋“œ์™€ ์„ค๋ช…์ด ์—†๋Š” ์—ด๊ฑฐํ˜• ํด๋ž˜์Šค๋Š” ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”์ฒ˜๋Ÿผ ํฌ๋งท๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (๋ฐฐ์—ด ์ดˆ๊ธฐํ™”๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์„น์…˜ 4.8.3.1์„ ์ฐธ๊ณ ํ•˜์„ธ์š”.)

private enum Suit { CLUBS, HEARTS, SPADES, DIAMONDS }

์—ด๊ฑฐํ˜• ํด๋ž˜์Šค๋„ ํด๋ž˜์Šค์ด๋ฏ€๋กœ, ํด๋ž˜์Šค ํ˜•์‹์— ๋Œ€ํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ๊ทœ์น™๋“ค์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.

4.8.2 ๋ณ€์ˆ˜ ์„ ์–ธ

4.8.2.1 ์„ ์–ธ๋‹น ํ•œ ๊ฐ€์ง€ ๋ณ€์ˆ˜

๋ชจ๋“  ๋ณ€์ˆ˜ ์„ ์–ธ(ํ•„๋“œ๋‚˜ ์ง€์—ญ๋ณ€์ˆ˜)๋Š” ํ•˜๋‚˜์”ฉ ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค.: int a, b;์™€ ๊ฐ™์€ ์‚ฌ์šฉ์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์˜ˆ์™ธ: for๋ฃจํ”„ ํ—ค๋”์—์„œ๋Š” ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

4.8.2.2 ํ•„์š”ํ•  ๋•Œ ์„ ์–ธ

์ง€์—ญ๋ณ€์ˆ˜๋Š” ํฌํ•จ ๋ธ”๋ก์ด๋‚˜ block-like ๊ตฌ์กฐ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์—์„œ ์Šต๊ด€์ ์œผ๋กœ ์„ ์–ธ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  ์ง€์—ญ๋ณ€์ˆ˜๋Š” ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ธฐ ์œ„ํ•ด ์ฒ˜์Œ ์‚ฌ์šฉ๋˜๋Š” ์ง€์ (ํ•ฉ๋‹นํ•œ)์— ์„ ์–ธํ•ฉ๋‹ˆ๋‹ค. ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๋˜๊ฑฐ๋‚˜ ์„ ์–ธ ์งํ›„ ๋ฐ”๋กœ ์ดˆ๊ธฐํ™”๋ฉ๋‹ˆ๋‹ค.

4.8.3 ๋ฐฐ์—ด

4.8.3.1 ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”: "block-like" ๊ฐ€๋Šฅ

๋ชจ๋“  ๋ฐฐ์—ด ์ดˆ๊ธฐํ™”๋Š” ์„ ํƒ์ ์œผ๋กœ "block-like ๊ตฌ์กฐ" ์ฒ˜๋Ÿผ ํฌ๋งคํŒ… ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์•„๋ž˜ ๋ชจ๋“  ์ƒํ™ฉ์„ ํ—ˆ์šฉํ•ฉ๋‹ˆ๋‹ค.(์™„์ „ํ•œ ๋ชฉ๋ก์€ ์•„๋‹™๋‹ˆ๋‹ค.)

new int[] {           new int[] {
    0, 1, 2, 3            0,
}                         1,
                          2,
new int[] {               3,
    0, 1,             }
    2, 3
}                     new int[]
                          {0, 1, 2, 3}

4.8.3.2 C-์Šคํƒ€์ผ ๋ฐฐ์—ด์„ ์–ธ ๊ธˆ์ง€

๋Œ€๊ด„ํ˜ธ๋Š” ์ž๋ฃŒํ˜•์˜ ์ผ๋ถ€๋ฅผ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.: String args[]๊ฐ€ ์•„๋‹ˆ๋ผ, String[] args

4.8.4 ์Šค์œ„์น˜๋ฌธ

์šฉ์–ด ์ฐธ๊ณ : ์Šค์œ„์น˜ ๋ธ”๋ก์˜ ์ค‘๊ด„ํ˜ธ ๋‚ด๋ถ€์—๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ๊ตฌ๋ฌธ ๊ทธ๋ฃน์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ตฌ๋ฌธ๊ทธ๋ฃน์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ๋ช…๋ น๋ฌธ(๋˜๋Š” ๋งˆ์ง€๋ง‰ ๋ช…๋ น๋ฌธ ๊ทธ๋ฃน์˜ ๊ฒฝ์šฐ, 0๊ฐœ ์ด์ƒ์˜ ๋ช…๋ น๋ฌธ)์„ ํฌํ•จํ•˜๋Š” ํ•˜๋‚˜ ์ด์ƒ์˜ ์Šค์œ„์น˜ ๋ผ๋ฒจ๋“ค(case FPP:์™€ default: ๋ชจ๋‘)๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

4.8.4.1 ๋“ค์—ฌ์“ฐ๊ธฐ

๋‹ค๋ฅธ ๋ธ”๋ก๋“ค๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์Šค์œ„์น˜ ๋ธ”๋ก ๋‚ด์šฉ์€ +2๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฉ๋‹ˆ๋‹ค.

์Šค์œ„์น˜ ๋ผ๋ฒจ ๋’ค์—๋Š”, ์ค„ ๋ฐ”๊ฟˆ์ด ์žˆ๊ณ , ๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ์€ ๋ธ”๋ก์ด ์—ด๋ฆฐ๊ฒƒ ์ฒ˜๋Ÿผ +2๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์Šค์œ„์น˜๋ฌธ์ด ๋๋‚˜๋ฉด ๋ธ”๋ก์ด ๋‹ซํžŒ๊ฒƒ ์ฒ˜๋Ÿผ ์ด์ „ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ๋กœ ๋Œ์•„๊ฐ‘๋‹ˆ๋‹ค.

4.8.4.2 Fall-through: ์ฃผ์„

์Šค์œ„์น˜ ๋ธ”๋ก ๋‚ด๋ถ€์—์„œ, ๊ฐ ๊ตฌ๋ฌธ ๊ทธ๋ฃน์€ ๊ฐ‘์ž๊ธฐ ์ข…๋ฃŒ๋˜๊ฑฐ๋‚˜(break, continue, return ๋˜๋Š” ์˜ˆ์™ธ์™€ ๊ฐ™์ด), ๋‹ค์Œ ๊ตฌ๋ฌธ์œผ๋กœ ๊ณ„์†๋  ์ˆ˜ ์žˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์„์œผ๋กœ ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. fall-through ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ฃผ์„์„ ๋‹ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์œผ๋กœ //fall-through) ์ด ํŠน์ˆ˜ํ•œ ์ฃผ์„์€ ์Šค์œ„์น˜ ๋ธ”๋ก์˜ ๋งˆ์ง€๋ง‰ ๋ช…๋ น๋ฌธ ๊ทธ๋ฃน์—๋Š” ์š”๊ตฌ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

switch (input) {
    case 1:
    case 2:
        prepareOneOrTwo();
        // fall through
    case 3:
        handleOneTwoOrThree();
        break;
    default:
        handleLargeNumber(input);
}

case 1:๋’ค์— ์ฃผ์„์ด ํ•„์š”ํ•˜์ง€ ์•Š๊ณ , ๋ช…๋ น๋ฌธ ๊ทธ๋ฃน ๋’ค์—์„œ๋งŒ ์ฃผ์„์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

4.8.4.3 default ๋ผ๋ฒจ ์กด์žฌ

๊ฐ ์Šค์œ„์น˜๋ฌธ์€ default ๊ตฌ๋ฌธ์ด ์•„๋ฌด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ํฌํ•จํ•˜์ง€ ์•Š๋”๋ผ๋„, ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์™ธ: ์—ด๊ฑฐํ˜•์— ๋Œ€ํ•œ ์Šค์œ„์น˜๋ฌธ์€ ๋ชจ๋“  ๋ช…์‹œ์  ์ผ€์ด์Šค๋ฅผ ์ฒ˜๋ฆฌํ•œ ๊ฒฝ์šฐ default ๊ตฌ๋ฌธ ๊ทธ๋ฃน์„ ์ƒ๋žตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด IDE ๋‚˜ ๊ธฐํƒ€ ๋ถ„์„๋„๊ตฌ๋Š” ๊ฒฝ๊ณ ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

4.8.5 ์• ๋„ˆํ…Œ์ด์…˜

4.8.5.1 ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜

ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜์€ ์ž๋ฃŒํ˜• ๋ฐ”๋กœ ์•ž์— ๋ถ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Taget(ElementType.TYPE_USE)๊ฐ™์€ ๋ฉ”ํƒ€-์• ๋„ˆํ…Œ์ด์…˜์ด๋ผ๋ฉด ํƒ€์ž… ์• ๋„ˆํ…Œ์ด์…˜์ž…๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

final @Nullable String name;

public @Nullable Person getPersonByName(String name);

4.8.5.2 ํด๋ž˜์Šค ์• ๋„ˆํ…Œ์ด์…˜

ํด๋ž˜์Šค์— ์ ์šฉ๋˜๋Š” ์• ๋„ˆํ…Œ์ด์…˜์€ ๋ฌธ์„œ ๋ธ”๋ก ๋ฐ”๋กœ ๋’ค์— ๋‚˜ํƒ€๋‚˜๋ฉฐ, ๊ฐ๊ฐ์€ ์‚ฌ์šฉ๋˜๋Š” ์œ„์น˜์—(ํ•œ์ค„์— ํ•˜๋‚˜์”ฉ) ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค. ์ด ์ค„๋ฐ”๊ฟˆ์€ ์ค„๋ฐ”๊ฟˆ์„ ๊ตฌ์„ฑํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ(์ค„ ๋ฐ”๊ฟˆ ์„น์…˜ 4.5), ๋“ค์—ฌ์“ฐ๊ธฐ ๋ ˆ๋ฒจ์€ ์ฆ๊ฐ€ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

@Deprecated
@CheckReturnValue
public final class Frozzler { ... }

4.8.5.3 ๋ฉ”์„œ๋“œ์™€ ์ƒ์„ฑ์ž ์• ๋„ˆํ…Œ์ด์…˜

์ง์ „ ์„น์…˜๊ณผ ํ†ต์ผํ•˜๊ฒŒ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

@Deprecated
@Override
public String getNameIfPresent() { ... }

์˜ˆ์™ธ: ๋‹จ ํ•˜๋‚˜์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์—†๋Š” ์• ๋„ˆํ…Œ์ด์…˜์€ ์‹œ๊ทธ๋‹ˆ์ฒ˜์˜ ์ฒซ๋ฒˆ์งธ ๋ผ์ธ์— ๊ฐ™์ด ํ‘œ์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

@Override public int hashCode() { ... }

4.8.5.4 ํ•„๋“œ ์• ๋„ˆํ…Œ์ด์…˜

ํ•„๋“œ์— ๋ถ™์€ ์• ๋„ˆํ…Œ์ด์…˜ ๋˜ํ•œ ๋ฌธ์„œ ๋ธ”๋ก ๋’ค์— ๋ถ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ด ๊ฒฝ์šฐ ์—ฌ๋Ÿฌ ์• ๋„ˆํ…Œ์ด์…˜(๋งค๊ฐœ๋ณ€์ˆ˜ํ™” ๋˜์—ˆ์„ ๊ฐ€๋Šฅ์„ฑ์ด ์žˆ๋Š”)์€ ๊ฐ™์€ ๋ผ์ธ์— ์ •๋ ฌ๋ฉ๋‹ˆ๋‹ค.; ์˜ˆ์‹œ:

@Partial @Mock DataLoader loader;

4.8.6 ์ฃผ์„

์ด ์„น์…˜์—์„œ๋Š” ๊ตฌํ˜„ ์ฃผ์„์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค. Javadoc ์€ ์„น์…˜ 7์—์„œ ๋ณ„๋„๋กœ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๋งค ์ค„ ๋ฐ”๊ฟˆ์€ ์ž„์˜์˜ ๊ณต๋ฐฑ ๋’ค์— ๊ตฌํ˜„ ์„ค๋ช…์ด ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ฃผ์„์€ ์ค„์„ ๊ณต๋ฐฑ์œผ๋กœ ๋งŒ๋“ค์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.8.6.1 ๋ธ”๋ก ์ฃผ์„ ์Šคํƒ€์ผ

๋ธ”๋ก ์ฃผ์„์€ ์ฃผ๋ณ€ ์ฝ”๋“œ์™€ ๋™์ผํ•œ ๋ ˆ๋ฒจ๋กœ ๋“ค์—ฌ์“ฐ๊ธฐ ๋ฉ๋‹ˆ๋‹ค. /* ... */์Šคํƒ€์ผ์ด๋‚˜ // ...์Šคํƒ€์ผ์ด ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ์ค„ ์ฃผ์„/* ... */์˜ ๊ฒฝ์šฐ ๋ฐ˜๋“œ์‹œ ํ›„์† ์ค„์ด *์ •๋ ฌ๋œ ๊ฒƒ์œผ๋กœ ์‹œ์ž‘๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

/*
 * ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.          // ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค.           /* ์ด๊ฒƒ๋„ 
 *                   //                     * ๊ดœ์ฐฎ์Šต๋‹ˆ๋‹ค. */
 */

์ฃผ์„์€ ๋ณ„ํ‘œ๋‚˜ ๊ธฐํƒ€ ๋‹ค๋ฅธ ๋ฌธ์ž๋กœ ๊ทธ๋ ค์ง„ ๋ฐ•์Šค์— ํฌํ•จ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

ํŒ: ์—ฌ๋Ÿฌ ์ค„ ์ฃผ์„์„ ์ž‘์„ฑ ํ•  ๋•Œ ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ฝ”๋“œ ํŽธ์ง‘๊ธฐ๊ฐ€ ํ•„์š”ํ•œ ๊ฒฝ์šฐ(paragraph-style) ์ค„์„ ๋‹ค์‹œ ์ •๋ ฌํ•˜๋„๋ก ํ•œ๋‹ค๋ฉด /* ... */์Šคํƒ€์ผ์„ ์‚ฌ์šฉํ•˜์„ธ์š”. ๋Œ€๋ถ€๋ถ„์˜ ํŽธ์ง‘๊ธฐ๋Š” // ...์Šคํƒ€์ผ ์ฃผ์„ ๋ธ”๋ก์—์„œ ์ค„์„ ๋ฐ”๊พธ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

4.8.7 ์ ‘๊ทผ์ œํ•œ์ž

ํด๋ž˜์Šค๋‚˜ ๋ฉค๋ฒ„ ์ ‘๊ทผ์ œํ•œ์ž๊ฐ€ ์žˆ๋‹ค๋ฉด, Java Language Specification ์— ์ •์˜๋œ ๋ฐฉ์‹์— ๋”ฐ๋ผ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.:

public protected private abstract default static final transient volatile synchronized native strictfp

4.8.8 ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด

long ํ˜•ํƒœ์˜ ์ •์ˆ˜ ๋ฆฌํ„ฐ๋Ÿด์€ ๋Œ€๋ฌธ์ž L ์„ ์ ‘๋ฏธ์‚ฌ๋กœ ๋ถ™์ž…๋‹ˆ๋‹ค. ์ˆซ์ž 1๊ณผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•จ์ด๋ฏ€๋กœ ์ ˆ๋Œ€ ์†Œ๋ฌธ์ž๋ฅผ ์‚ฌ์šฉํ•ด์„œ๋Š” ์•ˆ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, 3000000000l ๋Œ€์‹  3000000000L

5 ์ด๋ฆ„์ง“๊ธฐ

5.1 ๋ชจ๋“  ์‹๋ณ„์ž์— ๋Œ€ํ•œ ๊ณตํ†ต ๊ทœ์น™

์‹๋ณ„์ž๋Š” ์•„๋ž˜์— ์„ค๋ช… ํ•  ๋ช‡๋ช‡ ๊ฒฝ์šฐ์— ์˜ค์ง ASCII ๋ฌธ์ž์™€ ์ˆซ์ž, ๋ฐ‘์ค„๋งŒ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์œ ํšจํ•œ ์‹๋ณ„์ž ์ด๋ฆ„์€ \w+ ์ •๊ทœ์‹ ๊ทœ์น™์— ๋“ค์–ด๋งž์Šต๋‹ˆ๋‹ค.

Google ์Šคํƒ€์ผ์—์„œ ํŠน์ˆ˜์ ‘๋‘์‚ฌ๋‚˜ ์ ‘๋ฏธ์‚ฌ๋Š” ์‚ฌ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์ด๋Ÿฌํ•œ ์ด๋ฆ„๋“ค์€ Google ์Šคํƒ€์ผ์ด ์•„๋‹™๋‹ˆ๋‹ค.: name_๊ณผ mName, s_name, kName.

5.2 ์‹๋ณ„์ž ์œ ํ˜•์— ๋”ฐ๋ฅธ ๊ทœ์น™

5.2.1 ํŒจํ‚ค์ง€๋ช…

ํŒจํ‚ค์ง€๋ช…์€ ์˜์–ด ์†Œ๋ฌธ์ž์™€ ์ˆซ์ž๋งŒ(๋ฐ‘์ค„ ๊ธˆ์ง€)์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์—ฐ์†์ ์ธ ๋‹จ์–ด๋“ค๋„ ํ•œ๊บผ๋ฒˆ์— ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, com.example.deepใ„ดpace๋‚˜ com.example.deep_space๊ฐ€ ์•„๋‹Œ, com.example.deepspace๋กœ ๋ช…๋ช…๋ฉ๋‹ˆ๋‹ค.

5.2.2 ํด๋ž˜์Šค๋ช…

ํด๋ž˜์Šค๋ช…์€ UpperCamelCase ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ํด๋ž˜์Šค๋ช…์€ ๋ช…์‚ฌ ๋˜๋Š” ๋ช…์‚ฌ๊ตฌ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, Character๋‚˜ ImmutableList. ์ธํ„ฐํŽ˜์ด์Šค๋ช… ๋˜ํ•œ ๋ช…์‚ฌ๋‚˜ ๋ช…์‚ฌ๊ตฌ๋กœ ํ‘œํ˜„๋ฉ๋‹ˆ๋‹ค๋งŒ(์˜ˆ๋ฅผ ๋“ค์–ด, List), ๋•Œ๋•Œ๋กœ ํ˜•์šฉ์‚ฌ๋‚˜ ํ˜•์šฉ์‚ฌ๊ตฌ๋กœ ํ‘œํ˜„๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.(์˜ˆ๋ฅผ ๋“ค์–ด, Readable)

์–ด๋…ธํ…Œ์ด์…˜๋ช…์— ๋Œ€ํ•œ ํŠน๋ณ„ํ•˜๊ฑฐ๋‚˜ ์ž˜ ์ •๋ฆฝ๋œ ๊ทœ์น™์€ ์—†์Šต๋‹ˆ๋‹ค.

ํ…Œ์ŠคํŠธ ํด๋ž˜์Šค๋ช…์€ ํ•ญ์ƒ Test๋กœ ๋๋‚˜์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, HashIntegrationTest. ๋งŒ์•ฝ ๋‹จ์ผ ํด๋ž˜์Šค๋ฅผ ํฌํ•จํ•œ๋‹ค๋ฉด ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ด๋ฆ„์— Test๊ฐ€ ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด HashImplTest.

5.2.3 ๋ฉ”์„œ๋“œ๋ช…

๋ฉ”์„œ๋“œ๋ช…์€ lowerCamelCase ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์„œ๋“œ๋ช…์€ ๋™์‚ฌ ๋˜๋Š” ๋™์‚ฌ๊ตฌ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, sendMessage๋‚˜ stop.

JUnit ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋ช…์—์„œ ๋ฐ‘์ค„์ด ํ‘œ์‹œ๋˜์–ด ์ด๋ฆ„์˜ ๋…ผ๋ฆฌ์  ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ๊ตฌ๋ถ„ ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ฐ ๊ตฌ์„ฑ์š”์†Œ๋“ค์€ lowerCamelCase๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด transferMoney_deductsFromSource. ๋‹จ ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋ช…์„ ์œ„ํ•œ ํ•˜๋‚˜์˜ ์ •ํ™•ํ•œ ๋ฐฉ๋ฒ•์€ ์—†์Šต๋‹ˆ๋‹ค.

5.2.4 ์ƒ์ˆ˜๋ช…

์ƒ์ˆ˜๋ช…์€ UPPER_SNAKE_CASE๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.: ํ•˜๋‚˜์˜ ๋ฐ์ค„๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๋Œ€๋ฌธ์ž. ํ•˜์ง€๋งŒ ์ƒ์ˆ˜๋ž€ ๋ฌด์—‡์ผ๊นŒ์š”?

์ƒ์ˆ˜๋Š” ๋‚ด์šฉ์ด ์™„์ „ํžˆ ๋ถˆ๋ณ€ํ•˜๊ณ  ๋ฉ”์„œ๋“œ์—์„œ ๋ถ€์ž‘์šฉ์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” static final ํ•„๋“œ์ž…๋‹ˆ๋‹ค. ์•„๋ž˜ ์˜ˆ์‹œ๋Š” ๊ธฐ๋ณธ ๋ฐ ๋ฌธ์ž์—ด, ๋ถˆ๋ณ€ ๊ฐ’ ํด๋ž˜์Šค, null๋กœ ์„ค์ •๋œ ๋ชจ๋“  ๊ฒƒ๋“ค ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ์ƒ์ˆ˜๋ผ ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹จ์ˆœํžˆ ์˜ค๋ธŒ์ ํŠธ์˜ ๋ณ€๊ฒฝ์„ ๋ง‰๋Š” ๊ฒƒ์œผ๋กœ๋Š” ์ถฉ๋ถ„ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์˜ˆ์‹œ:

// ์ƒ์ˆ˜
static final int NUMBER = 5;
static final ImmutableList<String> NAMES = ImmutableList.of("Ed", "Ann");
static final Map<String, Integer> AGES = ImmutableMap.of("Ed", 35, "Ann", 32);
static final Joiner COMMA_JOINER = Joiner.on(','); // Joiner๋Š” ๋ถˆ๋ณ€์ž…๋‹ˆ๋‹ค.
static final SomeMutableType[] EMPTY_ARRAY = {};

// ์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ ๊ฒƒ๋“ค
static String nonFinal = "non-final";
final String nonStatic = "non-static";
static final Set<String> mutableCollection = new HashSet<String>();
static final ImmutableSet<SomeMutableType> mutableElements = ImmutableSet.of(mutable);
static final ImmutableMap<String, SomeMutableType> mutableValues =
        ImmutableMap.of("Ed", mutableInstance, "Ann", mutableInstance2);
static final Logger logger = Logger.getLogger(MyClass.getName());
static final String[] nonEmptyArray = {"these", "can", "change"};

์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ์ด๋ฆ„๋“ค์€ ๋ช…์‚ฌ ๋˜๋Š” ๋ช…์‚ฌ๊ตฌ ์ž…๋‹ˆ๋‹ค.

5.2.5 ์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ ํ•„๋“œ๋ช…

์ƒ์ˆ˜๊ฐ€ ์•„๋‹Œ ํ•„๋“œ(static ๋“ฑ ๊ธฐํƒ€)๋ช…์€ lowerCamelCase ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

์ผ๋ฐ˜์ ์œผ๋กœ ์ด ์ด๋ฆ„๋“ค์€ ๋ช…์‚ฌ ๋˜๋Š” ๋ช…์‚ฌ๊ตฌ ์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, computedValues๋‚˜ index.

5.2.6 ๋งค๊ฐœ๋ณ€์ˆ˜๋ช…

๋งค๊ฐœ๋ณ€์ˆ˜๋ช…์€ lowerCamelCase ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

public ๋ฉ”์„œ๋“œ์—์„œ ํ•œ๊ธ€์ž ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” ๊ธˆ์ง€๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5.2.7 ์ง€์—ญ๋ณ€์ˆ˜๋ช…

์ง€์—ญ๋ณ€์ˆ˜๋ช…์€ lowerCamelCase ๋กœ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

final ์ด๊ฑฐ๋‚˜ ๋ถˆ๋ณ€์ผ ๋•Œ์—๋„, ์ง€์—ญ๋ณ€์ˆ˜๋Š” ์ƒ์ˆ˜๋กœ ๊ฐ„์ฃผ๋˜์ง€ ์•Š๊ณ , ์ƒ์ˆ˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

5.2.8 ํƒ€์ž…๋ณ€์ˆ˜๋ช…

๊ฐ๊ฐ์˜ ํƒ€์ž…๋ณ€์ˆ˜๋ช…์€ ๋‹ค์Œ ๋‘ ๊ฐ€์ง€ ์Šคํƒ€์ผ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค.:

  • ํ•˜๋‚˜์˜ ์˜๋ฌธ ๋Œ€๋ฌธ์ž, ์„ ํƒ์ ์œผ๋กœ ํ•˜๋‚˜์˜ ์ˆซ์ž๊ฐ€ ๋”ฐ๋ผ์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (E๋‚˜ T, X, T2 ์ฒ˜๋Ÿผ)
  • ํด๋ž˜์Šค์— ์‚ฌ์šฉ๋˜๋Š”(ํด๋ž˜์Šค๋ช…, ์„น์…˜ 5.2.2 ์ฐธ์กฐ) ํ˜•์‹๋ช…์œ„์„ธ ์˜๋ฌธ ๋Œ€๋ฌธ์ž T๊ฐ€ ๋ถ™์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. (์˜ˆ๋ฅผ ๋“ค์–ด, RequestT, FooBarT)

5.3 ์นด๋ฉœ์ผ€์ด์Šค: ์ •์˜๋จ

๋•Œ๋•Œ๋กœ ๋‘๊ธ€์ž ๋‹จ์–ด๋‚˜ "IPv6", "IOS"๊ฐ™์€ ์ผ๋ฐ˜์ ์ด์ง€ ์•Š์€ ํ˜•ํƒœ์˜ ๊ตฌ์กฐ์ผ ๋•Œ ์˜๋ฌธ์„ ์นด๋ฉœ์ผ€์ด์Šค๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ•ฉ๋ฆฌ์ ์ธ ๋ฐฉ๋ฒ•์€ ์—ฌ๋Ÿฌ๊ฐ€์ง€๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ์ธก ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด, Google ์Šคํƒ€์ผ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์€ (๊ฑฐ์˜)๊ฒฐ์ •์ ์ธ ํ˜•ํƒœ๋ฅผ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

์‚ฐ๋ฌธ์ฒด๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.:

  1. ํ”„๋ ˆ์ด์ฆˆ๋ฅผ ์ผ๋ฐ˜ ASCII ๋กœ ๋ฐ”๊พธ๊ณ  ์–ดํผ์ŠคํŠธ๋กœํ”ผ๋ฅผ ์ œ๊ฑฐํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:
    "Mรผller's algorithm"์€ "Muellers algorithm"์œผ๋กœ ๋ฐ”๋€” ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  2. ๊ฒฐ๊ณผ๋ฅผ ๊ณต๋ฐฑ๊ณผ ๋‚˜๋จธ์ง€ ๊ตฌ๋‘์ (๋ณดํ†ต ํ•˜์ดํ”ˆ)์œผ๋กœ ๊ตฌ๋ถ„๋˜๋Š” ๋‹จ์–ด๋ณ„๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค.
    • ๊ถŒ์žฅ: ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉ๋˜๋Š” ์นด๋ฉœ์ผ€์ด์Šค ํ˜•ํƒœ์˜ ๋‹จ์–ด๋ผ๋ฉด ์ด๋ฅผ ๊ตฌ์„ฑ ์„ฑ๋ถ„(์˜ˆ๋ฅผ ๋“ค์–ด, "AdWords"๋Š” "ad words"๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.)์œผ๋กœ ๋‚˜๋ˆ•๋‹ˆ๋‹ค. "IOS"๊ฐ™์€ ๋‹จ์–ด๋Š” ์‹ค์ œ๋กœ ์นด๋ฉœ์ผ€์ด์Šค๊ฐ€ ์•„๋‹˜์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.; ์ด๋Š” ๋ชจ๋“  ๊ทœ์น™์„ ๋”ฐ๋ฅด์ง€ ์•Š์œผ๋ฏ€๋กœ, ๊ถŒ์žฅ์‚ฌํ•ญ์ด ์ ์šฉ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  3. ์ด์ œ ์ „๋ถ€(์•ฝ์–ด๋ฅผ ํฌํ•จํ•ด) ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ณ , ๊ฐ ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๋งŒ ๋Œ€๋ฌธ์ž๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.:
    • ... ๊ฐ ๋‹จ์–ด๋ฅผ UpperCamelCase ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜,
    • ... ๊ฐ ๋‹จ์–ด๋ฅผ lowerCamelCase ๋กœ ๋ฐ”๊ฟ‰๋‹ˆ๋‹ค.
  4. ๋งˆ์ง€๋ง‰์œผ๋กœ, ๋ชจ๋“  ๋‹จ์–ด๋ฅผ ๋‹จ์ผ ์‹๋ณ„์ž๋กœ ๊ฒฐํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์›๋ž˜ ๋‹จ์–ด์˜ ๋Œ€์†Œ๋ฌธ์ž๋Š” ๊ฑฐ์˜ ์™„์ „ํžˆ ๋ฌด์‹œ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด:

Prose form Correct Incorrect
"XML HTTP request" XmlHttpRequest XMLHTTPRequest
"new customer ID" newCustomerId newCustomerID
"inner stopwatch" innerStopwatch innerStopWatch
"supports IPv6 on iOS?" supportsIpv6OnIos supportsIPv6OnIOS
"YouTube importer" YouTubeImporter YoutubeImporter*
  • ํ—ˆ์šฉ๋˜์ง€๋งŒ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ฐธ๊ณ : ์˜์–ด์—์„œ ์ผ๋ถ€ ๋‹จ์–ด๋“ค์€ ํ•˜์ดํ”ˆ์œผ๋กœ ๋ชจํ˜ธํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค.: ์˜ˆ๋ฅผ ๋“ค์–ด "nonempty"์™€ "non-empty"๋Š” ๋ชจ๋‘ ์˜ณ๊ธฐ๋•Œ๋ฌธ์—, ์ผ๋ถ€ checkNonempty๋‚˜ checkNonEmpty์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ช…์€ ์˜ณ์Šต๋‹ˆ๋‹ค.

6 ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์‹ค์Šต

6.1 @Override: ํ•ญ์ƒ ํ•˜์šฉ

@Override ๊ฐ€ ํ—ˆ์šฉ ๋  ๋•Œ ๋งˆ๋‹ค ์–ด๋…ธํ…Œ์ด์…˜์œผ๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์ƒ์œ„ ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ์žฌ์ •์˜์™€ ์ธํ„ฐํผ์ด์Šค ๋ฉ”์„œ๋“œ ๊ตฌํ˜„, ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ ์ง€์ •ํ•˜๋Š” ๊ฒƒ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์™ธ: @Override๋Š” ๋ถ€๋ชจ ๋ฉ”์„œ๋“œ๊ฐ€ @Deprecated์ธ ๊ฒฝ์šฐ์ƒ๋žต ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

6.2 ์˜ˆ์™ธ์žก๊ธฐ: ๋ฌด์‹œํ•˜์ง€ ์•Š์Œ

์•„๋ž˜ ์ž‘์„ฑ๋œ ๊ฒฝ์šฐ๋ฅผ ์ œ์™ธํ•˜๊ณ , ์˜ˆ์™ธ๋ฅผ ์žก๊ณ  ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๊ฒƒ์€ ๋งค์šฐ ๋“œ๋ญ…๋‹ˆ๋‹ค. (์ผ๋ฐ˜์ ์ธ ์‘๋‹ต์€ ๋กœ๊ทธ๋ฅผ ๊ธฐ๋กํ•˜๊ฑฐ๋‚˜, "๋ถˆ๊ฐ€๋Šฅ"ํ•˜๋‹ค๊ณ  ๊ณ ๋ ค๋  ๊ฒฝ์šฐ AssertionError๋กœ ๋‹ค์‹œ ๋˜์ง‘๋‹ˆ๋‹ค.)

catch ๋ธ”๋ก์—์„œ ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๋Š”๊ฒƒ์ด ์ •๋ง๋กœ ์ ์ ˆ ํ•  ๋•Œ, ์ •๋‹นํ™” ๋˜๋Š” ์ด์œ ๋ฅผ ์ฃผ์„์œผ๋กœ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

try {
    int i = Integer.parseInt(response);
    return handleNumericResponse(i);
} catch (NumberFormatException ok) {
    // ์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.; ๊ดœ์ฐฎ์œผ๋‹ˆ ๊ทธ๋ƒฅ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
}
return handleTextResponse(response);

์˜ˆ์™ธ: ํ…Œ์ŠคํŠธ์—์„œ, ์žกํžŒ ์˜ˆ์™ธ์˜ ์ด๋ฆ„์ด expected๊ฑฐ๋‚˜ expected๋กœ ์‹œ์ž‘ํ•  ๊ฒฝ์šฐ ์ฃผ์„ ์—†์ด ๋ฌด์‹œ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค์Œ์€ ํ…Œ์ŠคํŠธ๊ฐ€ ์˜ˆ์™ธ๋ฅผ ๋˜์งˆ๊ฒƒ์ด๋ผ๋Š”๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๋งค์šฐ ์ผ๋ฐ˜์ ์ธ ๊ด€์šฉ๊ตฌ์ด๋ฏ€๋กœ ์ฃผ์„์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค.

try {
    emptyStack.pop();
    fail();
} catch (NoSuchElementException expected) {
}

6.3 ์ •์  ๋ฉค๋ฒ„: ํด๋ž˜์Šค๋กœ ์ •๊ทœํ™”

์ •์  ํด๋ž˜์Šค ๋ฉค๋ฒ„์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๊ทœํ™”๋˜์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ, ํ•ด๋‹น ํด๋ž˜์Šค๋ช…์œผ๋กœ ์ •๊ทœํ™” ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Foo aFoo = ...;
Foo.aStaticMethod(); // ์ข‹์Œ
aFoo.aStaticMethod(); // ๋‚˜์จ
somethingThatYieldsAFoo().aStaticMethod(); // ๋งค์šฐ ๋‚˜์จ

6.4 Finalizers: ์‚ฌ์šฉ๋˜์ง€ ์•Š์Œ

Object.finalize๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ฒƒ์€ ๊ทนํžˆ ๋“œ๋ญ…๋‹ˆ๋‹ค.

ํŒ: ํ•˜์ง€๋งˆ์„ธ์š”. ์ •๋ง๋กœ ํ•ด์•ผํ•˜๋Š” ๊ฒฝ์šฐ, ์ดํŽ™ํ‹ฐ๋ธŒ ์ž๋ฐ”์˜ ํ•ญ๋ชฉ , "์•„์ดํ…œ 8. finalizer์™€ cleaner ์‚ฌ์šฉ์„ ํ”ผํ•˜๋ผ."๋ฅผ ๋งค์šฐ ์ฃผ์˜๊นŠ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•œ ๋’ค, ํ•˜์ง€๋งˆ์„ธ์š”.

7 Javadoc

7.1 ํ˜•์‹ํ™”

7.1.1 ์ผ๋ฐ˜ ํ˜•์‹

Javadoc ๋ธ”๋ก์˜ ์ผ๋ฐ˜์ ์ธ ๊ตฌ์กฐ๋Š” ๋‹ค์Œ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.:

/**
 * ์—ฌ๋Ÿฌ์ค„์˜ Javadoc ํ…์ŠคํŠธ๊ฐ€ ์—ฌ๊ธฐ ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค,
 * ์ผ๋ฐ˜์ ์œผ๋กœ ๋ž˜ํ•‘๋ฉ๋‹ˆ๋‹ค ...
 */
public int method(String p1) { ... }

... ๋˜๋Š” ์•„๋ž˜ ํ•œ ์ค„ ์˜ˆ์‹œ์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.:

/** ํŠนํžˆ ์งง์€ Javadoc ์ž…๋‹ˆ๋‹ค. */

๊ธฐ๋ณธ ํ˜•์‹์€ ์–ธ์ œ๋“  ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ํ•œ ์ค„ ํ˜•์‹์€ Javadoc ๋ธ”๋ก(์ฃผ์„๊ณผ ๋งˆ์ปค๋ฅผ ํฌํ•จํ•˜๋Š”) ์ „์ฒด๊ฐ€ ํ•œ ์ค„์ด ๋  ์ˆ˜ ์žˆ์„ ๊ฒฝ์šฐ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” @return๊ณผ ๊ฐ™์€ ๋ธ”๋ก ํƒœ๊ทธ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ์—๋งŒ ์ ์šฉ๋จ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

7.1.2 ๋ฌธ๋‹จ

ํ•˜๋‚˜์˜ ๋นˆ ์ค„-์ฆ‰ ์ •๋ ฌ๋œ ์„ ํ–‰ ๋ณ„ํ‘œ(*)๋งŒ์ด ํฌํ•จ๋œ ์ค„-์€ ๋ฌธ๋‹จ ์‚ฌ์ด์— ๋‚˜ํƒ€๋‚˜๊ณ , ๋ธ”๋ก ํƒœ๊ทธ ๊ทธ๋ฃน์ด ์žˆ๋Š” ๊ฒฝ์šฐ ์•ž์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค. ์ฒซ๋ฒˆ์งธ๋ฅผ ์ œ์™ธํ•œ ๊ฐ ๋ฌธ๋‹จ์€ ์ฒซ๋ฒˆ์งธ ๋‹จ์–ด ์•ž์— ๊ณต๋ฐฑ ์—†์ด <p>๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

7.1.3 ๋ธ”๋ก ํƒœ๊ทธ

์‚ฌ์šฉ๋˜๋Š” ํ‘œ์ค€ "๋ธ”๋ก ํƒœ๊ทธ"๋Š” @param, @return, @throws, @deprecated๋กœ ํ‘œ์‹œ๋˜๋ฉฐ, ๋นˆ ์„ค๋ช…์œผ๋กœ ํ‘œ์‹œ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

7.2 ์š”์•ฝ ๋ถ€๋ถ„

๊ฐ Javadoc ๋ธ”๋ก์€ ๊ฐ„๋žตํ•œ ์š”์•ฝ ๋ถ€๋ถ„์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ถ€๋ถ„์€ ๊ต‰์žฅํžˆ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.: ํด๋ž˜์Šค์™€ ๋ฉ”์„œ๋“œ์˜ ์ธ๋ฑ์Šค์ฒ˜๋Ÿผ ํŠน์ • ์ปจํ…์ŠคํŠธ์— ๋‚˜ํƒ€๋‚˜๋Š” ํ…์ŠคํŠธ์˜ ์œ ์ผํ•œ ํŒŒํŠธ์ž…๋‹ˆ๋‹ค.

์ด๋Š” ์™„์ „ํ•œ ๋ฌธ์žฅ์ด ์•„๋‹Œ, ๋ช…์‚ฌ๊ตฌ๋‚˜ ๋™์‚ฌ๊ตฌ ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค. ์ด๋Š” Save the record.๊ฐ™์€ ์™„์ „ํ•œ ๋ช…๋ น๋ฌธ์„ ํ˜•์„ฑํ•˜์ง€๋„ ์•Š๊ณ , A {@code Foo} is a...๋‚˜ This method returns... ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜, ๋Œ€๋ฌธ์ž๋กœ ์“ฐ์—ฌ์ ธ ์žˆ๊ณ  ๋งˆ์น˜ ์™„์ „ํ•œ ๋ฌธ์žฅ์ธ ๊ฒƒ ์ฒ˜๋Ÿผ ๊ตฌ๋‘์ ์ด ์ฐํ˜€ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒ: ํ”ํ•œ ์‹ค์ˆ˜๋Š” ๊ฐ„๋‹จํ•œ Javadoc ์„ /** @return the customer ID */ ์™€ ๊ฐ™์€์–‘์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋Š”๊ฒƒ ์ž…๋‹ˆ๋‹ค. ์ด๋Š” ํ‹€๋ ธ๊ณ , ๋ฐ˜๋“œ์‹œ /** Return the customer ID. */๋กœ ๋ฐ”๋€Œ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค.

7.3 Javadoc ์ด ์‚ฌ์šฉ๋˜๋Š” ๊ณณ

์•„๋ž˜ ๋ช‡๊ฐ€์ง€ ์˜ˆ์™ธ์™€ ํ•จ๊ป˜ Javadoc ์€ ์ตœ์†Œํ•œ, ๋ชจ๋“  publicํด๋ž˜์Šค์™€, public๋˜๋Š” protected ๋ฉค๋ฒ„์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

์š”๊ตฌ๋˜์ง€ ์•Š๋Š” Javadoc, ์„น์…˜ 7.3.4์— ์„ค๋ช… ๋œ ๊ฒƒ ์ฒ˜๋Ÿผ ์ถ”๊ฐ€์ ์ธ Javadoc ์ปจํ…์ธ  ๋˜ํ•œ ๋‚˜ํƒ€๋‚  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

7.3.1 ์˜ˆ์™ธ: ์ž๋ช…ํ•œ ๋ฉค๋ฒ„

Javadoc ์€ getFoo()๊ฐ™์€ ์ •๋ง ์„ค๋ช…ํ•  ๋งŒํ•œ๊ฒƒ์ด "foo ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค."๋Š” ๊ฒƒ ์™ธ์— ์•„๋ฌด๊ฒƒ๋„ ์—†๋Š” ๊ฒฝ์šฐ์™€ ๊ฐ™์ด "๋‹จ์ˆœํ•˜๊ณ , ๋ช…๋ฐฑํ•œ" ๋ฉค๋ฒ„๋“ค์— ๋Œ€ํ•œ ์„ ํƒ์‚ฌํ•ญ์ž…๋‹ˆ๋‹ค.

7.3.2 ์˜ˆ์™ธ: ์žฌ์ •์˜

Javadoc ์€ super ํƒ€์ž… ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ์— ํ•ญ์ƒ ์กด์žฌํ•˜๋Š”๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

7.3.4 ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ Javadoc

๋‹ค๋ฅธ ํด๋ž˜์Šค์™€ ๋ฉค๋ฒ„๋Š” ํ•„์š”ํ•˜๊ฑฐ๋‚˜ ์›ํ•˜๋Š” ๋Œ€๋กœ Javadoc ์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

๊ตฌํ˜„ ์ฃผ์„์ด ํด๋ž˜์Šค๋‚˜ ๋ฉค๋ฒ„์˜ ์ „์ฒด์ ์ธ ๋ชฉ์ ์ด๋‚˜ ๋™์ž‘์„ ์ •์˜ํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋  ๋•Œ๋Š” ์–ธ์ œ๋‚˜, ํ•ด๋‹น ์ฃผ์„์€ Javadoc ์œผ๋กœ(/**๋Œ€์‹ ) ์ž‘์„ฑ๋ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜๊ฐ€ ์•„๋‹Œ Javadoc ์€ ๋ฌผ๋ก  ๊ถŒ์žฅ๋˜์ง€๋งŒ, ์„น์…˜ 7.2๊ณผ, 7.1.1, 7.1.2, 7.1.3 ์„ ์—„๊ฒฉํ•˜๊ฒŒ ์ค€์ˆ˜ํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

About

๐Ÿ‡ฐ๐Ÿ‡ท ๊ตฌ๊ธ€ ์ž๋ฐ” ์Šคํƒ€์ผ ๊ฐ€์ด๋“œ ๋ฌธ์„œ ํ•œ๊ธ€ ๋ฒˆ์—ญ๋ณธ 2023

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published