북클럽 8

[클린코드] 2022-03-09 TIL

TIL (Today I Learned) 2022.03.09 오늘 TIL 3줄 요약 거대한 하나의 클래스보다 잘 쪼갠 여러 클래스가 낫다. 클래스는 하나의 책임만을 가져야 한다. (이것이 지켜졌는지 여부는 이름을 지을 때 티가 난다.) 클래스의 응집도를 높이려면 메소드의 매개변수 수를 줄이자. 오늘 읽은 범위 10장. 클래스 책에서 기억하고 싶은 내용을 써보세요. 표준 자바 관례에 따르면 클래스는 static public 상수 → static private 변수 → private 변수 (인스턴스 변수) → 공개 함수 → 호출되는 비공개 함수의 순서로 내용이 구성된다. public 변수가 필요한 경우는 거의 존재하지 않으며 비공개 함수는 자신을 호출하는 공개 메소드의 바로 아래에 위치시킨다. (p.172) ..

독서/클린코드 2022.03.09

[클린코드] 2022-03-05 TIL

TIL (Today I Learned) 2022.03.05 오늘 읽은 범위 8장. 경계 책에서 기억하고 싶은 내용을 써보세요. 경계 인터페이스를 사용할 때에는 클래스로 감싸줌으로써 해당 경계 인터페이스가 전체 프로그램에 끼치는 의도치 않은 영향을 방지하고 프로그램에 필요한 기능만을 추출한다. (p.145) 외부 코드를 사용할 때에는 먼저 자기 프로그램을 작성하는 것이 아니라 간단한 테스트를 작성하여 외부 코드의 사용법을 익히는 학습 테스트를 이용하자. (p. 146) 경계를 최대한 줄이고 그 외의 요소들로부터 분리시킴으로써 프로그램에 대한 통제성을 높이자. 경계를 잘 관리하지 않으면 우리가 통제할 수 없는 영역의 외부 코드에 의해 너무 휘둘릴 수 있다. 최소한 경계 코드는 우리가 통제권을 쥘 수 있다. ..

독서/클린코드 2022.03.07

[클린코드] 2022-03-04 TIL

TIL (Today I Learned) 2022.03.04 오늘 읽은 범위 7장. 오류 처리 책에서 기억하고 싶은 내용을 써보세요. try 블록에서 무슨 일이 생기든지 catch 블록은 프로그램 상태를 일관성 있게 유지해야 한다. (p.132) 모든 예외를 잡아야하는 아주 중요한 라이브러리가 아니라면 확인된 예외는 코드의 유지보수성이나 캡슐화의 측면에서 효율적이지 못하다. (p.134) 예외를 던질 때는 실패한 연산, 유형 등의 정보를 함께 첨부한다. 그러면 훨씬 수월하게 오류의 원인과 위치를 찾을 수 있다. (p.135) 오류를 분류할 때에는 오류 자체의 유형보다는 오류에 대응하는 방식으로 분류하는 것이 좋다. (p.135) 클래스를 만들거나 객체를 조작하여 특수 사례를 처리하면 (특수 사례패턴, Sp..

독서/클린코드 2022.03.05

[클린코드] 2022-03-01 TIL

TIL (Today I Learned) 2022.03.01 오늘 읽은 범위 6장. 객체와 자료 구조 책에서 기억하고 싶은 내용을 써보세요. 변수를 private으로 선언하고 get, set 함수를 제공한다고 그 내부 구현이 감춰지는 것은 아니다. 내부 구현을 감추기 위해서는 추상 인터페이스를 만들어줘야 한다. (p.118) 자료 구조를 사용하는 절차적인 코드는 기존 자료 구조를 변경하지 않으면서 새 함수를 추가하기 쉽다. 반면 객체 지향 코드는 기존 함수를 변경하지 않으면서 새 클래스를 추가하기 쉽다. (p.122) 객체는 자료를 숨기고 함수를 공개한다. 하지만 자료구조는 내부 구조를 당연히 노출하므로 디미터 법칙이 적용되지 않는다. (p.123) 디미터 법칙 : 모듈은 자신이 조작하는 객체의 속사정을 ..

독서/클린코드 2022.03.02

[클린코드] 2022-02-25 TIL

TIL (Today I Learned) 2022.02.25 오늘 읽은 범위 4장. 주석 책에서 기억하고 싶은 내용을 써보세요. 나쁜 코드에 주석을 달지 마라. 새로 짜라. (p.68) 저작권 정보와 소유권 정보와 같은 법적인 이유로 회사가 정립한 표준에 맞춰서 주석을 작성하는 것은 타당하다. (p.70) 경우에 다라 해당 방식으로 구현하게 된 의도를 주석으로 작성해주면 코드에 대한 이해도를 향상시킬 수 있다. (p.71) 인수나 반환값이 표준 라이브러리나 변경 불가능한 코드에 속하는데 그 의미가 한 눈에 드러나지 않는다면 주석을 사용하는 것도 좋다. ex) JAVA - a.compareTo(b) == 0 // a == b (p.72) 주석을 프로그램의 결과에 대한 경고로 활용할 수도 있다. 그를 통해 다..

독서/클린코드 2022.02.26

[클린코드] 2022-02-22 TIL

TIL (Today I Learned) 2022.02.22 오늘 읽은 범위 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. if 문/else 문/while 문 등에 들어가는 블록은 한 줄이어야 한다는 의미다. 대개 거기서 함수를 호출한다. 함수에서 들여쓰기 수준은 1단이나 2단을 넘어서면 안 된다. 그래야 함수는 읽고 이해하기 쉬워진다. (p.44) 단순히 다른 표현이 아니라 의미 있는 이름으로 다른 함수를 추출할 수 있다면 그 함수는 여러 작업을 하는 셈이다. (p.45) 함수가 확시히 '한 가지' 작업만 하려면 함수 내 모든 문장의 추상화 수준이 동일해야 한다. (p.45) 함수에서 이상적인 인수 개수는 0개(무항)다. 다음은 1개(단항)고, 다음은 가능한 피하는 편이 좋다. 4개 이상(다항)은 ..

독서/클린코드 2022.02.22

[클린코드] 2022-02-21 TIL

TIL (Today I Learned) 2022.02.21 오늘 읽은 범위 2장. 의미 있는 이름 책에서 기억하고 싶은 내용을 써보세요. 프로그래머는 코드에 그릇된 단서를 남겨서는 안 된다. 실제 List가 아니라면 List라 명명하지 않는다. 프로그래머에게 List라는 단어는 특수한 의미다. (p.23) 연속된 숫자를 덧붙이거나 불용어를 추가하는 방식은 적절하지 못하다. 이름이 달라야 한다면 의미도 달라져야 한다. (p.26) 이름 길이는 범위 크기에 비례해야 한다. (p.28) 클래스나 객체의 이름에서 Manager, Processor, Data, Info 등과 같은 단어는 피하고 동사는 사용하지 않는다. (p.32) javabean 표준을 따르면 접근자, 변경자, 조건자는 앞에 get, set, i..

독서/클린코드 2022.02.21

[클린코드] 2022-02-20 TIL

TIL (Today I Learned) 2022.02.20 오늘 읽은 범위 1장. 깨끗한 코드 책에서 기억하고 싶은 내용을 써보세요. 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한 가지에 '집중'한다. (p.10) 테스트 케이스가 없는 코드는 깨끗한 코드가 아니다. (p.12) 모든 테스트를 통과한다. 중복이 없다. 시스템 내 모든 설계 아이디어를 표현한다. 클래스, 메서드, 함수 등을 최대한 줄인다. (p.13) SRP (The Single Responsibility Principle) : 클래스에는 한 가지, 단 한 가지 변경 이유만 존재해야 한다. (p.19) OCP (The Open Closed Principle) : 클래스는 확장에 열려 있어야 하..

독서/클린코드 2022.02.20