본문 바로가기

책읽기/클린코드

(21)
형식 맞추기 형식이 맞춰진 코드는 깔끔하고, 일관적이고, 꼼꼼하다고 느껴진다. 질서정연한 코드는 이해하기 좋고 편하게 읽을 수 있다. 오늘 작성한 코드는 내일 바뀔 확률이 매우 높다. 복잡하고 난잡한 코드를 짠다면 시간이 지날수록 거대해지고, 보기 힘들어 질 것이다. 하지만 코드스타일과 규율은 변하지 않는다. 형식을 맞추고 스타일을 맞추면 코드가 커져도 일정한 형태를 띄고, 편하게 읽을 수 있다. 1. 적절한 행 길이를 유지하라. fitensse는 테스트 자동화 도구로 총 라인이 5만줄인 큰 프로젝트이다. 하지만 이 프로젝트의 1/3의 파일당 평균 행 길이는 40 ~ 100줄이다. 가장 행이 많은 파일은 400줄이다. 아무리 큰 프로젝트라도 적은 줄로 구현이 가능하다. 1-1. 산문 기사처럼 작성하라. 좋은 기사는 ..
주석 주석은 거짓말을 한다. 프로그램이 변하고 진화함에 따라 프로그래머가 주석을 매번 유지. 보수하기는 불가능하다. 따라서 시간이 지날수록 주석은 거짓말을 하게 되고, 쓸모없어지고, 있으면 안되는 존재가 된다. 주석은 잘 작성된 코드로 대체할 수 있다. 코드로 모든 것을 표현하도록 연습해야 한다. 좋은 주석 1. 법적인 주석 법적인 정보, 예를 들어 저작권이나 소유권을 나타내는 정보는 글 머리에 주석으로 작성한다. 2. 정보를 제공하는 주석 기본적인 정보를 주석으로 제공하면 편리하다. 하지만 클래스를 이용하거나 함수, 변수명으로 정보를 제공하도록 노력해야 한다. 도저히 방법이 없다면 주석으로 정보를 제공한다. 3. 의도를 설명하는 주석 예를 들어, 에라토스테네스의 채 알고리즘을 구현할 때, 시간복잡도를 줄이기..
Clean한 함수 1. 작게 만들어라. 20줄도 길다. 하나의 함수는 5줄 이내면 충분하다. 2. 한 가지 일 만 하게하라. 함수는 한 가지를 해야 한다. 그 한 가지를 잘 해야 한다. 그 한 가지만을 해야 한다. 하나의 함수 안에서 추상화 수준이 하나인 단계만 수행한다면, 그 함수는 하나의 일만 한다. >> 하나의 함수 안에서는 동일한 추상화 수준을 유지한다. 기존의 코드에서 의미있는 이름으로 새로운 함수를 추출할 수 있다면, 그 함수는 하나의 일만 하고 있는 것이 아니다. 3. 함수당 추상화 수준은 하나로. 추상화 수준이 높은 것 : 함수가 포함하는 기능, 그 함수의 뒤에서 일어나는 일이 많다는 것. ex) getHtml() 추상화 수준이 낮은 것 : 그 함수 하나로 작은 기능 하나가 실행되는 것 ex) .append..
의미있는 이름 짓기 1. 의도를 분명히 밝혀라. 좋은 이름으로 절약하는 시간 > 좋은 이름을 위해 고민하는 시간 존재 이유, 수행기능, 사용방법들을 알기 위한 주석이 필요하다면 이름으로 의도를 충분히 드러내지 못한 것이다. 2. 그릇된 정보를 피하라. 나름대로 널리 쓰이는 의미가 있는 단어를 다른 의미로 사용하면 안됨. (ex. hp = 유닉스 운영체제의 종류. 직각삼각형의 빗변(hypotenuse)를 hp라고 표현하면 그릇된 정보를 전달할 가능성이 있다.) List 자료형을 사용하지 않는다면, accountList처럼 이름에 List를 사용하면 안된다. 단순히 accounts면 충분. (List 자료형도 List를 붙이는 것은 좋지 않다.) 유사한 개념은 일관성있는 유사한 표기법을 사용한다. 어디는 addNumber(),..
클린 코드란 로버트 C 마틴의 클린코드 책 발췌 1. 우아한 코드 : 보기에 즐거운 코드 (가독성이 좋은 코드) 2. 효율적인 코드(속도, CPU, RAM) 3. 세세한 부분까지 철저한 오류처리가 된 코드 4. 한가지를 잘 하는 코드 5. 다른 사람이 고치기 쉬운 코드 6. 의미있는 이름이 있는 코드 7. 의존성이 최소인 코드 8. 모든 테스트(단위테스트, 인수테스트)를 통과 9. 중복이 없는 코드 - 추상 메서드 - 추상 클래스 10. 시스템 내 모든 설계 아이디어를 표현한다. - 의미있는 이름 같이 - 메서드 추출 리펙토링 - 기능을 기술하는 메소드 하나 + 기능을 수행하는 메서드 여러개 로 메서드를 나누는 리펙토링 11. 코드를 읽으면서 다음 내용이 짐작이 되고, 짐작한 내용이 읽히는 코드 보이스카우트 규칙 >..