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

125 total results found

김주엽

Clean Code 초안 11장 시스템

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

김시용

Clean Code 초안 11장 시스템

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 시스템 제작과 사용을 분리하라 관심사 분리 : 준비 과정 (객체 제작 및 의존성 연결) <-> 런타임 로직 분리하기 관심사 분리 안된 예시 : 초기화 지연 / 계산 지연 public Service getService() { if (service == null) service ...

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: 모든 테스트를 실행하라 테스트가 가능한 시스템을 만들려고 애쓰면 설계 품질이 더불어 높아진다. 크기가 작고 목적 하나만 수행하는 클래스가 하나만 수행하는 클래스가 나온다. 결합도가 높으면 테스트를 작성하기 어렵다. 그러므로 앞서와 마찬가지로 테스트 ...

CleanCode
로버트 C. 마틴

박수완

Clean Code 초안 13장 동시성

1. 📌 핵심 개념 정리 ✅ 요약하기 이 장에서는 여러 스레드를 동시에 돌리는 이유를 논한다. 여러 스레드를 동시에 돌리는 어려움도 논한다. 이런 어려움에 대처하고 깨끗한 코드를 작성하는 방법도 몇 가지 제안한다. 동시성이 필요한 이유? 동시성은 결합을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다. 그래서 호출 스택을 살펴보면 프로그램 상태가 곧바로 드러난다. 컨테이너는 동시성을 부분적으로 ...

CleanCode
로버트 C. 마틴

진소희

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

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 창발적 설계로 깔끔한 코드를 구현하자 대다수는 켄트 벡이 제시한 단순한 설계 규칙 네가지가 소프트웨어 설계 품질을 크게 높여준다고 믿는다. 켄트 벡은 다음 규칙을 따르면 설계는 단순하다고 말한다 모든 테스트를 실행한다 중복을 없앤다 프로그래머 의도를 표현한다 클래스와 메서드 수를 최소로...

진소희

Clean Code 초안 13장 동시성

1. 📌 핵심 개념 정리 ✅ 요약하기 동시성과 깔끔한 코드는 양립하기 어렵다. 동시성이 필요한 이유? 동시성은 결합을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. 스레드가 하나인 프로그램은 무엇과 언제가 서로 밀접하다. 무엇과 언제를 분리하면 애플리케이션 구조와 효율이 극적으로 나아진다. 따라서 시스템을 이해하기가 쉽고 문제를 분리하기도 쉽다. 예를 들어, 웹 애플리케이션이 표준으로 사용하는 서블릿 모델을 살펴보자. 서블릿은 웹 혹은 EJB 컨테...

김주엽

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

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

김시용

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

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 모든 테스트를 실행하라 시스템은 검증이 가능해야 한다 = 테스트가 가능한 시스템 모든 테스트를 실행하기 위해선 SRP 및 DIP 준수하게 된다. -> 의존성 주입, 인터페이스, 추상화 등과 같은 도구를 사용해 결합도를 낮춘다. 즉, 시스템은 낮은 결합도와 높은 응집력을 가져야 한다. ...

김시용

Clean Code 초안 13장 동시성

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 동시성이 필요한 이유 동시성은 결합을 없애는 전략이다. 즉, 무엇과 언제를 분리하는 전략이다. -> 애플리케이션 구조와 효율이 극적으로 나아진다. 작은 협력 프로그램 여럿으로 보인다. = 시스템을 이해하기 쉽고 문제를 분리하기도 쉽다. 응답시간과 작업 처리량 개선으로 인해 동시성이 불가피한...

이정우

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

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 창발적 설계로 깔끔한 코드를 구현하자 < 단순한 설계 - 켄트 벡 > 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계 규칙 1 : 모든 테스트를 실행하라 설계는 의도한 대로 돌아가는 시스템을 내놓아야 한다...

이정우

Clean Code 초안 13장 동시성

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. 동시성이 필요한 이유 동시성이란? 동시성은 결합(coupling)을 줄이는 전략이다. 프로그램에서 무엇(what)과 언제(when)를 분리하는 역할을 한다. 단일 스레드 프로그램은 무엇과 언제가 강하게 결합되어 있어 상태 관리가 어렵다. 반면, 동시성을 도입하면 프로그램이 독립적인 작...

김주엽

Clean Code 초안 13장 동시성

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

진소희

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

1. 📌 핵심 개념 정리 ✅ 요약하기 프로그램을 짜다 보면 종종 명령행 인수의 구문을 분석할 필요가 생긴다. 편리한 유틸리티가 없다면 main 함수로 넘어오는 문자열 배열을 직접 분석하게 된다. 내 사정에 딱 맞는 유틸리티가 없다면? 직접 짜겠다고 결심한다. 새로 짤 유틸리티를 Args라 부르겠다. Args 구현 잘 짜여진 Args 예시 package com.objectmentor.utilities.args; import static com.objec...

김주엽

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 초안 14장 점진적인 개선

1. 📌 핵심 개념 정리 ✅ 요약하기 각자 해당 챕터에서 중요하다고 느낀 개념이나 아이디어를 간략하게 정리하고 개선 전, 후에 대한 예시 코드를 비교하며 개념을 설명합니다. Args 구현 종종 명령행 인수의 구문을 분석할 필요가 생긴다. 적절한 유틸리티가 없는 경우 직접 작성하게 된다. Args는 생성자에 인수 문자열과 형식 문자열을 넘겨 Args 인스턴스 생성 후 Args 인스턴스에 인수 값을 질의한다. Args 클래스 package com.objectme...