JavaRush /Java Blog /Random-KO /Java ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.
Sdu
๋ ˆ๋ฒจ 17

Java ์ฝ”๋“œ์˜ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

Random-KO ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์ด ์ž๋ฃŒ์—๋Š” ๋‚˜์™€ ํ•จ๊ป˜ ์ผํ•˜๋Š” ์‚ฌ๋žŒ๋“ค์˜ Java ์ฝ”๋“œ์—์„œ ๋ณธ ๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์˜ค๋ฅ˜๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ๋ช…๋ฐฑํ•œ ์ด์œ ๋กœ ์ •์  ๋ถ„์„(์šฐ๋ฆฌ๋Š” qulice ์‚ฌ์šฉ )์€ ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋ฅผ ๋ชจ๋‘ ๊ฐ์ง€ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ์—ฌ๊ธฐ์— ๋‚˜์—ดํ•˜๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์˜ค๋ฅ˜๋Š” ๋ชจ๋‘ ์ผ๋ฐ˜์ ์ธ ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ, ํŠนํžˆ Java์™€ ๊ด€๋ จ์ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํด๋ž˜์Šค ์ด๋ฆ„
๊ท€ํ•˜์˜ ํด๋ž˜์Šค๋Š” " ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ๊ธฐ " , " ์ปจํŠธ๋กค๋Ÿฌ " , " ๊ด€๋ฆฌ์ž " ๋“ฑ์ด ์—†๋Š” ์‹ค์ œ ๊ฐ์ฒด์˜ ์ถ”์ƒํ™”์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค . ํด๋ž˜์Šค ์ด๋ฆ„์ด "-er"๋กœ ๋๋‚˜๋ฉด ์ž˜๋ชป๋œ ๋””์ž์ธ์ž…๋‹ˆ๋‹ค. ๋ฌผ๋ก  Apache์˜ StringUtils , FileUtils ๋ฐ IOUtils ์™€ ๊ฐ™์€ ์•ˆํ‹ฐํŒจํ„ด ๋„์šฐ๋ฏธ ํด๋ž˜์Šค ๋Š” ๋”์ฐํ•œ ๋””์ž์ธ ํŒจํ„ด์˜ ์ข‹์€ ์˜ˆ์ž…๋‹ˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค๋ฅผ ๊ตฌ๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ์ ‘๋ฏธ์‚ฌ ๋˜๋Š” ์ ‘๋‘์‚ฌ๋ฅผ ์ถ”๊ฐ€ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด, IRecord , IfaceEmployee ๋˜๋Š” RecordInterface ์™€ ๊ฐ™์€ ์ด๋ฆ„์€ ๋ชจ๋‘ ๋”์ฐํ•ฉ๋‹ˆ๋‹ค . ์ผ๋ฐ˜์ ์œผ๋กœ ์ธํ„ฐํŽ˜์ด์Šค ์ด๋ฆ„์€ ์‹ค์ œ ๊ฐœ์ฒด์˜ ์ด๋ฆ„์ด๊ณ , ํด๋ž˜์Šค ์ด๋ฆ„์€ ๊ตฌํ˜„ ์„ธ๋ถ€ ์‚ฌํ•ญ์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ตฌํ˜„์— ๋Œ€ํ•ด ๊ตฌ์ฒด์ ์œผ๋กœ ์–ธ๊ธ‰ํ•  ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ " Default ", " Simple " ๋˜๋Š” ์ด์™€ ์œ ์‚ฌํ•œ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด: class SimpleUser implements User {}; class DefaultRecord implements Record {}; class Suffixed implements Name {}; class Validated implements Content {};
๋ฉ”์†Œ๋“œ ์ด๋ฆ„
๋ฉ”์†Œ๋“œ๋Š” " something "์„ ๋ฐ˜ํ™˜ ํ•˜๊ฑฐ๋‚˜ " void "๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ”์†Œ๋“œ๊ฐ€ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒฝ์šฐ ํ•ด๋‹น ์ด๋ฆ„์€ ๋ฐ˜ํ™˜๋  ๋‚ด์šฉ์„ ์„ค๋ช…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด(" get " ์ ‘๋‘์‚ฌ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” ): boolean isValid(String name); String content(); int ageOf(File file); " void "๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์ด๋ฆ„์€ ๋ฉ”์„œ๋“œ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…์„ ๋ช…ํ™•ํžˆ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ด ๊ทœ์น™์—๋Š” JUnit void save(File file); void process(Work work); void append(File file, String line); ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ• ์ด๋ผ๋Š” ๋‹จ ํ•˜๋‚˜์˜ ์˜ˆ์™ธ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์•„๋ž˜์— ์„ค๋ช…๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ• ์ด๋ฆ„
JUnit ํ…Œ์ŠคํŠธ์˜ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ๊ณต๋ฐฑ ์—†์ด ์˜์–ด ๋ฌธ์žฅ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด ์„ค๋ช…ํ•˜๋Š” ๊ฒƒ์ด ๋” ์‰ฝ์Šต๋‹ˆ๋‹ค. /** * HttpRequest can return its content in Unicode. * @throws Exception If test fails */ public void returnsItsContentInUnicode() throws Exception { } JavaDoc์˜ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์žฅ์„ ํ…Œ์ŠคํŠธ ์ค‘์ธ ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ " can "์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์žฅ์€ ํ•ญ์ƒ " ๋ˆ„๊ตฐ๊ฐ€๋Š” ๋ญ”๊ฐ€๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค " ๋ผ๋Š” ๋ฌธ๊ตฌ์™€ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ๋™์ผํ•œ ๋‚ด์šฉ์„ ๋‚˜ํƒ€๋‚ด์ง€๋งŒ ํ…Œ์ŠคํŠธ ๋Œ€์ƒ์€ ์—†์Šต๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ ์ด๋ฆ„์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์ถ”๊ฐ€ํ•˜๋ฉด ์œ„์˜ ์˜ˆ์™€ ๊ฐ™์ด ์™„์ „ํ•œ ์˜์–ด ๋ฌธ์žฅ์ด ํ‘œ์‹œ๋ฉ๋‹ˆ๋‹ค. " HttpRequest๋Š” ํ•ด๋‹น ์ฝ˜ํ…์ธ ๋ฅผ ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค ." ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ โ€œ can โ€์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ์ ์— ์œ ์˜ํ•˜์„ธ์š”. JavaDoc ์ฃผ์„๋งŒ " can "์œผ๋กœ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ๋ฉ”์†Œ๋“œ ์ด๋ฆ„์€ ๋™์‚ฌ๋กœ ์‹œ์ž‘ํ•ด์„œ๋Š” ์•ˆ ๋ฉ๋‹ˆ๋‹ค( ๋ฒˆ์—ญ์ž์˜ ๋ง์— ๋”ฐ๋ฅด๋ฉด, ๋ถ„๋ช…ํžˆ ์ €์ž๋Š” ๋™์‚ฌ์˜ ๋ช…๋ นํ˜•์„ ์˜๋ฏธํ•œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค ). ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ๋ฅผ ์„ ์–ธํ•  ๋•Œ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.
๋ณ€์ˆ˜ ์ด๋ฆ„
timeOfDay , firstItem ๋˜๋Š” httpRequest ์™€ ๊ฐ™์€ ๋ณตํ•ฉ ๋ณ€์ˆ˜ ์ด๋ฆ„์„ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š” . ํด๋ž˜์Šค ๋ณ€์ˆ˜์™€ ๋ฉ”์†Œ๋“œ ๋ณ€์ˆ˜๋ฅผ ๋ชจ๋‘ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ํ•ด๋‹น ๋ฒ”์œ„์—์„œ ๋ชจํ˜ธํ•จ์„ ํ”ผํ•  ์ˆ˜ ์žˆ์„ ๋งŒํผ ๊ธธ์–ด์•ผ ํ•˜์ง€๋งŒ ๊ฐ€๋Šฅํ•˜๋ฉด ๋„ˆ๋ฌด ๊ธธ์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฆ„์€ ๋‹จ์ˆ˜ ๋˜๋Š” ๋ณต์ˆ˜ ๋ช…์‚ฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ: ์ƒ์„ฑ์ž๊ฐ€ ์ƒ์„ฑ๋œ ๊ฐ์ฒด์— ์ž…๋ ฅ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฒฝ์šฐ ์ƒ์„ฑ์ž ๋งค๊ฐœ๋ณ€์ˆ˜์™€ ํด๋ž˜์Šค ํ•„๋“œ ์‚ฌ์ด์— ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๊ฒฝ์šฐ ๋ชจ์Œ์„ ์ œ๊ฑฐํ•˜์—ฌ ์•ฝ์–ด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์˜ˆ: ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ๊ฐ€์žฅ ์ข‹์€ ๋ณ€์ˆ˜ ์ด๋ฆ„์€ ํ•ด๋‹น ํด๋ž˜์Šค์˜ ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ทธ๋ƒฅ ๋Œ€๋ฌธ์ž๋กœ ์“ฐ๋ฉด ๊ดœ์ฐฎ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋˜๋Š” ๊ฐ™์€ ๊ธฐ๋ณธ ์œ ํ˜•์— ๋Œ€ํ•ด์„œ๋Š” ์ ˆ๋Œ€๋กœ ๋™์ผํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค . ํŠน์„ฑ์ด ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋„ ํ˜•์šฉ์‚ฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด: List names; void sendThroughProxy(File file, Protocol proto); private File content; public HttpRequest request; public class Message { private String recipient; public Message(String rcpt) { this.recipient = rcpt; } } File file; User user; Branch branch; Integer number String string String contact(String left, String right);
์ƒ์„ฑ์ž
์˜ˆ์™ธ ์—†์ด ๊ฐ์ฒด ๋ณ€์ˆ˜์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ƒ์„ฑ์ž๋Š” ํ•˜๋‚˜๋งŒ ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๋ชจ๋“  ์ƒ์„ฑ์ž๋Š” ๋‹ค๋ฅธ ๋งค๊ฐœ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ด ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. public class Server { private String address; public Server(String uri) { this.address = uri; } public Server(URI uri) { this(uri.toString()); } }
์ผํšŒ์„ฑ ๋ณ€์ˆ˜
์–ด๋–ค ์ผ์ด ์žˆ์–ด๋„ ์ผํšŒ์„ฑ ๋ณ€์ˆ˜๋ฅผ ํ”ผํ•˜์„ธ์š”. "์ผํšŒ์šฉ"์ด๋ž€ ํ•œ ๋ฒˆ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ์˜ˆ์—์„œ์™€ ๊ฐ™์ด String name = "data.txt"; return new File(name); ๋ณ€์ˆ˜๋Š” ํ•œ ๋ฒˆ๋งŒ ์‚ฌ์šฉ๋˜๋ฉฐ ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๋‹จ์ˆœํ™”๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. return new File("data.txt"); ๋•Œ๋กœ๋Š” ๋งค์šฐ ๋“œ๋ฌธ ๊ฒฝ์šฐ(์ฃผ๋กœ ๋” ๋‚˜์€ ํ˜•์‹ํ™”๋กœ ์ธํ•ด) ์ผํšŒ์„ฑ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ทธ๋Ÿฌํ•œ ์ƒํ™ฉ์„ ํ”ผํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜์‹ญ์‹œ์˜ค.
์˜ˆ์™ธ.
๋ฌผ๋ก , ์˜ˆ์™ธ๋ฅผ ์ ˆ๋Œ€๋กœ "์‚ผ์ผœ์„œ๋Š”" ์•ˆ ๋˜๋ฉฐ, ๊ฐ€๋Šฅํ•œ ํ•œ ๋†’๊ฒŒ ๋˜์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐœ์ธ ๋ฉ”์†Œ๋“œ์˜ ์˜ˆ์™ธ๋Š” ์™ธ๋ถ€์—์„œ ์ฒ˜๋ฆฌ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ํ๋ฆ„์„ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด ์˜ˆ์™ธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์‹ญ์‹œ์˜ค. ์˜ˆ์ œ์˜ ์ฝ”๋“œ๊ฐ€ ์ž˜๋ชป๋˜์—ˆ์Šต๋‹ˆ๋‹ค. int size; try { size = this.fileSize(); } catch (IOException ex) { size = 0; } IOException์— "๋””์Šคํฌ๊ฐ€ ๊ฝ‰ ์ฐผ์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ํ‘œ์‹œ๋˜๋ฉด ํŒŒ์ผ ํฌ๊ธฐ๊ฐ€ 0์ด๋ผ๊ณ  ๊ฐ€์ •ํ•˜๊ณ  ๊ณ„์† ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?
๋“ค์—ฌ ์“ฐ๊ธฐ.
๋“ค์—ฌ์“ฐ๊ธฐ์˜ ๊ฒฝ์šฐ ์ผ๋ฐ˜์ ์ธ ๊ทœ์น™์€ ๊ด„ํ˜ธ๊ฐ€ ์ค„์„ ๋๋‚ด๊ฑฐ๋‚˜ ๊ฐ™์€ ์ค„์—์„œ ๋๋‚˜์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค(๋‹ซ๋Š” ๊ด„ํ˜ธ์—๋Š” ๋ฐ˜๋Œ€ ๊ทœ์น™์ด ์ ์šฉ๋ฉ๋‹ˆ๋‹ค). ์•„๋ž˜ ์˜ˆ์—์„œ๋Š” ์ฒซ ๋ฒˆ์งธ ๊ด„ํ˜ธ๊ฐ€ ๊ฐ™์€ ์ค„์—์„œ ๋‹ซํžˆ์ง€ ์•Š๊ณ  ๊ทธ ๋’ค์— ๋ฌธ์ž๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ ๋Œ€๊ด„ํ˜ธ ์•ž์—๋Š” ๋ฌธ์ž๊ฐ€ ์žˆ๊ณ  ํ˜„์žฌ ์ค„์—๋Š” ์—ฌ๋Š” ๋Œ€๊ด„ํ˜ธ๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋™์ผํ•œ ๋ฌธ์ œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. final File file = new File(directory, "file.txt"); ์˜ฌ๋ฐ”๋ฅธ ๋“ค์—ฌ์“ฐ๊ธฐ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค. StringUtils.join( Arrays.asList( "first line", "second line", StringUtils.join( Arrays.asList("a", "b") ) ), "separator" ); ๋“ค์—ฌ์“ฐ๊ธฐ์˜ ๋‘ ๋ฒˆ์งธ ์ค‘์š”ํ•œ ๊ทœ์น™์€ ๊ฐ€๋Šฅํ•œ ํ•œ ๋งŽ์€ ๋‚ด์šฉ์„ ํ•œ ์ค„(80์ž ์ด๋‚ด)์— ๋ฐฐ์น˜ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์œ„์˜ ์˜ˆ๋Š” ์••์ถ•๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์œ ํšจํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. StringUtils.join( Arrays.asList( "first line", "second line", StringUtils.join(Arrays.asList("a", "b")) ), "separator" );
์ค‘๋ณต ์ƒ์ˆ˜.
ํด๋ž˜์Šค ์ƒ์ˆ˜๋Š” ํด๋ž˜์Šค ๋ฉ”์†Œ๋“œ ๊ฐ„์— ์ •๋ณด์— ๋Œ€ํ•œ ์ ‘๊ทผ์„ ๊ณต์œ ํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฉฐ, ์ด ์ •๋ณด๋Š” ํด๋ž˜์Šค์˜ ํŠน์ง•( ! )์ž…๋‹ˆ๋‹ค. ๋ฌธ์ž์—ด์ด๋‚˜ ์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด์„ ๋Œ€์‹ ํ•˜์—ฌ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋งˆ์„ธ์š”. ๋งค์šฐ ๋‚˜์œ ์Šต๊ด€์ž…๋‹ˆ๋‹ค. ์ฝ”๋“œ๊ฐ€ ์˜ค์—ผ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ OOP ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์ƒ์ˆ˜๋Š” ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์˜๋ฏธ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์‹ค์ œ ์„ธ๊ณ„์—์„œ ์ด๋Ÿฌํ•œ ์ƒ์ˆ˜์˜ ์˜๋ฏธ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? class Document { private static final String D_LETTER = "D"; // bad practice private static final String EXTENSION = ".doc"; // good practice } ๋˜ ๋‹ค๋ฅธ ์ผ๋ฐ˜์ ์ธ ์‹ค์ˆ˜๋Š” ํ…Œ์ŠคํŠธ ๋ฉ”์„œ๋“œ์—์„œ ๋ฌธ์ž์—ด/์ˆซ์ž ๋ฆฌํ„ฐ๋Ÿด์˜ ์ค‘๋ณต์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ๋‹จ์œ„ ํ…Œ์ŠคํŠธ์—์„œ ์ƒ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑฐ ํ•˜์ง€๋งˆ! ๊ฐ ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์€ ์ž์ฒด ์ž…๋ ฅ ๊ฐ’ ์„ธํŠธ์—์„œ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ฐ๊ฐ์˜ ์ƒˆ๋กœ์šด ํ…Œ์ŠคํŠธ ๋ฐฉ๋ฒ•์— ์ƒˆ๋กœ์šด ํ…์ŠคํŠธ์™€ ์ˆซ์ž๋ฅผ ์‚ฌ์šฉํ•˜์‹ญ์‹œ์˜ค. ํ…Œ์ŠคํŠธ๋Š” ๋…๋ฆฝ์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๋‹ค๋ฉด ์™œ ๋™์ผํ•œ ์ž…๋ ฅ ์ƒ์ˆ˜๋ฅผ ๊ณต์œ ํ•ด์•ผ ํ• ๊นŒ์š”?
ํ…Œ์ŠคํŠธ ๋ฐ์ดํ„ฐ ์ปคํ”Œ๋ง.
๋‹ค์Œ์€ ํ…Œ์ŠคํŠธ ๋ฉ”์†Œ๋“œ๋ฅผ ํ›„ํ‚นํ•˜๋Š” ์˜ˆ์ž…๋‹ˆ๋‹ค: User user = new User("Jeff"); // maybe some other code here MatcherAssert.assertThat(user.name(), Matchers.equalTo("Jeff")); ๋งˆ์ง€๋ง‰ ์ค„์—์„œ๋Š” " Jeff "๋ฅผ ์ฒซ ๋ฒˆ์งธ ์ค„์— ์ง€์ •๋œ ๋™์ผํ•œ ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด๊ณผ ์—ฐ๊ฒฐํ•ฉ๋‹ˆ๋‹ค. ๋ช‡ ๋‹ฌ ํ›„ ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์„ธ ๋ฒˆ์งธ ์ค„์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์ด ๋ฐฉ๋ฒ•์—์„œ " Jeff "๊ฐ€ ์‚ฌ์šฉ ๋œ ๋‹ค๋ฅธ ์œ„์น˜๋ฅผ ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ์ถ”๊ฐ€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค . ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ๊ฑธ๋ฆผ์„ ๋ฐฉ์ง€ํ•˜๋ ค๋ฉด ๋ณ€์ˆ˜๋ฅผ ๋„์ž…ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION