자바/클린 코드 16

클린코드 5장 - 형식 맞추기

형식을 맞추는 목적 오늘 구현한 기능은 다음 버전에서 바뀔 확률이 높다. 그런데, 오늘 구현한 코드의 가독성은 앞으로 바뀔 코드의 품질에 지대한 영향을 미친다. 오랜 시간이 지나 원래 코드의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현스타일과 가독성 수준은 유지보수 용이성과 확장성에 계속 영향을 미친다. 적절한 행 길이를 유지하라 JUnit, FitNesse, testNG, Time and Money, JDepend, Ant, Tomcat 등 대규모 프로젝트 소스를 분석해서 보여주는데, 500줄을 넘어가는 파일이 거의 없으며 대다수가 200줄 미만이다. 500줄을 넘지 않고도 커다란 시스템을 구축할 수 있다는 것이다. 신문 기사처럼 작성하라 좋은 신문기사는 최상단에 기사..

클린코드 4장 - 주석

주석은 나쁜 코드를 보완하지 못한다 코드로 의도를 표현하지 못하니, 주석을 사용하는 경우가 많다. 주석이 필요한 상황에서는 상황을 역전해 코드로 의도를 표현하도록 노력해야 한다. 변화하는 코드안에서 주석은 관리되지 못한다. 코드로 의도를 표현하라! 의도를 주석으로 달기 보다는 함수로 만들어 표현하는 등 코드로 표현하라.. 좋은 주석 구현한 의도를 주석으로 달거나, 표준 라이브러리여서 의미를 좀더 명료히 표현할 필요가 있는 경우, 결과를 경고하는 경우(멀티쓰레드에 안전하지 않다는 등). //TODO 주석도 많이 남지 않도록 주기적으로 점검해 없애준다. 중요성을 강조하는 주석은 필요할 때가 있다. 나쁜 주석 코드에 있는 내용을 주석으로 반복할 필요는 없다. 오해할 수 있는 주석도 나쁘며, 의무적으로 달거나 ..

클린코드 3장 - 함수

작게 만들어라! 함수는 작을 수록 좋다. 20라인도 긴 편이며, 짧은 함수로도 멋진 프로그램을 구현가능하다. if 문 / else 문 / while 문 등에서 들여쓰기가 2단이상으로 중첩구조가 생겨야 하면 함수를 분리하는게 좋다. 한 가지만 해라! 하나의 함수는 한 가지 일만을 해야 하며, '한 가지'만 하는지 판단하는 방법으로는 함수 내의 일부 로직을 의미 있는 다른 이름으로 추출할 수 있다면, 그 함수는 여러 작업을 하는 셈이다. 함수 당 추상화 수준은 하나로! 함수 내 모든 문장들의 추상화 수준은 동일해야 한다. 한 함수에서 호출되는 내부 함수는 추상화 수준이 한 단계 낮은 함수가 나오는 식이다. 이것을 내려거기 규칙이라 부를 수 있다. Switch문 switch문이나 if ~ else 문을 이용하..

클린코드 - 2장 의미있는 이름

의도를 분명히 밝혀라 변수의 존재 이유, 기능, 사용법 등이 변수, 메소드, 클래스명에 드러나야 한다. 따로 주석이 필요하지 않을 정도로 // Bad public List getThem() { List list1 = new ArrayList(); for (int[] x : theList) { if (x[0] == 4) { list1.add(x); } } return list1; } // Good public List getFlaggedCells() { List flaggedCells = new ArrayList(); for (int[] cell : gameBoard) { if (cell[STATUS_VALUE] == FLAGGED) { flaggedCells.add(cell); } } return fla..

클린코드 1장 - 깨끗한 코드

코드가 존재하리라 혹자는 코드를 자동으로 생성하는 시대가 올 거라는 말과 함께, 모델이나 요구사항에 집중해야 한다고 얘기한다. 프로그래밍 언어의 추상화 수준은 점차 높아지겠지만, 요구사항을 상세하게 명시하여 기계가 이해하고 실행할 정도로 정확하고 상세하게 정형화하는 코드는 없어질 수 없다. 모호한 요구사항에서 정형화된 표현과 제대로 명시된 요구사항을 뽑아내는 것은 개발자의 역할이다. 나쁜 코드 나쁜 코드는 개발 속도를 크게 떨어뜨린다. 코드를 고칠 때마다 엉뚱한 곳에서 문제가 생기기 때문이다. 팀의 생산성은 계속해서 떨어진다. 이에 새로운 인력을 추가로 투입하지만, 새 인력은 나쁜 코드를 더 양산하며 결국 생산성은 거의 0이 된다. 이에 대해, 새로 차세대 프로젝트를 시작하지만, 기존 시스템에서 계속해서..

클린코드 목차

클린코드의 정의 1장. 깨끗한 코드 좁은 범위의 클린코드 2장 - 의미있는 이름 3장 - 함수 4장 - 주석 5장 - 형식 맞추기 넓은 범위의 클린코드 6장 - 객체와 자료구조 7장 - 오류처리 8장 - 경계 9장 - 단위테스트 10장 - 클래스 더 넓은 범위의 클린코드 11장 - 시스템 12장 - 창발성 13장 - 동시성 14장 - 점진적인 개선 추가적인 클린코드 15장 - JUnit 들여다보기 16장 - SerialDate 리팩토링 17장 - 냄새와 휴리스틱

반응형