본문 바로가기

클린 코드

[클린 코드] 12장 창발성 창발성이란 하위계층(구성 요소)에는 없는 특성이나 행동이 상위계층(전체 구조)에서 자발적으로 돌연히 출현하는 현상을 말한다. 영어로는 '불시에 솟아나는 특성'(emergent property) 또는 이머전스(emergence)라고 한다. 창발적 설계로 깔끔한 코드를 구현하자 켄트 벡은 다음 규칙을 따르면 설계가 단순하다고 말한다. 켄트 백이 제시한 이 단순한 설계 규칙 4가지가 소프트웨어 설계 품질을 크게 높여줄 수 있다. 모든 테스트를 실행한다. 중복을 없앤다. 프로그래머 의도를 표현한다. 클래스와 메서드 수를 최소로 줄인다. 단순한 설계규칙 1: 모든 테스트를 실행하라 테스트가 가능한 시스템을 만들려고 애쓰면, 설계 품질이 더불어 높아진다. 크기가 작고 목적 하나만 수행하는 클래스가 나온다. SRP를.. 더보기
[리팩터링 2판 - 기초편] 01장 ~ 04장 몰아보기 마틴파울러 리팩터링 2판 정주행 스터디 - 기초편 서론 처음부터 완벽한 설계를 갖추기보다는 개발을 진행하면서 지속적으로 설계한다. 시스템을 구축하는 과정에서 더 나은 설계가 무엇인지 배우게 된다. 1장은 설계가 조금 아쉬운 작은 프로그램을 리팩터링해서 더 나은 객체지향 프로그램으로 만드는 과정을 보여준다. 2장은 리팩터링의 일반 원칙, 정의, 당위성을 설명한다. 3장은 코드에서 나는 악취를 찾아내는 방법과 리팩터링을 통해 문제의 부분을 말끔히 제거하는 방법을 설명한다. 4장에는 테스트를 작성하는 방법을 수록했다. 특수한 예시 몇 개를 제외하고는 이 책에 등장하는 '클래스', '모듈', '함수' 등의 용어는 (자바스크립트 언어 모델이 아닌) 일반적인 프로그래밍 언어에서의 의미로 사용했다. + 마틴 파울러와.. 더보기