본문 바로가기

클린코드

클린코드 6장 - 객체와 자료 구조 변수를 비공개(private)로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현을 맘대로 바꾸고 싶어서다. 그렇다면 어째서 수많은 프로그래머가 조회(get) 함수와 설정(set) 함수를 당연하게 공개해 비공개 변수를 외부에 노출할까? 자료 추상화 목록 6-1과 목록 6-2에서 차이를 살펴보자. 두 클래스 모두 2차원 점을 표현한다. 그런데 한 클래스는 구현을 외부로 노출하고 다른 클래스는 구현을 완전히 숨긴다. public class Point { public double x; public double y; } public interface Point { double getX(); double getY(); void setCartesian(do.. 더보기
클린코드 5장 - 형식 맞추기 뚜껑을 열었을 때 독자들이 코드가 깔끔하고, 일관적이며, 꼼꼼하다고 감탄하면 좋겠다. 질서 정연하다고 탄복하면 좋겠다. 프로그래머라면 형식을 깔끔하게 맞춰 코드를 짜야 한다. 코드 형식을 맞추기 위한 간단한 규칙을 정하고 그 규칙을 착실히 따라야 한다. 팀으로 일한다면 팀이 합의해 규칙을 정하고 모두가 그 규칙을 따라야 한다. 필요하다면 규칙을 자동으로 적용하는 도구를 활용한다. 형식을 맞추는 목적 코드 형식은 중요하다! 코드 형식은 의사소통의 일환이다. 의사소통은 전문 개발자의 일차적인 의무다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현 스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 원래 코드는 사라질지라도 개발.. 더보기
클린코드 4장 - 주석 나쁜 코드에 주석을 달지 마라. 새로 짜라. - 브라이언 W. 커니핸, P.J. 플라우거 잘 달린 주석은 그 어떤 정보보다 유용하다. 경솔하고 근거 없는 주석은 코드를 이해하기 어렵게 만든다. 오래되고 조잡한 주석은 거짓과 잘못된 정보를 퍼뜨려 해악을 미친다. 주석은 '순수하게 선하지' 못하다. 기껏해야 필요악이다. 우리는 코드로 의도를 표현하지 못해, 실패를 만회하기 위해 주석을 사용한다. 때때로 주석 없이는 자신을 표현할 방법을 찾지 못해 할 수 없이 주석을 사용한다. 그러므로 주석이 필요한 상황에 처하면 곰곰이 생각하기 바란다. 상황을 역전해 코드로 의도를 표현할 방법은 없을까? 주석을 무시하는 이유는, 거짓말을 해서다. 항상도 아니고 고의도 아니지만 너무 자주 거짓말을 하니까. 주석은 오래될수록 .. 더보기
클린코드 3장 - 함수 이전의 프로그래밍에서는 시스템이 루틴, 하위루틴, 혹은 포트란과 PL/1 시절에는 프로그램, 하위 프로그램, 함수로 나눴다. 결국 지금은 함수만 살아남았다. 어떤 프로그램이든 가장 기본적인 단위가 함수가 되었다. 이 장은 함수를 만드는 법을 소개한다. 이 책에서 보여주고있는 목록3-1 코드는, 길이가 길고, 중복된 코드에, 괴상한 문자열에, 낯설고 모호한 자료 유형과 API로 이루어져 있다. 이러한 코드를 3-2에서는 리팩토링하여서 보여주고 있다. 이로써 목록 3-1에서는 파악하기 어려웠던 정보가 목록 3-2에서는 쉽게 드러난다. 그렇다면 목록 3-2 함수가 읽기 쉽고 이해하기 쉬운 이유는 무엇일까? 의도를 분명히 표현하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 .. 더보기
클린코드 정리를 시작하며.. 최근에, 회사에서 스터디를 시작했다. 더 좋은 개발자가 되기 위한 한 걸음. 우선 클린코드를 스터디하기로 하였다. 거의 개발자들의 필독서로 불리우는, 클린코드. 몇번 읽다가 중도하차했었는데, 이번에는 제대로 읽어보는 기회가 될 것 같다. 블로그에, 기록을 위하여 정리를 하려고한다. 남들처럼, 상세하게 정리를 하기보다, 날 것으로 느낀바를 그대로 적어가며 정리해보려한다. 블로그의 최우선의 독자는 스스로니까. 더보기