๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ“š์ฝ์€ ์ฑ… ์ •๋ฆฌ

(39)
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 6์žฅ : ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋“œ๋Ÿฌ๋‚ด๊ธฐ 6.1 Given-When-Then์œผ๋กœ ํ…Œ์ŠคํŠธ ๊ตฌ์กฐํ™” JUnit์€ ์ž๋ฐ” ํด๋ž˜์Šค ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—๋Š” ์†ํ•˜์ง€ ์•Š์ง€๋งŒ ์ž๋ฐ”์—์„œ ๋‹จ์œ„ ํ…Œ์ŠคํŠธ ์ž‘์„ฑํ•˜๋Š” ์‚ฌ์‹ค์ƒ์˜ ํ‘œ์ค€์ด๋‹ค. ๋ฉ”์„œ๋“œ์— @Test๋งŒ ์ถ”๊ฐ€ํ•˜๋ฉด JUnit์ด ์•Œ์•„์„œ ํ…Œ์ŠคํŠธ๋กœ ์‹คํ–‰ํ•œ๋‹ค. ๋ฌธ์ œ ์ฝ”๋“œ @Test void setPlanetarySpeedIs7667() { CruiseControl cruiseControl = new CruiseControl(); cruiseControl.setPreset(SpeedPreset.PLANETARY_SPEED); Assertions.assertTrue(7667 == cruiseControl.getTargetSpeedKmh()); } ์œ„ ํ…Œ์ŠคํŠธ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•œ๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” ์ข€ ๋” ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”ํ•˜์—ฌ ์ฝ๊ธฐ ์‰ฝ๊ฒŒ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ..
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 5์žฅ : ๋ฌธ์ œ ๋ฐœ์ƒ์— ๋Œ€๋น„ํ•˜๊ธฐ 5.1 ๋น ๋ฅธ ์‹คํŒจ ๋ฌธ์ œ ์ฝ”๋“œ class CruiseControl { static final double SPEED_OF_LIGHT_KMH = 1079252850; static final double SPEED_LIMIT = SPEED_OF_LIGHT_KMH; private double targetSpeedKmh; void setTargetSpeedKmh(double speedKmh) { if (speedKmh < 0) { throw new IllegalArgumentException(); } else if (speedKmh ๊ฐ€์žฅ ๊ตฌ์ฒด์ ์ธ ์˜ˆ์™ธ๋ฅผ ์žก์ž!! ๋งŒ์•ฝ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ˆ์™ธ๋ฅผ ๋˜‘๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค๋ฉด ๋‹ค์ค‘ ์บ์น˜ ๋ฐฉ์‹์„ ์‚ฌ์šฉํ•˜์ž. ex) catch(NumberFormatException | IOExcep..
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 4์žฅ : ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ช…๋ช…ํ•˜๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ์ด๋ฆ„์„ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง“๋Š” ๊ฒƒ์€ ์ค‘์š”ํ•˜๋‹ค. ํ•˜์ง€๋งŒ ํŒจํ‚ค์ง€, ํด๋ž˜์Šค, ๋ฉ”์„œ๋“œ, ํ•„๋“œ, ๋งค๊ฐœ๋ณ€์ˆ˜, ์ง€์—ญ ๋ณ€์ˆ˜ ๋“ฑ ๋ช…๋ช…ํ•  ์š”์†Œ๊ฐ€ ๋„ˆ๋ฌด ๋งŽ๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ์š”์†Œ์— ์ข‹์€ ์ด๋ฆ„์„ ์ง“๋Š” ๊ฒƒ์€ ์–ด๋ ต๋‹ค. 4์žฅ์—์„œ๋Š” ์ฝ”๋“œ ์š”์†Œ์— ๊ฑธ๋งž๋Š” ์ด๋ฆ„์„ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด์„œ ๋ฐฐ์šด๋‹ค. ๋ช…๋ช…ํ•  ๋• ์ž๋ฐ” ๊ทœ์น™์ด ์ค‘์š”ํ•˜๋ฉฐ, ๋ฉ”์„œ๋“œ ๋ช…๋ช…์€ ๊ฐ„๊ฒฐํ•ด์•ผ๋งŒ ํ•˜๋ฉฐ ์˜๋ฏธ์—†๊ฑฐ๋‚˜ ํ•œ ๊ธ€์ž์งœ๋ฆฌ ์ด๋ฆ„์€ ํ”ผํ•ด์•ผ๋งŒ ํ•œ๋‹ค. 4.1 ์ž๋ฐ” ๋ช…๋ช… ๊ทœ์น™ ์‚ฌ์šฉํ•˜๊ธฐ ์•„๋ž˜ ์ฝ”๋“œ๋Š” ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์žˆ์„๊นŒ..? class Rover { static final double WalkingSpeed = 3; final String SerialNumber; double MilesPerHour; Rover(String NewSerialNumber) { SerialNumber = Ne..
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 3์žฅ : ์Šฌ๊ธฐ๋กญ๊ฒŒ ์ฃผ์„ ์‚ฌ์šฉํ•˜๊ธฐ 3.1 ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์€ ์ฃผ์„ ์—†์• ๊ธฐ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ์—†๋Š” ์ฃผ์„์€ ์—†์•ค๋‹ค. ๋Œ€์‹  ์ฝ”๋“œ๋งŒ ๋ณด์•„์„œ๋Š” ๋“œ๋Ÿฌ๋‚˜์ง€ ์•Š๋Š” ์ •๋ณด๋ฅผ "์ฃผ์„"์œผ๋กœ ํ‘œ์‹œํ•˜์ž. 3.2 ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ ์ œ๊ฑฐ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ๋Š” ์ผ๋ฐ˜์ ์ธ ์ฃผ์„๊ณผ ๋‹ฌ๋ฆฌ ๋ช…ํ™•ํžˆ ์„ค๋ช…ํžˆ ์—†๋‹ค. ์ด๋Š” ์ฝ”๋“œ์— ํ˜ผ๋ž€๋งŒ ๊ฐ€์ค‘์‹œํ‚ค๋Š” ์“ฐ๋ ˆ๊ธฐ๋ฅผ ๋ผ์–น๋Š” ๊ฒƒ๊ณผ ๊ฐ™๋‹ค. ์–ด์ฐจํ”ผ ์ฃผ์„ ์ฒ˜๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ๋‹ค์‹œ ์ฐพ์„ ์ผ์€ ์—†๋‹ค. ์ œ๊ฑฐํ•˜์ž. 3.3 ์ฃผ์„์„ ์ƒ์ˆ˜๋กœ ๋Œ€์ฒด 2์žฅ์—์„œ ๋ณด์•˜๋˜ "๋งค์ง๋„˜๋ฒ„" ์‚ฌ์šฉ ์‹œ ๊ฐ ๋„˜๋ฒ„์— ์˜๋ฏธ์— ๋Œ€ํ•œ ์ฃผ์„์„ ๋‹ฌ์•„๋†“๋Š” ๊ฒƒ์€ ๋‚˜์˜์ง€ ์•Š์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ํ•˜์ง€๋งŒ ์šฐ๋ฆฌ๋Š” "์ƒ์ˆ˜"๋ฅผ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ์ฃผ์„์—†์ด ์ฝ”๋“œ๋งŒ์œผ๋กœ ์ฃผ์„์„ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์„์„ "์ƒ์ˆ˜, ๋ณ€์ˆ˜, ํ•„๋“œ, ๋ฉ”์„œ๋“œ ์ด๋ฆ„"์œผ๋กœ ๋Œ€์ฒดํ•  ์ˆ˜ ์žˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์‹œ๋„ํ•˜์ž! 3.4 ์ฃผ์„์„ ์œ ํ‹ธ๋ฆฌํ‹ฐ ๋ฉ”์„œ๋“œ๋กœ ๋Œ€์ฒด // round to intege..
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 2์žฅ : ์ฝ”๋“œ ์Šคํƒ€์ผ ๋ ˆ๋ฒจ์—… 2.1 ๋งค์ง ๋„˜๋ฒ„๋ฅผ ์ƒ์ˆ˜๋กœ ๋Œ€์ฒด void setPreset(int speedPreset) { if (speedPreset == 2) { setTargetSpeedKmh(16944); } else if (speedPreset == 1) { setTargetSpeedKmh(7667); } else if (speedPreset == 0) { setTargetSpeedKmh(0); } } void setTargetSpeedKmh(double speed) { targetSpeedKmh = speed; } ์œ„ ์ฝ”๋“œ ์กฐ๊ฐ์ฒ˜๋Ÿผ ์•„๋ฌด๋Ÿฐ ์˜๋ฏธ์—†๋Š” ์ˆซ์ž๊ฐ€ ํ”„๋กœ๊ทธ๋žจ์„ ๋™์ž‘์„ ์ œ์–ดํ•œ๋‹ค๋ฉด "๋งค์ง ๋„˜๋ฒ„"๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๋Ÿฌํ•œ ๋งค์ง๋„˜๋ฒ„์˜ ์‚ฌ์šฉ์€ ์ •ํ™•ํ•œ ๋œป์ด ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๊ธฐ ์‰ฌ์šฐ๋ฉฐ ์‚ฌ์šฉ์ž๊ฐ€ ๋ฉ”์„œ๋“œ ๋‚ด๋ถ€์— ๋Œ€ํ•œ ์ง€..
[์ž๋ฐ” ์ฝ”๋”ฉ์˜ ๊ธฐ์ˆ ] 1์žฅ : ์šฐ์„  ์ •๋ฆฌ๋ถ€ํ„ฐ 1.1 ๋ถˆํ•„์š”ํ•œ ๋น„๊ต ํ”ผํ•˜๊ธฐ microscope.isInorganic(sample) ์ด Bool์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค๋ฉด ๋ถˆํ•„์š”ํ•˜๊ฒŒ True, False๋กœ ๋น„๊ตํ•ด์„œ ์กฐ๊ฑด๋ฌธ์„ ์ฒดํฌํ•˜์ง€ ๋ง๊ณ  ๊ฐ„๋‹จํ•˜๊ฒŒ ์—†์• ์ž. if(microscope.isInorganic(sample) == true) if(microscope.isInorganic(sample) == false) ๋ณด๋‹จ if(microscope.isInorganic(sample)) if(!microscope.isInorganic(sample)) ๋ฅผ ์‚ฌ์šฉํ•˜์ž. 1.2 ๋ถ€์ • ํ”ผํ•˜๊ธฐ 1. ๋ฉ”์„œ๋“œ๊ฐ€ ๋ฐ˜ํ™˜ ๊ฐ’์œผ๋กœ False(๋ถ€์ •)์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋˜๋ฉด ํ•œ๋ฒˆ ๋” ์ƒ๊ฐํ•˜๋ฉฐ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. 2. ๋ฐ˜ํ™˜ ๊ฐ’์ด ๊ธ์ •์ธ ๊ฒƒ์„ ๊ตณ์ด `!`์„ ์ด์šฉํ•ด์„œ ๋ถ€์ •์œผ๋กœ ๋ฐ”๊พธ๋ฉด ํ•œ๋ฒˆ ๋” ์ƒ๊ฐํ•˜๋ฉฐ ์ดํ•ดํ•ด์•ผ ํ•œ๋‹ค. ..
[Book] "๊ฐ์ฒด์ง€ํ–ฅ์˜ ์‚ฌ์‹ค๊ณผ ์˜คํ•ด" ์ •๋ฆฌ ๋…ธ์…˜์— ์ ์–ด๋…ผ ๊ฒƒ์„ ํ‹ฐ์Šคํ† ๋ฆฌ์— ์˜ฎ๊ธฐ๋‹ˆ ๋งˆํฌ๋‹ค์šด์„ ์ง€์›ํ•˜์ง€ ์•Š์•„์„œ ๊ธ€๊ผด์ด ์ด์ƒํ•ฉ๋‹ˆ๋‹ค; ์•„๋ž˜ ๋งํฌ๋กœ ๋ณด์‹œ๋ฉด ์ •์ƒ์ ์ธ ๊ธ€๊ผด์„ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. www.notion.so/72ef860ed57f4e85a00260193175577f 1. ํ˜‘๋ ฅํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ณต๋™์ฒด ๊ฐ์ฒด๋Š” ์‹ค์ƒํ™œ์„ ๋ชจ๋ฐฉํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด ๋น„์œ ๋Š” ์‰ฝ์ง€๋งŒ ์˜ณ๋‹ค๊ณ  ๋ณผ์ˆœ ์—†๋‹ค. ๊ฐ์ฒด ์ง€ํ–ฅ์€ ์ž๊ธฐ ์ž์‹ ๋งŒ์˜ ์ƒˆ๋กœ์šด ์„ธ๊ณ„๋ฅผ ์„ค๊ณ„ํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด๋‹ค. ๊ฐ์ฒด๋Š” ์ž์‹ ์˜ ์—ญํ• ์— ๋Œ€ํ•œ ์ฑ…์ž„์„ ๋‹คํ•˜๊ธฐ ์œ„ํ•ด ์„œ๋กœ ํ˜‘๋ ฅํ•˜๋Š” ์กด์žฌ์ด๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ์˜ ํ•ต์‹ฌ์€ ์ฑ…์ž„์„ ์ˆ˜ํ–‰ํ•˜๋Š” ์—ญํ•  ๊ฐ„์˜ ํ˜‘๋ ฅ ๊ด€๊ณ„ ๊ตฌ์ถ•์ด๋‹ค. (๋ฉ”์‹œ์ง€๋ฅผ ์ฃผ๊ณ  ๋ฐ›๋Š” ๊ฐ์ฒด๋“ค) ์ด ๋•Œ ํ˜‘๋ ฅ์— ์ฐธ์—ฌํ•˜๋Š” ๊ฐ์ฒด์˜ ๊ตฌํ˜„ ๋งค์ปค๋‹ˆ์ฆ˜์ด ํด๋ž˜์Šค์ผ ๋ฟ์ด๋‹ค. 2. ์ด์ƒํ•œ ๋‚˜๋ผ์˜ ๊ฐ์ฒด ๊ฐ์ฒด == ์ƒํƒœ, ํ–‰๋™, ์‹๋ณ„์ž.. ๊ฐ์ฒด์˜ ์ƒํƒœ๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ชจ๋“  ํŠน์ง• ..

๋ฐ˜์‘ํ˜•