반응형

클린 코드

    14. 테스트와 가독성

    14. 테스트와 가독성

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 읽거나 유지보수하기 쉽게 테스트를 만들어라 -> 테스트 코드: 실제 코드가 어떻게 동작하며 어떻게 사용되어야 하는지에 관한 비공식적인 문서 -> 테스트 코드가 읽기 쉬우면, 사용자는 실제 코드가 어떻게 동작하는지 그만큼 더 쉽게 이해할 수 있다. -> 다른 프로그래머가 수정하거나 새로운 테스트를 더하는 걸 쉽게 느낄 수 있게 테스트 코드는 읽기 쉬워야 한다. 2. 테스트를 읽기 쉽게 만들기 -> 덜 중요한 세부 사항은 사용자가 볼 필요 없게 숨겨서 더 중요한 내용이 눈에 잘 띄게 해야 한다. -> 초기화에 필요한 부분은 헬퍼 함수를 사용해 감추고, 테스트 자체..

    13. 코드 분량 줄이기

    13. 코드 분량 줄이기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 요구사항에 질문을 던지고 질문을 잘게 나누어 분석하라. -> 예외처리를 무조건적으로 적용하는 것이 아니라, 요구사항에 맞는지 생각한다. -> 불필요한 요구사항을 제거하라. -> 제품에 꼭 필요하지 않는 기능을 제거하고, 과도한 작업을 피한다. -> 요구사항을 다시 생각해서, 가장 단순한 형태의 문제를 찾아본다. 2. 코드베이스를 작게 유지하기 -> 코드베이스를 최대한 작고 가볍게 유지한다. -> 일반적인 '유틸리티'를 많이 생성하여 중복된 코드를 제거하라. -> 사용하지 않는 코드 혹은 필요없는 기능을 제거하라. -> 프로젝트가 서로 분리된 하위 프로젝트로 구..

    12. 생각을 코드로 만들기

    12. 생각을 코드로 만들기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 논리를 명확하게 설명하기 -> 부정문을 최소화하여 조건을 분기한다. 2. 라이브러리를 알면 도움이 된다. -> 라이브러리가 제공하는 기능을 잘 활용하자. 3. 논리를 쉬운 말로 표현하는 방법을 더 큰 문제에 적용하기 -> 지저분한 논리를 감춘다.

    11. 한 번에 하나씩

    11. 한 번에 하나씩

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 작업은 작을 수 있다. 2. 객체에서 값 추출하기 -> 한 번에 하나의 작업! -> 동일한 if가 여러번 쓰일 경우, 묶어준다. -> 헬퍼 함수: 다른 함수 안에서 특정 기능을 하고 있는 함수

    10. 상관없는 하위문제 추출하기

    10. 상관없는 하위문제 추출하기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 순수한 유틸리티 코드 2. 일반적인 목적의 코드 -> 목적과 상관없는 하위문제 따로 빼기 -> 이 경우 하위문제 코드의 테스팅 및 개선 용이 3. 일반적인 목적을 가진 코드를 많이 만들어라 4. 특정한 프로젝트를 위한 기능 -> 기본적으로 하위문제는 전체 프로젝트를 몰라야 하지만, 설령 안다고해도 추출해내는 것만으로 가독성을 향상시킬 수 있다. 5. 기존의 인터페이스를 단순화하기 -> 자신이 사용하는 인터페이스가 깔끔하지 않다면, 새로운 함수로 둘러싸서 깔끔하게 만들어라 6. 자신의 필요에 맞춰서 인터페이스의 형태를 바꾸기 -> 접착코드(glue code): ..

    9. 변수와 가독성

    9. 변수와 가독성

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 변수 제거하기 -> 불필요한 임시변수 제거 -> 중간 결과 삭제하기 -> 흐름 제어 변수 제거하기 2. 변수의 범위를 좁혀라 -> 전역변수는 최대한 멀리할 것! -> 변수가 적용되는 범위를 최대한 좁게 만들기 -> 많은 메소드를 정적 메소드로 바꾸는 것도 좋다. -> 커다란 클래스를 여러 개의 작은 클래스로 -> JS의 경우 변수를 전역이 아닌 클로져 내부에 선언해주는 것이 좋다. 3. 값을 한 번만 할당하는 변수를 선호하라 ->변수 값이 달라지는 곳이 많을수록 현재 값을 추측하기 더 어려워진다.

    8. 거대한 표현을 잘게 쪼개기

    8. 거대한 표현을 잘게 쪼개기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 설명변수 -> 작은 하위표현을 담을 변수 if line.split(':')[0] == 'root': ... # --------------- # 설명변수 사용 username = line.split(':')[0] # 여러개의 코드 덩어리를 짧은 이름으로 교체 if(request.user.id === document.owner.id){ ... } // ----------------- // 요약변수 사용 const user_owns_document = request.user.id; // not을 분해하고 and/or를 바꾼다. -> !(A&B) 대신 !A || !B..

    7. 읽기 쉽게 흐름제어 만들기

    7. 읽기 쉽게 흐름제어 만들기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 조건문에서 인수의 순서 -> 왼쪽이 주체, 오른쪽이 고정 값. // good if(length > 0) { ... } // bad if(0 if(긍정) else : 일반적으로 좋음! -> 간단한 것을 먼저하는 것 좋음 -> 더 흥미롭고, 확실한 것 먼저하는 것 좋음 3. 삼항 연산자를 사용하는 것 -> 기본적으로 if/else를 사용하고, 삼항 연산자는 매우 간단할 때만 사용한다. -> 짧은 코드 < 다른 사람이 이해하기 쉬운 코드 4. do/while 루프를 피하라 5. 함수 중간에서 반환하..

    6. 명확하고 간결한 주석 달기

    6. 명확하고 간결한 주석 달기

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 주석을 간결하게 하라 // **bad** //int는 CategoryType이다. //내부 페어의 첫 번째 float은 'score'다 //두 번째는 'weight'이다. typedef hash_map ScoreMap; // ---------------------------- // **good** // CategoryType -> (score, weight) typedef hash_map ScoreMap; 2. 모호한 대명사를 피하라 -> 'it', 'that', 'this'를 피하고, 명확한 대상을 적어라 3. 엉터리 문장을 다듬어라 -> 안좋은 예: "이 ..

    5. 주석에 담아야 하는 대상

    5. 주석에 담아야 하는 대상

    이 글은 읽기 좋은 코드가 좋은 코드다(더스틴 보즈웰, 트레버 파우커 지음 / 임백준 옮김 / 한빛미디어) 를 읽고 내용을 정리한 글입니다. 1. 설명하지 말아야 하는 것 -> 코드에서 빠르게 유추할 수 있는 내용은 주석으로 달지 않는다. -> 주석을 달 때는 실제 주석이 도움될지를 고민해보고 달아라. -> 이름이 애매하다면 주석으로 설명할 것이 아니라, 이름 자체를 수정해야한다. -> 좋은 코드 > 나쁜 코드 + 주석 2. 생각을 기록하라 -> 코드를 짜면서 얻게된 중요한 통찰을 주석으로 기록하여, 읽는이가 헷갈리지 않도록 하라 TODO 해야할 일 FIXME 오동작을 일으킨다고 알려진 코드 HACK 좋지 않은 해결책 XXX 위험! TestMate ESC -> 상수에도 주석을 붙이면 의미가 더 뚜렷해진다..

반응형