본문 바로가기

Java10

볼링게임 TDD [1] TDD를 공부하면서 TDD를 활용한 볼링게임을 구현해보기로 하였다. 아래의 할 일 목록 은 구현에 앞서 생각해본 볼링게임을 객체지향적으로 나태 내기 위한 방법이다. 이 방법이 정답은 아니지만 할 일 목록을 생각하면서 내가 어떤 구현을 해나갈지 명확해졌다. 다만 아직은 할 일을 작은 단위로 나누지 못한 것 같아서 우선 할 수 있는 것부터 하기로 했다. 할 일 목록 [ ] 볼링 객체를 만든다. [ ] 볼링의 하위 객체로는 볼링 플레이어와 볼링 점수 계산기가 존재한다. (플레이어와 점수 계산기는 1 : 1 관계를 갖는다.) [ ] 점수 계산기를 통해 계산된 점수는 점수 표출기를 통해 점수를 볼 수 있어야 한다. [ ] 볼링의 프레임과 핀은 점수 계산기와 연관이 있는데 이것은 나중에 생각해본다. [ ] 실패하는.. 2020. 9. 30.
테스트 주도 개발 [1 - 9장] TDD의 목적은 작동하는 깔끔한 코드를 얻는 것이다. 작동하는 깔끔한 코드를 얻는 것은 때로는 최고의 프로그래머들 조차 도달하기 힘든 목표고, 나같은 대부분의 평벙함 프로그래머들에게는 거의 불가능한 일이다. 그렇다면 나누어서 정복하자. 일단 '작동하는 깔끔한 코드'를 얻어야 한다는 전체 문제 중에서 '작동하는' 에 해당하는 부분을 먼저 해결한다. 그러고 나서 '깔끔한 코드' 부분을 해결하는 것이다. 요구사항 통화가 다른 두 금액을 더해서 주어진 환율에 맞게 변한 금액을 결과로 얻을 수 있어야 한다. 어떤 금액을 어떤 수에 곱한 금액을 결과로 얻을 수 있어야 한다. 할 일 목록 $5 + 10CHF = $10(환율이 2:1일 경우) $5 x 2 = $10 Dollar 부작용(side effect?) ... .. 2020. 9. 5.
[이펙티브 자바 : 3장] 클래스와 인터페이스 추상화의 기본 단위인 클래스와 인터페이스는 자바 언어의 심장과도 같다. 그래서 자바 언어에는 클래스와 인터페이스 설계에 사용하는 강력한 요소가 많이 있다. 이번 장에서는 이런 요소를 적절히 활용하여 클래스와 인터페이스를 쓰기 편하고, 견고하며, 유연하게 만드는 방법을 안내한다. [아이템 15] 클래스와 멤버의 접근 권한을 최소화하라 좋은 설계와 어설픈 설계의 차이는 내부 데이터와 내부 구현 정보를 외부 컴포넌트로부터 얼마나 잘 숨겼느냐에 따라서 드러난다. 좋은 설계는 은닉성을 지키며, 구현과 API를 깔끔히 분리한다. 오직 API를 통해서만 다른 컴포넌트와 소통하며 서로의 내부 동작 방식에는 전형 개의치 않는다. 이것을 정보 은닉, 혹은 캡슐화라고 부른다. 이는 소프트웨어 설계의 근간이 되는 원리다. 정.. 2020. 7. 11.
String, StringBuffer, StringBuilder 자바에서 문자열을 다루는 대표적인 클래스 String, StringBuffer, StringBuilder에 대해 알아보자. String vs StringBuffer, StringBuilder 3개의 클래스 중 String은 불변하는 속성을 가지고 있다. 즉 immutable class이고, StringBuffer와 StringBuilder는 가변 하는 클래스 mutable class이다. 우리는 간혹 하나의 변수에 다른 String 값을 넣고는 한다. 이때 JVM은 기존 String 변수의 값을 GC에 의해 제거하고, 새로운 값을 새로운 메모리 영역에 만들고 그것을 가리키게 된다. String str = "A"; // A는 GC에 의해 제거된다. // str에 B가 들어있는 메모리 영역을 가르키도록 변경.. 2020. 6. 27.