Skip to main content
Advanced Search
Search Terms
Content Type

Exact Matches
Tag Searches
Date Options
Updated after
Updated before
Created after
Created before

Search Results

41 total results found

김주엽

Clean Code 초안 8장 경계

1. 📌 핵심 개념 정리 ✅ 요약하기 경계 살피고 익히기 외부 코드를 통합하기 전에 간단한 테스트 케이스를 작성해 외부 코드를 익히자. 짐 뉴커크는 이를 학습 테스트라고 부르는데 학습 테스트는 프로그램에서 사용하려는 방식대로 외부 API를 호출한다. 학습 테스트는 API를 사용하려는 목적에 초점을 맞춘다. 학습 테스트는 공짜 이상이다 학습 테스트는 투자하는 노력보다 얻는 성과가 더 크다. 학습 테스트는 패키지가 실제로 예상대로 도는지 검증한다. 사...

김주엽

Clean Code 초안 9장 단위 테스트

1. 📌 핵심 개념 정리 ✅ 요약하기 TDD 법칙 세 가지 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 깨끗한 테스트 코드 유지하기 테스트 코드가 복잡할수록 실제 코드를 짜는 시간보다 테스트 케이스를 추가하는 시간이 더 걸릴 수 있다. 지저분한 테스트 코드는 개발자 사이에서 점점 큰 불만...

김주엽

Clean Code 초안 10장 클래스

1. 📌 핵심 개념 정리 ✅ 요약하기 클래스는 작아야 한다! 클래스를 만들 때 가장 중요한 것은 클래스가 맡은 책임을 작게 만드는 것이다. 클래스의 이름은 해당 클래스의 책임을 기술해야 한다. 클래스의 설명은 if, and, or, but을 사용하지 않고 25단어 내외로 가능해야 한다. 메서드의 수가 적어도 좋은 클래스인가? public class SuperDashboard extends JFrame implements MetaDataUser ...

김주엽

Clean Code 초안 11장 시스템

1. 📌 핵심 개념 정리 ✅ 요약하기 시스템 제작과 시스템 사용을 분리하라 모든 애플리케이션에서 풀어야 할 관심사는 초기화 단계이다. 대다수의 애플리케이션이 초기화 과정 코드를 주먹구구식으로 구현하고 런타임 로직과 마구 뒤섞는다. 예시 public Service getService(){ if (service == null) service = new MyServiceImpl(...); // 모든 상황에 적합한 기본값일까? return...

7장 오류 처리

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 오류 코드보다 예외를 사용하라 오류 플래그 설정이나 오류 코드 반환 방식은 호출자 코드를 복잡하게 만들고, 함수 호출 직후 오류를 확인해야 하므로 가독성이 떨어집니다. 예외를 던지는 방식은 오류 처리 로직과 핵심 동작 로직을 분리하여 호출자 코드를 더 깔끔하게 만들어 코드 품질을 향상시킵니다. 개선 전: public class DeviceController { ... public void sendShu...

8장 경계

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 외부 코드 사용하기 패키지 제공자와 인터페이스 사용자 사이에는 적용성 극대화 vs. 사용자 요구 집중이라는 긴장이 존재하며, 이는 시스템 경계에서 문제를 일으킬 수 있습니다. 외부 코드를 사용하면 적은 시간에 더 많은 기능을 출시하기 쉽습니다. 2. 경계 살피고 익히기 외부 패키지 테스트가 우리의 직접적인 책임은 아니지만, 사용할 코드를 스스로 테스트하는 것이 바람직합니다. 타사 라이브러리 사용법이 불분명할 ...

9장 단위 테스트

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. TDD 법칙 세 가지 첫째 법칙: 실패하는 단위 테스트를 작성할 때까지 실제 코드를 작성하지 않는다. 둘째 법칙: 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 셋째 법칙: 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 위 세 가지 규칙을 따르면 개발과 테스트가 대략 30초 주기로 묶인다. 테스트 코드와 실제 코드가 함께 나올뿐더러 테스트 코드가 실제 코드보다 불과...

10장 클래스

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 클래스 체계 클래스를 정의하는 표준 자바 관례에 따르면, 가장 먼저 변수 목록이 나온다. 정적 공개 상수가 있다면 맨 처음에 나온다. 다음으로 정적 비공개 변수가 나오며, 이어서 비공개 인스턴스 변수가 나온다. 공개 변수가 필요한 경우는 거의 없다. 변수 목록 다음에는 공개 함수가 나온다. 비공개 함수는 자신을 호출하는 공개 함수 직후에 넣는다. 즉, 추상화 단계가 순차적으로 내려간다. 프로그램...

11장 시스템

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 도시를 세운다면? 도시가 잘 돌아가는 이유는 적절한 추상화와 모듈화 때문이다. 큰 그림을 이해하지 못할지라도 개인과 개인이 관리하는 구성 요소는 효율적으로 돌아간다. 깨끗한 코드를 구현하면 낮은 추상화 수준에서 관심사를 분리하기 쉬워진다. 도시를 운영하기 위해 수도, 전력, 교통, 치안, 건축 등 각 분야를 관리하는 팀이 존재하듯이, 소프트웨어 시스템도 관심사를 분리하여 관리해야 한다. 2. 시스템 제작과 시스...

김주엽

Clean Code 초안 12장 창발성(創發性)

1. 📌 핵심 개념 정리 ✅ 요약하기 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡이 강조한 단순한 설계 네 가지 규칙(중요도 순으로 나열됨) 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1: 모든 테스트를 실행하라 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다. 테스트가 불가능한 시스템은 검증도 불가능하다. 테스트가 가능한 시스템을 만들기 위해 애쓰면 설계...

김주엽

Clean Code 초안 13장 동시성

1. 📌 핵심 개념 정리 ✅ 요약하기 객체는 처리의 추상화다. 스레드는 일정의 추상화다. 제임스 O. 코플리엔 동시성이 필요한 이유? 동시성은 결합(Coupling) 을 없애는 전략으로 무엇(what) 과 언제(when) 를 분리하는 전략이다. 스레드가 하나인 프로그램은 디버깅에서 중단점을 찍었을 때 어디서 언제 멈추는 지 확인이 가능하다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 좋아진다. 서블릿에서는 웹 요청이 들어올 때마다 웹 ...

김주엽

Clean Code 초안 14장 점진적인 개선

1. 📌 핵심 개념 정리 ✅ 요약하기 이 챕터에서는 저자가 겪은 점진적인 개선을 보여주는 사례를 다룬다. main 함수에서 인수 문자열을 다루는 Args 관련 코드를 살펴보자. 간단한 예시 public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); in...

김주엽

Clean Code 초안 15장 JUnit 들여다보기

1. 📌 핵심 개념 정리 ✅ 요약하기 JUnit 프레임워크 JUnit은 저자가 많지만 켄트 벡과 에릭 감마 두 사람이 아틀란타 행 비행기를 타고 가다 만들었다. 저자가 챕터에서 소개할 코드는 ComparisonCompactor모듈로 문자열 비교 오류를 파악할 때 유용한 모듈이다. 예를 들어 ABCDE, ABXDE를 입력받으면 <...B[X]D...>를 반환한다 ComparisonCompactor 모듈 코드 package junit.framework; pub...

김주엽

Clean Code 초안 16장 SerialDate 리팩터링

1. 📌 핵심 개념 정리 ✅ 요약하기 첫째 돌려보자 SerialDateTests 클래스는 모든 경우를 점검하지 않는다는 사실이 드러난다. MonthCodeToQuarter 메서드를 전혀 호출하지 않는다. 코드 커버리지 분석 도구인 클로버를 이용해 단위 테스트가 실행하는 코드, 그렇지 않은 코드를 조사한 결과 185개 중 50% 만 실행하고 있었다. 클래스를 절저히 이해하고 리팩터링하려면 높은 테스트 커버리지가 필요하다. 둘째, 고쳐보자 코드의...

김주엽

Clean Code 초안 17장 냄새와 휴리스틱

1. 📌 핵심 개념 정리 ✅ 요약하기 주석 부적절한 정보 변경 이력과 같은 주석은 적절하지 못하다. 일반적으로 작성자, 최종 수정일, SPR(Software Problem Report) 번호 등과 같은 메타 정보를 주석으로 남긴다. 주석은 코드와 설계에 기술적인 설명을 부연하는 수단이다. 쓸모 없는 주석 오래된 주석, 엉뚱한 주석, 잘못된 주석은 쓸모가 없다. 쓸모 없어질 주석을 작성하지 않는 것이 가장 좋지만 작성했다면 재빨리 삭제하는 것이 좋다. ...

12장 창발성

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 창발적 설계로 깔끔한 코드를 구현하자 대다수는 켄트 벡이 제시한 단순한 설계 규칙 네 가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다. 켄트 벡은 다음 규칙을 따르면 설계는 단순하다고 말한다: 모든 테스트를 실행한다 중복을 없앤다 프로그래머 의도를 표현한다 클래스와 메서드 수를 최소로 줄인다 2. 단순한 설계 규칙 1 : 모든 테스트를 실행하라 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다. 테스...

13장 동시성

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 객체는 처리의 추상화다. 스레드는 일정의 추상화다. 제임스 O. 코플리엔 1. 동시성이 필요한 이유 동시성이란? 동시성은 결합(coupling)을 줄이는 전략이다. 즉, 무엇(what)과 언제(when)를 분리하는 역할을 한다. 스레드가 하나인 프로그램은 무엇과 언제가 강하게 결합되어 있어 상태 관리가 어렵다. 디버깅 시 중단점을 찍었을 때 어디서 언제 멈추는지 확인이 가능하다. 반면, 동시성을 도입하면 프로그램이 독...

14장 점진적인 개선

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 이 챕터에서는 저자가 겪은 점진적인 개선을 보여주는 사례를 다룬다. main 함수에서 인수 문자열을 다루는 Args 관련 코드를 살펴보자. 간단한 예시 public static void main(String[] args) { try { Args arg = new Args("l,p#,d*", args); boolean logging = arg.getBoolean('l'); in...

15장 JUnit 들여다보기

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. JUnit 프레임워크 JUnit은 저자가 많지만 켄트 벡과 에릭 감마 두 사람이 아틀란타 행 비행기를 타고 가다 만들었다. 저자가 챕터에서 소개할 코드는 ComparisonCompactor모듈로 문자열 비교 오류를 파악할 때 유용한 모듈이다. 예를 들어 ABCDE, ABXDE를 입력받으면 <...B[X]D...>를 반환한다 ComparisonCompactor 모듈 코드 package junit.framework; p...

16장 SerialDate 리팩터링

Clean Code 완성본

1. 📌 핵심 개념 정리 ✅ 요약하기 1. 첫째, 돌려보자 SerialDateTest 또는 SerialDateTests라는 클래스는 단위 테스트 케이스를 몇 개 포함하며, 실행 시 실패하는 케이스는 없지만 모든 경우를 점검하지 않는다는 사실을 알 수 있습니다. 저자는 SerialDateTest.java에 있는 모든 테스트 케이스가 통과할 수 있게 만들었습니다. Clover라는 Code Coverage 분석 도구를 이용하여 실행 코드와 실행하지 않는 코드를 확인...