본문 바로가기

분류 전체보기31

테스트 주도 개발 [10 - 17장] 다음에 할 일은 무엇인가?자주 건드리는 부분이 견고 하다면 가장자리, 즉 자주 바뀌지 않는 부분으로 흘러감에 따라 테스트는 더 듬성듬성 불규칙적이게 되고 디자인도 않 좋아지지만 안심할 수 있다.어떤 테스트들이 추가로 필요할까?때로는 실패해야 하는 테스트가 성공하는 경우가 있는데, 그럴 땐 그 이유를 찾아내야 한다. 또는 실패해야 하는 테스트가 실제로 실패하기도 하는데, 이때는 이를 이미 알려진 제한사항 또는 앞으로 해야 할 작업 등의 의미로 그 사실을 기록해둘 수도 있다. (히스토리를 쌓는다.)할 일 목록할 일 목록이 비었다면 그때까지 설계한 것을 검토하기에 적절한 시기다. 메타포(은유)설계 구조에 미치는 메타포의 엄청난 영향public interface Expression { Money reduce(B.. 2020. 9. 12.
테스트 주도 개발 [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.