Day02 - jeremy0405/Codesquad_CS GitHub Wiki

MagicNumber

MagicNumberλž€ μ†ŒμŠ€ μ½”λ“œ μ•ˆμ— μž‘μ„±λœ ꡬ체적인 μˆ«μžκ°’μ„ μ˜λ―Έν•œλ‹€. λ™μΌν•œ κΈ°λŠ₯을 ν•˜λŠ” 맀직 λ„˜λ²„μ˜ κ°œμˆ˜κ°€ λ§Žλ‹€λ©΄ λ‚˜μ€‘μ— μ†ŒμŠ€μ½”λ“œλ₯Ό λ³€κ²½ν•΄μ•Ό ν•  λ•Œ λ™μΌν•œ κΈ°λŠ₯을 ν•˜λŠ” 맀직 λ„˜λ²„λ₯Ό λͺ¨λ‘ 같은 κ°’μœΌλ‘œ λ³€κ²½ν•΄μ•Ό ν•œλ‹€λŠ” 단점이 μžˆλ‹€. λ˜ν•œ ꡬ체적인 μˆ«μžκ°’μ΄ 무엇을 μ˜λ―Έν•˜λŠ”μ§€ μ•ŒκΈ° νž˜λ“  κ²½μš°κ°€ λ§Žλ‹€. 이럴 λ•Œ 심볼릭 μ •μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ λ™μΌν•œ κΈ°λŠ₯을 ν•˜λŠ” 맀직 λ„˜λ²„λ₯Ό λͺ¨λ‘ 심볼릭 μ •μˆ˜λ‘œ μΉ˜ν™˜ν•˜μ—¬ μ½”λ“œλ₯Ό μž‘μ„±ν•˜λ©΄ 가독성이 μ’‹μ•„μ§€κ³  μ½”λ“œ 변경에도 μœ μ—°ν•˜κ²Œ λŒ€μ²˜ν•  수 있게 λœλ‹€.

λ―Έμ…˜μ„ μ§„ν–‰ 쀑 carry와 sum을 길이가 2인 λ°°μ—΄ 인덱슀의 0λ²ˆμ§ΈλŠ” carry, 1λ²ˆμ§ΈλŠ” sum을 μ €μž₯ν•˜κ³  μ§€μ†μ μœΌλ‘œ κΊΌλ‚΄μ„œ μ‚¬μš©ν•˜κ²Œ λ˜μ—ˆλ‹€.

μ΄μ „μ˜ μ½”λ“œλ‘œλŠ” 계속 μ•„λž˜μ™€ 같이 μž‘μ„±ν•˜μ˜€μ§€λ§Œ 맀직 λ„˜λ²„λ₯Ό 톡해 보기에 쒋도둝, 또 μ‹€μˆ˜κ°€ λ°œμƒν•˜μ§€ μ•Šλ„λ‘ λ¦¬νŒ©ν† λ§μ„ μ§„ν–‰ν–ˆλ‹€.

public boolean[] halfadder(boolean bitA, boolean bitB) {
    boolean[] answer = new boolean[2];
    answer[0] = //κ³„μ‚°ν•œ carry κ°’
    answer[1] = //κ³„μ‚°ν•œ sum κ°’
    return answer;
}

boolean tmpCarry = halfadder(bitA, bitB)[0];
boolean tmpSum = halfadder(bitA, bitB)[1];
static final int CARRY = 0;
static final int SUM = 1;

public boolean[] halfadder(boolean bitA, boolean bitB) {
    boolean[] answer = new boolean[2];
    answer[CARRY] = //κ³„μ‚°ν•œ carry κ°’
    answer[SUM] = //κ³„μ‚°ν•œ sum κ°’
    return answer;
}

boolean tmpCarry = halfadder(bitA, bitB)[CARRY];
boolean tmpSum = halfadder(bitA, bitB)[SUM];

λ³€κ²½ κ²°κ³Ό μ½”λ“œμ˜ 가독성이 μ’‹μ•„μ‘Œλ‹€. μ•žμœΌλ‘œλ„ 맀직 λ„˜λ²„λ₯Ό λ‚¨λ°œν•˜λŠ” μ½”λ“œλŠ” μ§€μ–‘ν•΄μ•Όκ² λ‹€.