본문 바로가기

개발 관련 공부/클린코드16

클린코드 17장 (끝) 17장 냄새와 휴리스틱 🔎주석 부적절한 정보 이슈 추적, 소스코드 관리 등 다른 시스템에 저장할 정보는 주석으로 적절하지 않다. 이러한 내용은 괜히 소스 코드만 번잡하게 만든다. 쓸모 없는 주석 주석은 빨리 낡는다. 추후 쓸모 없어질 주석은 아예 달지 않는 편이 좋고, 쓸모 없어진 주석은 빨리 삭제해야 한다. 중복된 주석 코드만으로 충분한데 구구절절 설명하는 주석이 중복된 주석이다. 이런 주석은 필요가 없다. 주석 처리된 코드 이런 주석이 나오면 신경이 아주 거슬린다. 누군가에게 필요한 코드라고 생각해서 아무도 삭제하지 않고, 주석코드는 그 자리에서 하루하루 낡아간다...흉물 그 자체다! 얼른 지워버리자.(아무리 그래도 흉물이라니..이 책 넘 막말심함ㅠㅠ) 🔎환경 여러 단계의 빌드 필요한 파일을 찾느라 .. 2022. 9. 19.
클린코드 16장 16장 SerialDate 리팩터링 SerialDate는 날짜를 표현하는 자바 클래스다. 이 장에서는 SerialDate 클래스를 리팩터링한다. 첫째, 돌려보자. SerialDateTest라는 클래스는 단위 테스트 케이스 몇 개를 포함한다. 돌려보면 실패하는 테스트 케이스는 없지만 살펴보면 모든 케이스를 점검하지 않는다. 그래서 저자는 독자적으로 단위 테스트 케이스를 구현한다. 그러자 경계 조건 오류가 존재하며, 논리적 오류로 인하여 결코 실행되지 않는 코드도 존재한다는 사실이 밝혀진다...해당 오류들을 모두 고쳐 테케를 모두 통과하게 만든 후 리팩터링에 들어가자. 둘째, 고쳐보자. 변경 이력 없애기 이제는 소스 코드 제어 도구를 사용하므로 변경 이력은 없애도 좋다. import문 줄이기 import 문.. 2022. 9. 16.
클린코드 15장 15장 JUnit 들여다보기 이 장에서는 JUnit 프레임워크에서 가져온 코드를 평가한다. JUnit 프레임워크 우리가 살펴볼 모듈은 문자열 비교 오류를 파악할 때 유용한 ComparisionCompactor라는 모듈로, 두 문자열을 받아 차이를 반환한다. 예를 들어, ABCDE와 ABXDE를 받아 를 반환한다. package junit.framework; public class ComparisonCompactor { private static final String ELLIPSIS = "..."; private static final String DELTA_END = "]"; private static final String DELTA_START = "["; private int fContextLeng.. 2022. 9. 16.
클린코드 14장 14장 점진적인 개선 책 초반에, 좋은 코드를 짜기 위해서는 일단 막 짜고 나서 다듬어야 한다고 했다.. 초안 코드를 단계적으로 개선해 좋은 코드를 만들어야 한다. public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); int port = arg.getInt('p'); String directory = arg.getString('d'); executeAppliocation(logging, port, directory); } catch (ArgsException e) { System.out.printf("Argument error: %s\n".. 2022. 9. 16.
클린코드 13장 13장 동시성 동시성이 필요한 이유? 구조적 개선 응답시간과 작업 처리량 개선 미신과 오해 다음은 동시성과 관련한 일반적인 미신과 오해이다. 동시성은 항상 성능을 높여준다. 동시성을 구현해도 설계는 변하지 않는다. 반대로 다음은 동시성과 관련된 타당한 생각 몇 가지다. 동시성은 다소 부하를 유발한다. 동시성은 복잡하다. 일반적으로 동시성 버그는 재현하기 어려워, 일회성 문제로 여기고 무시하기 쉽다. 동시성을 구현하려면 흔히 근본적인 설계 전략을 재고해야 한다. 난관 두 스레드가 같은 변수를 동시에 참조하면 이상한 결과가 발생할 수 있다..재수없게 동시에 참조하지 않는다면 올바른 결과를 내놓겠지만, 문제는 잘못된 결과를 내놓는 일부 경우이다. 하지만 동시성 코드가 일으키는 문제로부터 시스템을 방어하는 원칙.. 2022. 9. 16.
클린코드 12장 12장 창발성 창발(創發)또는 떠오름 현상은 하위 계층(구성 요소)에는 없는 특성이나 행동이 상위 계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상이다.(위키백과) 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 제시한 단순한 설계 규칙 4가지 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 '테스트 케이스를 만들고 계속 돌려라'라는 규칙을 따르면 시스템은 낮은 결합도와 높은 응집력이라는, 객체 지향 방법론이 지향하는 목표를 저절로 달성할 수 있다! 단순한 설계 규칙 2~4: 리팩터링 코드 몇 줄을 추가할 때마다 잠시 멈추고 설계를 깔끔하게 조감한다. 테케가 있으므로 코드를 정리하면서 시스템이 깨.. 2022. 9. 16.
반응형