CodeGym /Java Blog /๋ฌด์ž‘์œ„์˜ /์‚ผํ•ญ ์—ฐ์‚ฐ์ž
John Squirrels
๋ ˆ๋ฒจ 41
San Francisco

์‚ผํ•ญ ์—ฐ์‚ฐ์ž

๋ฌด์ž‘์œ„์˜ ๊ทธ๋ฃน์— ๊ฒŒ์‹œ๋˜์—ˆ์Šต๋‹ˆ๋‹ค
์•ˆ๋…•! ์˜ค๋Š˜ ๊ฐ•์˜๋Š” ๊ทธ๋ฆฌ ๊ธธ์ง€ ์•Š์ง€๋งŒ ํ™•์‹คํžˆ ์œ ์šฉํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค :) ์šฐ๋ฆฌ๋Š” ์ด๋ฅธ๋ฐ” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž ์— ๋Œ€ํ•ด ์ด์•ผ๊ธฐํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค . ์‚ผํ•ญ ์—ฐ์‚ฐ์ž - 1Ternary๋Š” " ์„ธ ๋ถ€๋ถ„์œผ๋กœ ๊ตฌ์„ฑ๋œ "์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. if-else์ด๋ฏธ ๋งŒ๋‚œ ์ œ์–ด ํ๋ฆ„ ๋ฌธ ์— ๋Œ€ํ•œ ๋Œ€์•ˆ์ž…๋‹ˆ๋‹ค . ์˜ˆ๋ฅผ ๋“ค์–ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ R๋“ฑ๊ธ‰ ์˜ํ™”(17์„ธ ๋ฏธ๋งŒ์€ ๋ถ€๋ชจ ๋˜๋Š” ์„ฑ์ธ ๋ณดํ˜ธ์ž ๋™๋ฐ˜ ํ•„์š”)๋ฅผ ๋ณด๊ธฐ๋กœ ๊ฒฐ์ •ํ–ˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์•ˆ๋‚ด์ธ์€ ๋ฌธ ์•ž์—์„œ ๋‚˜์ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ๋‚˜์ด ํ™•์ธ์— ํ•ฉ๊ฒฉํ•˜๋ฉด ์ž…์žฅ์ด ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ง‘์œผ๋กœ ๋ณด๋‚ด์ง‘๋‹ˆ๋‹ค. ํด๋ž˜์Šค๋ฅผ ์„ ์–ธ Personํ•˜๊ณ  ๋‹ค์Œ ๋ช…๋ น๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ์ด๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค if-else.

public class Person {

   private int age;

   public Person(int age) {
       this.age = age;
   }

   public int getAge() {
       return age;
   }

   public void setAge(int age) {
       this.age = age;
   }

   public static void main(String[] args) {

       Person person = new Person(22);

       String usherResponse;

       if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }

       System.out.println(usherResponse);

   }
}
์ฝ˜์†” ์ถœ๋ ฅ:

"Everything is in order. Come in!"
์ฝ˜์†” ์ถœ๋ ฅ์„ ์ œ๊ฑฐํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค.

if (person.getAge() >= 18) {
           usherResponse = "Everything is in order. Come in!";
       } else {
           usherResponse = "This film is not suitable for your age!";
       }
์—ฌ๊ธฐ์„œ ๋…ผ๋ฆฌ๋Š” ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ ์กฐ๊ฑด์ด ํ™•์ธ๋ฉ๋‹ˆ๋‹ค(๋‚˜์ด >= 18). ๊ฒฐ๊ณผ์— ๋”ฐ๋ผ usherResponse์•ˆ๋‚ด์ธ์˜ ์‘๋‹ต๊ณผ ํ•จ๊ป˜ ๋ณ€์ˆ˜์— ๋‘ ๋ฌธ์ž์—ด ์ค‘ ํ•˜๋‚˜๊ฐ€ ํ• ๋‹น๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ์ƒํ™ฉ("ํ•˜๋‚˜์˜ ์กฐ๊ฑด - ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ")์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋งค์šฐ ์ผ๋ฐ˜์ ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๊ฐ€ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ™•์ธ์„ ํ•œ ์ค„์˜ ์ฝ”๋“œ๋กœ ๋‹จ์ˆœํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = (person.getAge() > 18) ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
์ด ์—ฐ์‚ฐ์ž์˜ ์ž‘๋™ ๋ฐฉ์‹์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. 3๊ฐœ์˜ ๊ตฌ์„ฑ ์š”์†Œ๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.
  • ํ•˜๋‚˜์˜ ์กฐ๊ฑด( person.getAge() > 18)
  • ๋‘ ๊ฐ€์ง€ ๊ฐ€๋Šฅํ•œ ๊ฒฐ๊ณผ( "๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋“ค์–ด์™€!" ๋ฐ "์ด ์˜ํ™”๋Š” ๊ท€ํ•˜์˜ ์—ฐ๋ น์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!" )
๋จผ์ € ์กฐ๊ฑด์„ ์“ฐ๊ณ  ๋ฌผ์Œํ‘œ๋ฅผ ์”๋‹ˆ๋‹ค.

person.getAge() > 18 ?
"์ด ์‚ฌ๋žŒ์˜ ๋‚˜์ด๊ฐ€ 18์„ธ ์ด์ƒ์ž…๋‹ˆ๊นŒ?" ๊ทธ๋Ÿฐ ๋‹ค์Œ ์ฒซ ๋ฒˆ์งธ ๊ฐ’์„ ์”๋‹ˆ๋‹ค . ์ด ๊ฐ’์€ ์กฐ๊ฑด์ด ๋‹ค์Œ์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ์—true ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค .

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!"
์ด ์‚ฌ๋žŒ์˜ ๋‚˜์ด๊ฐ€ 18์„ธ ์ด์ƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ€์ˆ˜๋ฅผ "๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋“ค์–ด์˜ค์„ธ์š”!"usherResponse ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ " :" ๊ธฐํ˜ธ์™€ ๋‘ ๋ฒˆ์งธ ๊ฐ’ ์ž…๋‹ˆ๋‹ค . ์ด ๊ฐ’์€ ์กฐ๊ฑด์ด ๋‹ค์Œ์œผ๋กœ ํ‰๊ฐ€๋˜๋Š” ๊ฒฝ์šฐ์—false ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค .

String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";
์ด ์‚ฌ๋žŒ์˜ ๋‚˜์ด๊ฐ€ 18์„ธ ์ด์ƒ์ž…๋‹ˆ๊นŒ? ๊ทธ๋ ‡๋‹ค๋ฉด ๋ณ€์ˆ˜๋ฅผ "๋ชจ๋“  ๊ฒƒ์ด ์ •์ƒ์ž…๋‹ˆ๋‹ค. ๋“ค์–ด์˜ค์„ธ์š”!"usherResponse ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. . ๊ทธ๋ ‡์ง€ ์•Š์€ ๊ฒฝ์šฐ ๋ณ€์ˆ˜๋ฅผ "์ด ์˜ํ™”๋Š” ๋‚˜์ด์— ์ ํ•ฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค!"usherResponse ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž์˜ ๋…ผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์ƒํƒœ ? ๊ฒฐ๊ณผ 1 : ๊ฒฐ๊ณผ 2 ์‚ผํ•ญ ์—ฐ์‚ฐ์ž - 2 ๊ทธ๋Ÿฐ๋ฐ ์กฐ๊ฑด์„ ๋‘˜๋Ÿฌ์‹ผ ๊ด„ํ˜ธ๋Š” ํ•„์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๊ฐ€๋…์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๊ฒƒ๋“ค ์—†์ด๋„ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.

public static void main(String[] args) {

   Person person = new Person(22);

   String usherResponse = person.getAge() > 18 ? "Everything is in order. Come in!" : "This film is not suitable for your age!";

   System.out.println(usherResponse);

}
๊ทธ๋ž˜์„œ ๋ฌด์—‡์„ ์‚ฌ์šฉํ•ด์•ผํ•ฉ๋‹ˆ๊นŒ? ๋ฌธ if-else๋˜๋Š” ์‚ผํ•ญ ์—ฐ์‚ฐ์ž? ์„ฑ๋Šฅ๋ฉด์—์„œ๋Š” ์ฐจ์ด๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค. ๋” ์ •ํ™•ํ•˜๊ฒŒ๋Š” ์žˆ์„ ์ˆ˜ ์žˆ์ง€๋งŒ ์ค‘์š”ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ฐ€์žฅ ํฐ ๊ณ ๋ ค ์‚ฌํ•ญ์€ ์ฝ”๋“œ์˜ ๊ฐ€๋…์„ฑ์ž…๋‹ˆ๋‹ค. ์ž‘์„ฑํ•˜๋Š” ์ฝ”๋“œ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž‘๋™ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ฝ๊ธฐ ์‰ฌ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค . ๊ฒฐ๊ตญ ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋จธ, ๋™๋ฃŒ์— ์˜ํ•ด "์ƒ์†"๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค! ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๋‹ค๋ฉด ๊ทธ๋“ค์˜ ์ž‘์—…๊ณผ ๊ท€ํ•˜์˜ ์ž‘์—…์ด ๋ณต์žกํ•ด์งˆ ๊ฒƒ์ž…๋‹ˆ๋‹ค(๊ทธ๋“ค์€ ์„ค๋ช…์„ ์œ„ํ•ด 5๋ถ„๋งˆ๋‹ค ๋‹ฌ๋ ค์˜ฌ ๊ฒƒ์ž…๋‹ˆ๋‹ค). ์ผ๋ฐ˜์ ์ธ ๊ถŒ์žฅ ์‚ฌํ•ญ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์กฐ๊ฑด์ด ๊ฐ„๋‹จํ•˜๊ณ  ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ ํ•ด๋ฅผ ๋ผ์น˜์ง€ ์•Š๊ณ  ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ์ฝ”๋“œ์˜ ์–‘๊ณผif-else์ง„์ˆ (์ด๋ฏธ ๋งŽ์€ ์ง„์ˆ ์ด ์žˆ์„ ์ˆ˜ ์žˆ์Œ). ๊ทธ๋Ÿฌ๋‚˜ ์กฐ๊ฑด์ด ๋ณต์žกํ•˜๊ณ  ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๊ฐ€ ํฌํ•จ๋œ ๊ฒฝ์šฐ ๋ฌธ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค if-else. ์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์‚ผํ•ญ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์ข‹์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

String usherResponse = (person.getAge() > 18 && (person.hasTicket() || person.hasCoupon()) && !person.hasChild()) ? "Come in!" : "You can't come in!";
์—ฌ๊ธฐ์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ๋Š”์ง€ ์ฆ‰์‹œ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค! ์ฝ”๋“œ๋ฅผ ์ฝ๊ธฐ๊ฐ€ ๋งค์šฐ ์–ด๋ ค์›Œ ์กŒ์Šต๋‹ˆ๋‹ค . ๊ทธ๋ฆฌ๊ณ  ๋ณต์žกํ•œ ์กฐ๊ฑด ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
  • 18์„ธ ์ด์ƒ์ด๊ณ  ํ‹ฐ์ผ“(๋˜๋Š” ์ž์œ ์ด์šฉ๊ถŒ)์ด ์žˆ๊ณ  ์–ด๋ฆฐ ์ž๋…€๊ฐ€ ์—†์œผ๋ฉด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์กฐ๊ฑด์˜ ์ผ๋ถ€๋ผ๋„ ๊ฑฐ์ง“์ด๋ฉด ๊ทธ๋Š” ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.
์—ฌ๊ธฐ์„œ if-else. ์˜ˆ, ์šฐ๋ฆฌ ์ฝ”๋“œ๋Š” ๋” ์ปค์งˆ ๊ฒƒ์ด์ง€๋งŒ ํ›จ์”ฌ ๋” ์ฝ๊ธฐ ์‰ฝ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‹น์‹ ์˜ ๋™๋ฃŒ๋“ค์€ ์ด ์ฝ”๋“œ๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค๋ฉด ์†๋ฐ”๋‹ฅ์„ ๋งˆ์ฃผํ•˜์ง€ ์•Š์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค :) ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‹น์‹ ์—๊ฒŒ ์ข‹์€ ๊ฒƒ์„ ์ถ”์ฒœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ˆ˜์—… ์ค‘์— ์ฝ”๋“œ ๊ฐ€๋…์„ฑ์— ๋Œ€ํ•ด ๋‹ค๋ฃจ์—ˆ์Šต๋‹ˆ๋‹ค. ๊ณ ์ „์ด ๋œ Robert Martin์˜ ์ €์„œ "Clean Code"๋Š”์ด ์ฃผ์ œ์— ์ „๋…ํ•ฉ๋‹ˆ๋‹ค. ์‚ผํ•ญ ์—ฐ์‚ฐ์ž - 4๊ธฐ๋Šฅ์ ์ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์‰ฝ๊ฒŒ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐ ๋„์›€์ด ๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋จธ๋ฅผ ์œ„ํ•œ ๋ชจ๋ฒ” ์‚ฌ๋ก€์™€ ๊ถŒ์žฅ ์‚ฌํ•ญ์„ ํ•จ๊ป˜ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION