Clean Code 초안
클린 코드(Clean Code) - 로버트 C. 마틴을 기반으로 수업에서 배운 실습 코드나 개인 프로젝트에 적용하며 클린 코드의 원칙과 중요성을 학습하고 이를 기록합니다.
템플릿
챕터 템플릿 관련 문서입니다.
📢 챕터 템플릿 (1) 📢
1. 📌 핵심 개념 정리 가이드라인 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드...
📢 챕터 템플릿 (2) 📢
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
📢 작성 예시 📢
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 개선 전 int d; /...
1장 깨끗한 코드
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드 우리는 모두 나쁜 코드를 짠 경험이 있을 것이다. 이유는 아마 급해서, 코드 짤 시간이 없어서 등등 많은 이유가 있겠지만, ...
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드 일정에 쫒겨 나쁘게 구현한 코드는 개발자의 발목을 잡는다. 바쁠때는 나중에 다시 리팩토링하겠다고 다짐...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 앞으로 코드가 사라질 가망은 없다. 프로그래밍이란 기계가 실행할 정도로 상세하게 요구사항을 명시하는 작업을 말한다. 이러한 이유로 코드의...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드 제대로 짤 시간이 없다고 생각해서, 코드를 다듬느라 오랜 시간이 걸릴까봐 등의 핑계로 대충 짠 코드 초반에는 생산성이 높지...
2장 의미 있는 이름
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 개선 전 public...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 밝혀라 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 따로 주석이 필요하다면 의...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 밝혀라. 좋은 이름을 지으려면 시간이 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다. 만약 주석이 필요하다면 그...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 의도 분명히 밝히기 주석을 통한 설명이 필요한 변수명 짓지 말기. -> 코드의 함축성이 문제이다. 코드 맥락이 코드 자체에 명시적이여...
3장 함수
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 작게 만들어라 함수를 만드는 첫째 규칙은 '작게'다. 함수를 만드는 둘째 규칙은 '더 작게'다. 이 규칙은 근거를 대기가 곤란하다. ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 작게 만들어라! 함수를 만드는 첫번째 규칙은 작게 만들기다. 일반적으로 함수는 20줄 이하로 작성하고 if/else, while, f...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 함수를 작게 만들어라 가독성을 위하여 블록과 들여쓰기는 1단~2단이 적당하다 함수는 한 가지 기능만 하게해라 > 지정된 함수 이름 아래...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 의도를 분명히 표한하는 함수를 어떻게 구현할 수 있을까? 함수에 어떤 속성을 부여해야 처음 읽는 사람이 프로그램 내부를 직관적으로 파악...
4장 주석
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 주석은 나쁜 코드를 보완하지 못한다 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 코드로 의도를 표현...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드에 주석을 달지 마라. 새로 짜라. 브라이언 W. 커니핸, P.J. 플라우거 주석은 나쁜 코드를 보완하지 못한다 코드에 ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 주석은 나쁜 코드를 보완하지 못한다. 나쁜 코드에 주석을 달지마라. 코드를 다시 짜라 주석은 최대한 자제하기 주석으로 설명한 부분...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 나쁜 코드에 주석을 달지 마라. 새로 짜라. 우리는 코드로 의도를 표현하지 못해, 그러니까 실패를 만회하기 위해 주석을 사용한다. 주석...
5장 형식 맞추기
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 형식을 맞추는 목적 오랜 시간이 지나 원래 코드의 흔적의 흔적을 더 이상 찾아보기 어려울 정도로 코드가 바뀌어도 맨 처음 잡아놓은 구현...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 코드 형식의 목적 코드 형식은 의사소통의 일환이다. 코드는 재사용이나 재구현의 경우가 많기에 가독성이 상당히 중요 -> 코드 형식 자체...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 형식에 맞추는 목적 코드 형식은 의사소통의 일환이기 때문에 중요하다. 오늘 구현한 기능이 다음 버전에서 바뀔 확률은 매우 높다. 오늘...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 적절한 행 길이를 유지하라 소스 코드의 세로 길이는 얼마나 길어야 적당한가? Junit, FitNesse, testNG, Time a...
6장 객체와 자료 구조
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 변수를 비공개private로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶어서다. 충동이든 변덕이든, 변수 타입이나 구현...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 어째서 수많은 프로그래머가 getter/setter를 당연하게 public으로 설정해 변수를 외부에 노출할까? 자료 추상화 변수를...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 변수를 비공개로 정의하는 이유가 있다. 남들이 변수에 의존하지 않게 만들고 싶기 때문이다. 그렇다면 어째서 수많은 프로그래머가 조회 함수...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 자료 추상화 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다. (인터페이스나 ...
7장 오류 처리
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 오류 코드보다 예외를 사용해라 오류가 발생하면 예외를 던지는 편이 낫다. 그러면 호출자 코드가 더 깔끔해진다. 논리가 오류 처리 코드...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 깨끗한 코드와 오류 처리는 확실히 연관성이 있다. 상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다. 여기서 좌우된다는 표현은 코드...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 오류 코드보다 예외를 사용하라 알고리즘과 오류를 처리하는 알고리즘을 분리하기 위해 예외를 사용하라 개선 전 public void ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 오류 코드보다 예외를 사용하라 논리가 오류 처리 코드와 뒤섞이지 않아 호출자 코드가 더욱 깔끔해진다. Try-Catch-fi...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
8장 경계
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 경계 살피고 익히기 외부 코드를 사용하면 적은 시간에 더 많은 기능을 출시하기 쉬워진다. 만약 외부에서 가져온 패키지를 사용하고 싶다...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 시스템에 들어가는 모든 소프트웨어를 직접 개발하는 경우는 드물다. 때로는 패키지를 사고, 때로는 오픈소스를 이용한다. 어떤 식으로든 이 ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 경계 살피고 익히기 외부 코드를 통합하기 전에 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 짐 뉴커크는 이를 학습 테스트라고 ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
8. 📌 경계 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 외부 코드...
9장 단위 테스트
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 첫째 법칙 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙 컴파일은 실패하...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 떄까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 ...
10장 클래스
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 클래스 체계 클래스를 정의하느 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 맨 처음에 나온다....
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 클래스 체계 정적 공개 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개 함수가 나오며, 이어서 비공개 인스턴스 변수가 나온다....
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 클래스는 작아야 한다! 클래스를 만들 때 가장 중요한 것은 클래스가 맡은 책임을 작게 만드는 것이다. 클래스의 이름은 해당 클...
11장 시스템
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 도사룰 세운다면? 도시가 돌아가는 또 다른 이유는 적절한 추상화와 모듈화 때문이다. 그래서 큰 그림을 이해하지 못할지라도 개인과 개인...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 도시를 세운다면? 도시를 세운다면? 온갖 세세한 사항을 혼자서 직접 관리할 수 있을까? 불가능하다. 수도 관리 팀, 전력 관리 팀, ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 시스템 제작과 시스템 사용을 분리하라 모든 애플리케이션에서 풀어야 할 관심사는 초기화 단계이다. 대다수의 애플리케이션이 초기화...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
12장 창발성(創發性)
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 창발적 설계로 깔끔한 코드를 구현하자 모든 테스트를 실행한다 중복을 없앤다 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 강조한 단순한 설계 네 가지 규칙(중요도 순으로 나열됨) 모든 테스트를 실행한다. ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
13장 동시성
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 이 장에서는 여러 스레드를 동시에 돌리는 이유를 논한다. 여러 스레드를 동시에 돌리는 어려움도 논한다. 이런 어려움에 대처하고 깨끗한 코...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 결합을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 객체는 처리의 추상화다. 스레드는 일정의 추상화다. 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 결합(Coupling...
14장 점진적인 개선
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 Args 구현 목록 14-2는 Args 클래스다. 아주 주의 깊게 읽어보기 바란다. 스타일과 구조에 신경을 썼으므로 흉내 낼 가치가 ...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 프로그램을 짜다 보면 종종 명령행 인수의 구문을 분석할 필요가 생긴다. 편리한 유틸리티가 없다면 main 함수로 넘어오는 문자열 배열을 ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 이 챕터에서는 저자가 겪은 점진적인 개선을 보여주는 사례를 다룬다. main 함수에서 인수 문자열을 다루는 Args 관련 코드를 살펴보자...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 해당 챕터에서는 Args 클래스를 개선해 나가는 과정을 보여준다. 초기 Args 클래스 Args 단일 클래스가 너무 많은 역할을 함 ...
15장 JUnit 들여다보기
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 Junit 공통적인 접두어를 모두 제거하자. 명확한 표현을 위해 조건문을 캡슐화하자. (조건문을 메서드로 뽑아내 적절한 이름을...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 JUnit 프레임워크 JUnit은 저자가 많지만 켄트 벡과 에릭 감마 두 사람이 아틀란타 행 비행기를 타고 가다 만들었다. 저자가 챕...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 JUnit 프레임워크 문자열 비교 오류를 파악할 때 유용한 코드. Com-parisonCompactior라는 모듈로, 영리하게 짜인...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
16장 SerialDate 리팩터링
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 첫째, 둘러보자 클래스를 철저히 이해하고 리팩터링하려면 훨씬 높은 테스트 커버리지가 필요하다. 둘째, 고쳐보자 주석 법적인 ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 첫째 돌려보자 SerialDateTests 클래스는 모든 경우를 점검하지 않는다는 사실이 드러난다. MonthCodeToQuarte...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 첫째, 돌려보자 SerialDateTests라는 클래스는 단위 테스트 케이스 몇 개를 포함한다. 돌려보면 실패하는 케이스는 없다. 하...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
17장 냄새와 휴리스틱
박수완
1. 📌 핵심 개념 정리 ✅ 요약하기 주석 C1: 부적절한 정보 다른 시스템에 (예를 들어, 소스 코드 관리 시스템, 버그 추적 시스템, 이슈 추적 시스템, 기타 기록 관리 ...
김주엽
1. 📌 핵심 개념 정리 ✅ 요약하기 주석 부적절한 정보 변경 이력과 같은 주석은 적절하지 못하다. 일반적으로 작성자, 최종 수정일, SPR(Software Proble...
진소희
1. 📌 핵심 개념 정리 ✅ 요약하기 주석 c1: 부적절한 정보 다른 시스템에 (예를 들어, 소스 코드 관리 시스템, 버그 추적 시스템, 이슈 추적 시스템, 기타 기록 ...
김시용
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...
이정우
1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. ...