
객체지향의 사실과 오해.... 그동안 내가 객체지향 설계를 해본 적 이 있을까..? 나는 그냥 기능 만들기에만 급급했던 것 같다. 그런데 요즘 MicroSerivce를 회사에서 시행 하면서 Python/Django에 있는 기능을 Java/Spring Boot로 하나하나 옮기게 되었고 확장 가능한 설계에 대한 관심이 많아지게 되었다. 그러 던 중 해당책에 대해 추천을 많이 받게 되어 읽기 시작했다. 책에서 여러장에 걸쳐하고 싶은 말은 결국 다음과 같다. 확장 가능한 설계를 하려면 도메인 중심으로 객체지향 설계를 해야 한다. 그렇다면 객체지향 설계를 해야하면 어떻게 해야 할까. 해당 기능에 대한 협력을 파악하고 협력에 따른 메시지들로 책임을 분리해야 한다. 좀 더 자세히 말해보자면.. 우선 유스 케이스를 명..
프로그래머라면 형식에 맞춰 코드를 작성해야 한다. 코드 형식을 맞추기 위해 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의하여 모두가 규칙을 정하고 그 규칙을 따라야 한다. 필요하다면 규칙을 정하는 도구를 사용하자. 1. 형식을 맞추는 목적 코드 형식은 매우 ! 중요하다. 코드형식은 의사소통의 일환이다. 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드 품질에 대해 지대한 영향을 미친다. 2. 적절한 행의 길이를 유지하라. 자바에서 파일크기는 클래스의 크기와 밀접하다. 많은 오픈소스들을 보면 작은 크기의 파일(클래스)들로 이루어져 가독성이 좋은걸 볼 수 있다. 일반 적으로 작은 파일이 큰 파일 보다 이해하기가 쉽다. 3. 신문기사 처럼 작성하라. 잘 작성되어진 신문기사를 보면..
"나쁜 코드에 주석을 달지 마라. 새로짜라" 주석은 그 어떤 정보보다 유용하다. 하지만 주석은 필요악이다. 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기위해 위해 주석을 사용한다. 1. 주석은 나쁜 코드를 보완하지 못한다. 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다. 2. 코드로 의도를 표현하라! 되도록이면 주석을 달지 않고 코드로 의도를 표현하라. 3. 좋은 주석 어떤 주석은 필요하거나 유익하다. 1) 법적인 주석: 회사가 정립한 구현 표준에 맞춰 법적인 이유로 특정 주석을 명시 2) 정보를 제공하는 주석: 기본적인 정보를 반환 3) 의도를 설명하는 주..
해당 장에서는 프로그램의 가장 기본 단위인 함수 설계를 잘하는 방법을 다룬다. 1. 작게 만들어라. 책에서는 함수를 최대한 작게 만들어라를 강조하고 있다. 함수를 작게 만들수록 읽고 쓰기가 쉬워진다. 예제로 든 코드를 보면 리팩터링 한 상태의 함수는 10줄이었는데 해당 함수를 3줄로 줄였고 이렇게 해야 한다고 말하고 있다. - 블록과 들여쓰기 if/else, while문에 들어가는 블록은 한 줄이어야 한다. 2. 한가지만 해라 "함수는 한 가지를 해야 한다. 그 한 가지를 잘해야 한다. 그 한 가지만 해야 한다." 지정된 함수 이름 아래에서 추상화 수준이 하나인 단계만 수행한다면 그 함수는 한 가지 작업만 한다. 우리가 함수를 만드는 이유는 큰 개념을 다음 추상화 수준에서 여러 단계로 나눠 수행하기 위해..
유명한 로버트 C 마틴 클린 코드 책을 이제야 읽었다 읽는데 총 한 달이라는 시간이 걸린 것 같다. 책의 1장 "깨끗한 코드"에서는 클린 코드를 작성하지 못해 회사가 망한 사례 등 부정적인 영향들을 언급하며 클린 코드의 중요성을 되새겨 준다. 또한 클린 코드를 작성하려면 다음과 같이 하라고 말을 해준다. "중복을 줄여라, 한 가지 기능을 제대로 해라, 표현력을 높여라, 작게 추상화하라" 이 4가지만 준수해도 클린 코드를 작성할 수 있다고 말해준다. 그래서 해당 페이지를 볼 때 계속 소리 내서 읽어보면서 달달 외웠다. 클린 코드 책을 읽으면서 각 장마다 기억해야 하는 부분을 요약하고 정리해 보았다. 참고로 이 책은 정말 자바 개발자한테 필독서 중 하나인 것 같아서 꼭 한 번 읽어보기를 추천한다. [2장] ..