11장. 모든 악의 근원

변주한·2022년 6월 9일
0

$5 + 10 CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10
amount를 private으로 만들기
Dollar 부작용(side effect)?
Money 반올림
equals()
hashcode()
Equal null
Equal object
5CHF X 2 = 10CHF
Dollar/Franc 중복
공용 equals
공용 times
Franc과 Dollar 비교하기
통화?
testFrancMultiplication 제거

지금 Franc와 Dollar에는 처량한 생성자만 있다.

코드의 의미를 변경하지 않으면서도 하위 클래스에 대한 참조를 상위클래스에 대한 참조로 변경할 수 있다. Money.franc()와 Money.dollar()를 바꿔보자


	public static Money dollar(int amount) {
        return new Money(amount,"USD");
    }

    public static Money franc(int amount) {
        return new Money(amount, "CHF");
    }
    

다른 동치성 테스트를 한번 보자

	@Test
    public void testEquality(){
        assertTrue(Dollar.dollar(5).equals(Dollar.dollar(5)));
        assertFalse(Dollar.dollar(5).equals(Dollar.dollar(6)));

        assertTrue( Franc.franc(5).equals( Franc.franc(5)));
        assertFalse( Franc.franc(5).equals( Franc.franc(6)));

        assertFalse( Franc.franc(5).equals(Dollar.dollar(5)));
    }
    
    ///흠... 세번째와 네번째 은 첫번째와 두번째 단언과 중복되니 지우자///
    
    
    @Test
    public void testEquality(){
        assertTrue(Dollar.dollar(5).equals(Dollar.dollar(5)));
        assertFalse(Dollar.dollar(5).equals(Dollar.dollar(6)));

        assertFalse( Franc.franc(5).equals(Dollar.dollar(5)));
    }

$5 + 10 CHF = $10(환율이 2:1일 경우)
$5 X 2 = $10
amount를 private으로 만들기
Dollar 부작용(side effect)?
Money 반올림
equals()
hashcode()
Equal null
Equal object
5CHF X 2 = 10CHF
Dollar/Franc 중복
공용 equals
공용 times
Franc과 Dollar 비교하기
통화?
testFrancMultiplication 제거

작업을 검토하자

  • 하위 클래스의 속을 들어내는 걸 완료하고, 하위 클래스를 삭제했다.
  • 기존의 소스 구조에서는 필요했지만 새로운 구조에서는 필요 없게 된 테스트를 제거했다.
profile
늦었지만 꾸준히

0개의 댓글