본문 바로가기

코딩 필독서11

클린코드 12 이번챕터는 경계다. 경계라했을때 뭔소리지 했다. 소프트웨어 개발시 하나부터 열까지 모두 만들지 않는다. 패키지를 사거나, 오픈소스를 이용하는데 이런 외부 코드를 우리의 코드와 깔끔히 통합해야 한다. 이 경계를 깔금히 한다는 것이었다. 인터페이스 제공자는 적용성을 넓히는데 애쓰고, 인터페이스 사용자는 자신의 요구에 맞는 인터페이스를 바란다. 이 둘 사이의 긴장으로 시스템 경계에서 문제의 소지가 많다고 한다. 우리는 외부코드를 사용하면 시간을 효율적으로 사용해 많은 기능을 만들기 쉽다. 외부 패키지 테스트는 우리의 책임이 아니다. 그렇지만 우리가 사용할 코드를 테스트하는 편이 바람직하다. 외부 코드는 익히기 어렵다. 외부코드를 통합하기도 힘들다. 그래서 우린 외부코드 호출하는대신 간단한 테스트 케이스를 작성.. 2023. 2. 1.
클린코드11 오류를 유발하는 행위도 언급했다. 그중 첫째가 null을 반환하는 습관이라고 한다. null을 반환하는 코드는 일거리를 늘릴뿐 아니라 호출자에게 문제를 떠넘긴다고 한다. 실제로 null 확인이 너무 많아서 문제가 생긴다고 한다. 메서드에서 null을 반환하고싶으면, 예외를 던지거나 특수사례 객체를 반환해야한다. null 반환뿐 아니라 null을 전달하지 말라고 한다. 인수로 null을 전달하는 코드를 피하라고 한다. 그러면 당연히 NullPointerException이 발생하고 새로운 예외 유형을 만들어 던지라고 한다. 하지만 이것도 좋은 대안은 아니다. assert문을 사용하는 방법도 있다고 한다. public double project(Point p1, Point p2){ assert p1 != nu.. 2023. 1. 29.
클린코드10 이번장은 오류코드에 관한 내용이었다. 저자는 깨끗한 코드와 오류처리는 연관있다고 한다. 오류처리는 코드에 있어서 중요하다. 하지만 오류처리로 프로그램의 논리를 이해하기 어려워지게 하면 안된다. 오류 코드보다는 예외를 사용하라고 하는데, 오류코드라는 것을 이해하지 못했다. 나는 바로 예외를 처리하는 것으로 배웠기때문이다. 아무튼 예외를 던져 사용하라고 한다. 내가 배운것처럼 try-catch-finally문을 먼저 작성하라고 한다. try-catch를 작성하면 TDD를 이용해 나머지 논리를 추가하라고 한다. 확인된 예외보단 미확인 예외를 사용하라고 한다. 확인된 예외가 뭔지 모르겠다. 그래서 일단은 넘어갔다. 다음으로 예외에 의미를 제공하라고 한다. 예외를 던질 땐 전후 상황을 충분히 붙히라고 한다. 그러.. 2023. 1. 26.
클린코드9 스프링 진도를 따라가느라 너무 급급해 블로깅도 하지 못했다. 내가 게으른거겠지? 하루에 적어도 10분씩은 클린코드를 읽으며 블로깅을 하기로했다. 어차피 아무도 안보겠지만 그래도 해보자. 자료 전달 객체의 전형적인 형태는 공개 변수만 있고 함수가 없는 클래스다. 이런 자료구조체를 때론 Data Transfer Object 줄여서 DTO라고 한다. DTO는 엄청 유용한 구조체고, DB와의 통신, 소켓에서 받은 메시지의 분석에 유용하다. 흔히 DTO는 DB에 저장된 가공되지 않은 정보를 애플리케이션 코드에서 사용할 객체로 변환하는 단계중 가장 처음사용하는 구조체다. 좀더 일반적인것은 Bean구조다. 빈은 private 변수를 조회함수로 조작한다. 활성 레코드는 DTO의 특수한 형태로, public변수가 있거나.. 2023. 1. 26.