한달한권 클린코드 핵심 정리 (1장 깨끗한 코드, 2장 의미 있는 이름) 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다. 나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다. 새로운 시스템을 만들어야 한다. 일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 ... 한달한권book클린코드book 클린코드 핵심 정리 (6장 객체와 자료구조) 비지니스 로직 없이 순수 데이터를 저장하는 자료구조의 역할이다. 객체 위의 코드는 생성자에 비즈니스 로직과 관련된 코드가 들어가 있고, 필드를 private 으로 하여 자료를 숨겼다. 만약 Triangle 이라는 새로운 클래스(자료구조가) 추가된다면? area() 함수 안에 if-else 문을 수정해야 한다. 절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 함수를 고쳐야 한다. 객체 만약... 한달한권book클린코드book 클린코드 핵심 정리 (5장 형식 맞추기) 내 for 문은 뭐지..? 이제 이해하기 좋다! 가독성에 필수적이다 코드를 수월하게 읽어나갈 수 있다. 아마추어처럼 보이지 않는다. 포맷팅으로 인해 코드를 잘못해석해 버그를 발생할 위험을 줄인다! ~200 lines < 500 lines 200라인 "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일보다는 작은 파일이 이해하기 쉽다" -> 현업... 한달한권book클린코드book 클린코드 핵심 정리 (4장 주석) 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야 한다. 코드로도 의도를 표현할 수 있다! 코드의 변화에 따라가지 못하고, 주석은 방치된다. 코드는 컴파일되어 호출되지만, 주석은 그저 주석이기 때문에 그 자리에 방치되고 결국 의미없는 텍스트가 되어버린다. 구현에 대한 정보를 제공한다. 의도와 중요성을 ... 한달한권book클린코드book 클린코드 핵심 정리 (SOLID, 3장 함수) 한 클래스는 하나의 책임만 가져야 한다 OCP 의 목표는 해당 클래스의 기존 동작을 변경하지 않고 클래스의 확장하는 것을 목표로 한다. 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다. 즉, 자식 클래스가 부모 클래스와 동일한 작업을 수행할 수 없는 경우 버그가 발생할 수 있다라는 의미 자식 클래스는 부모 클래스가 할 수 있는 모든 것을 할 수 있어야 하며 이 프로세스를 상속이라고 한... SOLID한달한권book클린코드SOLID 클린코드 핵심 정리 (7장 예외처리) 하지만 예외를 던지는 것이 명확하고, 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 예외를 던진다. (별도의 처리가 필요한 예외라면 checked exception으로 던진다.) 예외를 처리할 수 있는 곳에서 catch하여 처리한다. Exception을 상속하면 Checked Exception 명시적인 예외처리가 필요하다. C#은 확인된 예외를 지원하지 않는다. 영웅적인 시도에도 불고하고 ... 한달한권book클린코드book 클린코드 핵심 정리 (8장 경계) 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다. 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다. 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다. 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다. 객체의 실제 구현을 외부로부터 감추는 방식 Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.... 한달한권book클린코드book 클린코드 핵심 정리 (10장 시스템) 소프트웨어 시스템은 (어플리케이션 객체를 제작하고 의존성을 서로 연결 하는) 준비 과정과 (준비 과정 이후에는 이어지는) 런타임 로직을 분리해야 한다. 객체의 생성과 객체를 사용하는 부분을 분리한다. 객체의 생성은 시작 단계에서, 비즈니스 로직은 객체를 사용하는데 집중한다. main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다. 어플리케이션은 그저 만들어진 객체를 사용한다... 한달한권book클린코드book 클린코드 핵심 정리 (10장 클래스) 클래스가 맡은 책임이 한 개인가 함수와 마찬가지로 클래스도 작아야 한다. 클래스 설명은 만일(if), 그리고(and), 하며(or), 하지만(but)을 사용하지 않고 25단어 내외로 가능해야 한다. ⇒ 책임이 한 가지여야 한다. SRP 해야 한다. 자잘한 단일 클래스가 많아지면 큰 그림을 이해하기 어렵다고 우려한다. 하지만 작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아... 한달한권book클린코드book
클린코드 핵심 정리 (1장 깨끗한 코드, 2장 의미 있는 이름) 성능이 나쁜 코드 불필요한 연산이 들어가서 개선의 여지가 있는 코드 의미가 모호한 코드 이해하기 어려운 코드, 네이밍과 그 내용이 다른 코드 중복된 코드 나쁜 코드는 깨진 유리창 처럼 계속 나쁜 코드가 만들어지도록 한다. 나쁜 코드는 팀 생산성을 저하시킨다. 기술 부채를 만들어 수정을 더 어렵게 한다. 새로운 시스템을 만들어야 한다. 일정 안에 새로운 기능을 완성해야 한다.(하지만.. 나쁜 ... 한달한권book클린코드book 클린코드 핵심 정리 (6장 객체와 자료구조) 비지니스 로직 없이 순수 데이터를 저장하는 자료구조의 역할이다. 객체 위의 코드는 생성자에 비즈니스 로직과 관련된 코드가 들어가 있고, 필드를 private 으로 하여 자료를 숨겼다. 만약 Triangle 이라는 새로운 클래스(자료구조가) 추가된다면? area() 함수 안에 if-else 문을 수정해야 한다. 절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 함수를 고쳐야 한다. 객체 만약... 한달한권book클린코드book 클린코드 핵심 정리 (5장 형식 맞추기) 내 for 문은 뭐지..? 이제 이해하기 좋다! 가독성에 필수적이다 코드를 수월하게 읽어나갈 수 있다. 아마추어처럼 보이지 않는다. 포맷팅으로 인해 코드를 잘못해석해 버그를 발생할 위험을 줄인다! ~200 lines < 500 lines 200라인 "코드 길이를 200줄 정도로 제한하는 것은 반드시 지킬 엄격한 규칙은 아니지만, 일반적으로 큰 파일보다는 작은 파일이 이해하기 쉽다" -> 현업... 한달한권book클린코드book 클린코드 핵심 정리 (4장 주석) 코드에 주석을 추가하는 일반적인 이유는 코드 품질이 나쁘기 때문이다. 자신이 저지른 난장판을 주석으로 설명하지 말고 개선하는데 시간을 보내야 한다. 코드로도 의도를 표현할 수 있다! 코드의 변화에 따라가지 못하고, 주석은 방치된다. 코드는 컴파일되어 호출되지만, 주석은 그저 주석이기 때문에 그 자리에 방치되고 결국 의미없는 텍스트가 되어버린다. 구현에 대한 정보를 제공한다. 의도와 중요성을 ... 한달한권book클린코드book 클린코드 핵심 정리 (SOLID, 3장 함수) 한 클래스는 하나의 책임만 가져야 한다 OCP 의 목표는 해당 클래스의 기존 동작을 변경하지 않고 클래스의 확장하는 것을 목표로 한다. 서브타입은 언제나 기반 타입으로 교체할 수 있어야 한다. 즉, 자식 클래스가 부모 클래스와 동일한 작업을 수행할 수 없는 경우 버그가 발생할 수 있다라는 의미 자식 클래스는 부모 클래스가 할 수 있는 모든 것을 할 수 있어야 하며 이 프로세스를 상속이라고 한... SOLID한달한권book클린코드SOLID 클린코드 핵심 정리 (7장 예외처리) 하지만 예외를 던지는 것이 명확하고, 처리 흐름이 깔끔해진다. 오류가 발생한 부분에서 예외를 던진다. (별도의 처리가 필요한 예외라면 checked exception으로 던진다.) 예외를 처리할 수 있는 곳에서 catch하여 처리한다. Exception을 상속하면 Checked Exception 명시적인 예외처리가 필요하다. C#은 확인된 예외를 지원하지 않는다. 영웅적인 시도에도 불고하고 ... 한달한권book클린코드book 클린코드 핵심 정리 (8장 경계) 오픈소스, 라이브러리를 안쓰는 프로젝트는 없다. 우리가 만든 코드에 외부에서 들어온 코드를 병합해야 한다. 외부 코드는 외부에서 만든 코드인데, 외부 시스템과 호출하거나 단순히 외부에서 만들어진 코드일 수 있다. 우리 코드와 외부 코드를 깔끔하게 통합시키기 위해 경계를 잘 지어야 한다. 객체의 실제 구현을 외부로부터 감추는 방식 Sensor를 관리해야 한다. Sensor는 외부에서 사용된다.... 한달한권book클린코드book 클린코드 핵심 정리 (10장 시스템) 소프트웨어 시스템은 (어플리케이션 객체를 제작하고 의존성을 서로 연결 하는) 준비 과정과 (준비 과정 이후에는 이어지는) 런타임 로직을 분리해야 한다. 객체의 생성과 객체를 사용하는 부분을 분리한다. 객체의 생성은 시작 단계에서, 비즈니스 로직은 객체를 사용하는데 집중한다. main 함수에서 시스템에 필요한 객체를 생성한 후 어플리케이션에 넘긴다. 어플리케이션은 그저 만들어진 객체를 사용한다... 한달한권book클린코드book 클린코드 핵심 정리 (10장 클래스) 클래스가 맡은 책임이 한 개인가 함수와 마찬가지로 클래스도 작아야 한다. 클래스 설명은 만일(if), 그리고(and), 하며(or), 하지만(but)을 사용하지 않고 25단어 내외로 가능해야 한다. ⇒ 책임이 한 가지여야 한다. SRP 해야 한다. 자잘한 단일 클래스가 많아지면 큰 그림을 이해하기 어렵다고 우려한다. 하지만 작은 클래스가 많은 시스템이든 큰 클래스가 몇 개뿐인 시스템이든 돌아... 한달한권book클린코드book