본문 바로가기
반응형

독서이야기43

[UnitTesting] 2장 단위테스트란 무엇인가 이 내용은 단위 테스트 생산성과 품질을 위한 단위 테스트 원칙과 패턴 를 읽으면서 정리한 내용을 포함하고 있습니다. 2장에서는 단위테스트에 접근하는 방법에 대해서 두 가지의 뚜렷한 견해에 대해서 소개하고 있습니다. 자세한 내용을 알아보도록 하겠습니다. 2장 단위 테스트란 무엇인가 2.1 ~ 2.4 목차는 다음과 같습니다. 단위테스트의 정의 단위 테스트의 런던파와 고전파 의존성을 다루는법 고전파와 런던파의 비교 두 분파의 통합 테스트 정리 참고 단위테스트의 정의 단위테스트의 3가지 주요 속성 작은 코드 조각을 검증하고 빠르게 수행하며 격리된 방식으로 처리하는 자동화된 테스트 단위테스트 정의 중 세번째 코드 조각을 격리된 방식으로 검증한다 에 대해서 단위테스트의 고전파와 런던파로 분리한다. 그럼, 코드 조각.. 2023. 5. 21.
[엘레강트 오브젝트] 4.4 RAII를 사용하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. RAIL Java의 RAIL 정리 RAIL 리소스 획득은 초기화 C++에 존재하는 매우 강력한 기법 가비지 컬렉션을 이용해서 객체를 제거하는 Java에서는 사라진 개념 핵심은 객체가 살아있는 동안에만 리소스를 확보하는 것이다. Java의 RAIL 가비지 컬렉션 객체가 더 이상 사용되지 않을 때 객체를 제거하는 작업을 백그라운드로 진행 기술적으로 Java에서는 main() 메서드의 실행이 종료된 이후에도 객체 t가 계속 살아 있을 수 있다. main() 메서드가 종료된 후에는 더 이상 객체가 필요하지 않지만, Java는 객체를 즉시 파괴하지 않는다. 대신 객체가 오랜 시간 메소리에 머무를 수 있는데, 이런 객체를 가비지 라고 부른다.. 2023. 4. 9.
[엘레강트 오브젝트] 4.3 final이거나 abstract이거나 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 상속의 문제점 final이나 abstract 정리 상속의 문제점 상속의 가장 큰 문제는 객체들의 관계를 너무 복잡하게 만든다는 것이다. class Document { public int length() { return this.content().length(); } public byte[] content() { // 문서의 내용을 바이트 배열로 로드한다. } }class EncryptedDocument extends Document { @Override public byte[] content() { // 문서를 로드해서, 즉시 복호화하고, 복호화한 내용을 반환한다. } } EncryptedDocument 클래스의 content().. 2023. 4. 9.
[엘레강트 오브젝트] 4.2 체크 예외(checked exception)만 던지세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 체크 예외 언체크 예외 꼭 필요한 경우가 아니라면 예외를 잡지 마세요 항상 예외를 체이닝하세요 단 한번만 복구하세요 관점-지향 프로그래밍을 사용하세요 하나의 예외 타입만으로도 충분합니다 정리 저자 주장 언체크 예외를 사용하는 것은 실수이며, 모든 예외는 체크 예외여야 합니다. 또한 다양한 예외 타입을 만드는 것도 좋지 않은 생각입니다. 체크 예외 메서드의 시그니처의 throws IOException 을 사용한 예시는 다음과 같다. public byte[] content(File file) throws IOException { byte[] byte = new byte[1000]; new FileInputStream(file).rea.. 2023. 4. 9.
[엘레강트 오브젝트] 4.1 절대 NULL을 반환하지 마세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 객체의 신뢰 빠르게 실패하기 vs. 안전하게 실패하기 NULL의 대안 정리 객체의 신뢰 객체가 NULL을 반환한다면, 해당 객체를 신뢰할 수 없게 된다. 반환된 값이 객체인지부터 확인해야 하기 때문에, 객체에게 작업을 요청한 후 안심하고 결과에 의지할 수 없다. String title = x.title(); if (title == null) { print("Cant't print; it's not a title."); return ; } print(title.length()); 객체라는 사상에는 우리가 신뢰하는 엔티티라는 개념이 담겨져 있다. 객체는 자신만의 생명주기, 자신만의 행동, 자신만의 상태를 가지는 살아있는.. 2023. 4. 9.
[엘레강트 오브젝트] 3.7 인스토스펙션과 캐스팅을 피하세요 이 내용은 엘레강트 오브젝트 를 읽으면서 정리한 내용을 포함하고 있습니다. 들어가기 타입 인트로스펙션(introspection) 캐스팅(casting) 정리 관련해서 생각해볼 내용 들어가기 타입 인트로스펙션(introspection)과 캐스팅(casting)을 사용하고 싶은 유혹에 빠지더라도 절대로 사용해서는 안된다. 기술적으로 Java의 instanceof 연산자와 Class.cast() 메서드, 다른 언어에서 동일한 기능을 수행하는 연산자들이 모두 이 범주에 포함된다. public int size(Iterable items) { if (items instanceof Collection) { return Collection.class.cast(items).size(); } int size = 0; fo.. 2023. 3. 22.
반응형