CleanCode
9 posts
Clean Code - TIL 10. 클래스

TIL 10. 클래스 오늘 TIL 3줄 요약 클래스는 작아야 한다. (172p) 응집도를 유지하면 작은 클래스 여럿이 나온다. (178p) 결합도와 함께 모듈의 독립성을 판단하는 지표이며, *모듈 내부의 기능적인 응집 정도를 나타낸다. 결합도는 모듈과 모듈간의 상호 결합 정도를 나타낸다. **응집도는 높을수록 좋고 결합도는 낮을수록 이상적이다. 클래스가 응집도를 잃는다면 쪼개라. (179p) TIL (Today I Learned) 날짜 2022.05.11 오늘 읽은 범위 10장. 클래스 책에서 기억하고 싶은 내용을 써보세요. 단일 책임 원칙 (SRP - Single Responsibility Principle)은 클래스나 모듈을 변경할 이유가 하나, 단 하나뿐이어야 한다는 원칙이다. (175p) 클래스 설명은 만일(“if”), 그리고(“and”), -(하)며(“or”), 하지만(“but”)을 사용하지 않고서 25 단어 내외로 가능해야 한다. SRP 원칙과 OCP 원칙을 지원…

May 11, 2022
CleanCode
Clean Code - TIL 08. 경계 & TIL 09. 단위 테스트

TIL 08. 경계 경계 TIL 2줄 요약 외부 코드(외부 라이브러리 API)를 사용할 땐, 짐 뉴커크가 얘기한 학습 테스트의 방식으로 초점을 맞추자. (147p) 경계에 위치하는 코드는 깔끔히 분리한다. (외부 라이브러리에 의존하지 않게 우리 코드를 작성하라.) (152p) TIL (Today I Learned) 날짜 2022.05.07 오늘 읽은 범위 8장. 경계 책에서 기억하고 싶은 내용을 써보세요. 학습 테스트는 공짜 이상이다.(149p ~ 150p) 학습 테스트를 이용한 학습이 필요하든 그렇지 않든, 실제 코드와 동일한 방식으로 인터페이스를 사용하는 테스트 케이스가 필요하다. 이런 경계 테스트가 있다면 패키지의 새 버전으로 이전하기 쉬워진다. 그렇지 않다면 낡은 버전을 필요 이상으로 오랫동안 사용하려는 유혹에 빠지기 쉽다. 낡은 버전을 필요 이상으로 사용하려는 유혹에 빠지지 않기 위한 방법으로 학습 테스트를 가급적이면 Production 코드와 유사하게 짜는 것…

May 07, 2022
CleanCode
Clean Code - TIL 07. 오류 처리

TIL 07. 오류 처리 오늘 TIL 3줄 요약 Try - Catch - Finally 문부터 작성하라 (132p) -> 예외 던지기부터 시작하라. 호출자를 고려해 예외 클래스를 정의하라. (135p) null을 반환하는 곳이 있을 경우, 예외를 던지거나 특수 사례 객체를 반환하게 해라 (139p) TIL (Today I Learned) 날짜 2022.05.05 오늘 읽은 범위 7장. 오류 처리 책에서 기억하고 싶은 내용을 써보세요. 오류 처리의 시작은 강제로 예외를 일으키는 테스트 케이스를 작성한 후 테스트를 통과하게 코드를 작성하는 것으로부터 시작해라. (133p) 확인된 오류가(Checked Exception) 치르는 비용은 OCP를 위반할 수 있다는 것을 기억해야 한다. (134p) 상위 단계에서 던지는 확인된 예외를 던지게 될 경우, 다음과 같이 예외 처리를 해야 한다.. (1) catch 블록에서 처리 (2) 선언부에 throw 절을 추가 결과적으로 하위 단…

May 05, 2022
CleanCode
Clean Code - TIL 06. 형식 맞추기

TIL 06. 객체와 자료 구조 오늘 TIL 3줄 요약 객체는 동작(구현)을 공개하고 자료를 숨긴다. 자료 구조는 별다른 동작 없이 자료를 노출한다. 객체 VS 자료구조와 절차적인 코드의 선택은 상황마다 다르므로, 직면한 문제에 최적을 선택한다.(128p) TIL (Today I Learned) 날짜 2022.05.03 오늘 읽은 범위 6장. 객체와 자료구조 책에서 기억하고 싶은 내용을 써보세요. 디미터 법칙 - 모듈은 자신이 조작하는 객체의 속사정을 몰라야 한다는 법칙이다.(123p) 즉, 객체는 조회 함수로 내부 구조를 공개하면 안 된다. 절반은 객체, 절반은 자료 구조인 잡종 구조가 나오는 경우가 있다. 하지만 이렇게 나온 구조는 객체 지향과 절차 지향 구조의 단점만 모아놓게 되는 셈이다.(124p ~ 125p) 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 여지껏 작성해 본 모든 프로젝트의 구현 방식이 잡종 방식일 것이고, 그에 대한 일침을 놓는 챕터였다. 객…

May 03, 2022
CleanCode
Clean Code - TIL 05. 형식 맞추기

TIL 05. 형식 맞추기 오늘 TIL 3줄 요약 좋은 소프트웨어 시스템은 읽기 쉬운 문서로 이뤄진다. (114p) 형식을 맞추는 목적이 중요하다. 그 목적엔 ‘돌아가는 코드’ 가 일차적인 의무가 아니다. 돌아가는 코드라는 생각을 내려두자. (96p) 좋은 신문 기사를 작성하듯 코드를 작성하자. 전달력 좋은 글을 쓰듯 코드를 작성한다. (98p) TIL (Today I Learned) 날짜 2022.05.02 오늘 읽은 범위 5장. 형식 맞추기 책에서 기억하고 싶은 내용을 써보세요. 좋은 신문 기사를 작성하듯(98p)이라는 소단원의 내용에 5장의 내용이 모두 내포되어 있다. 읽기 좋은 글의 특성을 추려보면 5장 내용들과 일맥상통할 것이다. 그 중 대표적이라 생각하는 요소들을 쓰자면 아래와 같다. 98p ~ 101p 의 내용 요약 개념은 상단 요약 (초반에 요약) 개념에서 쓰는 변수 선언은 쓰는 개념과 가깝게 선언. ( 연관된 종속 메소드의 선언도 동일 ) 저자와 완전히 동…

May 02, 2022
CleanCode
Clean Code - TIL 04. 주석

TIL 04. 주석 오늘 TIL 3줄 요약 많은 경우 주석으로 달려는 설명을 새로운 코드(즉, 리팩토링해라)로 대체하는 것으로 충분한 경우가 많다. (70p) 닫는 괄호에 주석을 달아야겠다는 생각이 들면 함수를 줄이려는 시도를 하자.(85p) 의도 표현은 주석이 아닌 코드로! (법적 표현 같이 알기 힘든 요소 제외하고는..?) TIL (Today I Learned) 날짜 2022.04.29 오늘 읽은 범위 4장. 주석 책에서 기억하고 싶은 내용을 써보세요. 좋은 주석 법적인 주석 정보를 제공하는 주석 의도를 설명하는 주석 의미를 명료하게 밝히는 주석 결과를 경고하는 주석 (ex - 실행 시간이 오래 걸린다는 주석) TODO 주석 -> But! 이 TODO를 나쁜 코드를 남겨둘 용도로 사용하는 것은 금물이다. 작성할 코드를 미루지 말 것! 중요성을 강조하는 주석 나쁜 주석 독자를 배려하지 않는 주석( = 작성자만 의미를 해석할 수 있는 주석) 같은 이야기를 중복하는 주석 의무…

April 29, 2022
CleanCode
Clean Code - TIL 03. 함수

TIL 03. 함수 오늘 TIL 3줄 요약 소프트웨어는 글짓기와 비슷하다. 글짓기를 하듯 좋은 코드를 위해선 중복 제거, 반복 제거, 순서 변경 등을 해야 한다.(62p) 오류 처리도 한 가지 작업이다.(59p) 명령과 조회를 분리하라.(56p) TIL (Today I Learned) 날짜 2022.04.25 오늘 읽은 범위 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. 소프트웨어를 짜는 행위는 여느 글짓기와 비슷하다. 초안은 대개 서투르고 어수선하다. 원하는 대로 읽힐 때까지 말을 다듬고 문장을 고치고 문단을 정리하는 글짓기는 소프트웨어를 짜는 행위와 다르지 않다. 중복을 줄여나가고, 메서드를 줄이고 순서를 바꾼다. 때로는 전체 클래스를 쪼개기도 한다. 이 와중에도 코드는 항상 단위 테스트를 통과한다.(62p) 작게 더 작게! 그리고 한 가지만 해라! 앞서 얘기한 2가지는 함수당 추상화 수준은 하나로도 이어지는 내용이다. 자연스럽게 위에서 아래로 코드 읽기:내려가기…

April 26, 2022
CleanCode
Clean Code - TIL 02. 의미 있는 이름

TIL 02. 의미 있는 이름 오늘 TIL 3줄 요약 의도를 분명하게 밝히기 위해 이름을 신중하게 짓자. 의도를 분명하게 하기 위해선, 명확성이 있어야 한다. 의도를 분명하게 하기 위해선, 일관성이 있어야 한다. TIL (Today I Learned) 날짜 2022.04.24 오늘 읽은 범위 2장. 의미 있는 이름 책에서 기억하고 싶은 내용을 써보세요. 의미 있는 맥락을 추가하라! - 목적에 맞는 정보들은 성격에 맞게 적당한 접두어를 추가하는(해당 정보들을 묶어 클래스화 하는 것이 더욱 좋다!) 방식으로 명확하게 정보를 드러내는 것이 좋다. 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 평소 코딩 알고리즘 문제를 연습할 때 temp 같은 임시 변수를 간간히 썼었는데, 동료의 피드백을 받아본 결과 의미 있는 변수명과 메소드를 쓰는 것도 이럴 때 같이 연습해 두면 평소 코딩 습관이 좋아질 것이라는 의견이 있었다. 그 피드백의 중요성을 되짚어주는 내용이었다고 생각한다. 앞…

April 25, 2022
CleanCode
Clean Code - TIL 01. 깨끗한 코드

TIL 01. 깨끗한 코드 오늘 TIL 3줄 요약 좋은 코드는 좋은 소설처럼 읽기 좋다. 깨끗한 코드는 한 가지에 집중, 충실한 코드다. 연습이 중요하다. TIL (Today I Learned) 날짜 2022.04.23 오늘 읽은 범위 1장. 깨끗한 코드 책에서 기억하고 싶은 내용을 써보세요. 깨끗한 코드는 한 가지에 ‘집중’한다. 깨끗한 코드란 다른 사람이 고치기 쉽다. 코드를 읽는 시간 대 코드를 짜는 시간 비율이 10 대 1을 넘는다. 이 책은 좋은 코드를 짜기 위한 다양한 경험적 교훈과 체계와 절차와 기법, 그리고 예제를 무수히 많이 보여주지만, 결론적으로 읽는 독자의 연습에 달렸다. 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 급하고, 서둘러 끝내려면, 쉽게 짜려면, 읽기 쉽게 만들면 된다. 좋은 코드를 위해선 연습이 필요하다. TIL 01. 깨끗한 코드 오늘 TIL 3줄 요약 TIL (Today I Learned) 날짜 오늘 읽은 범위 책에서 기억하고 싶…

April 24, 2022
CleanCode