본문 바로가기

공부13

테스트 주도 개발 [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.
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.
캐시 메모리란? 캐시 부록 메모리 계층 구조 데이터를 저장하는 공간의 속도와 용량은 반비례 관계이다. 대체적으로 속도가 빠른 메모리는 저장공간이 작으며, 느린 메모리는 저장공간이 큰 특징을 가진다. 속도와 공간 두마리 토끼를 잡기에는 비용이 너무 커진다. 그렇기에 데이터 저장 공간은 속도와 용량에 따라 각자 특성에 맞게 역할을 나누어서 사용한다. 캐시 개요 컴퓨터 시스템의 성능을 향상시키기 위해 주로 CPU 칩 안에 포함되는 빠르고 작고 비싼 메모리이다. 프로그램에서 직접적으로 읽거나 쓸 수 없고 하드웨어의 메모리 관리 시스템이 내부적으로 제어한다. 대부분 프로그램은 한 번 사용한 데이터를 다시 사용할 가능성이 높고, 그 주변의 데이터도 곧 사용할 가능성이 높은 데이터 지역성을 가지고 있다. 데이터 지역성을 활용하여 캐.. 2020. 5. 24.