20220309_북이

권도토잠보·2022년 3월 9일
0

북이흥행홍

목록 보기
8/16
post-thumbnail

🪴ㅤTIL (DAY - 10)

2022.03.09

오늘 읽은 범위

👉ㅤ클린코드 10장.클래스

기억하고 싶은 내용ㅤ📕

코드의 표현력과 그 코드로 이루어진 함수에 아무리 신경 쓸지라도 좀 더 차원 높은 단계까지 신경 쓰지 않으면
깨끗한 코드를 얻기는 어렵다. (p.172)

즉, 추상화 단계가 순차적으로 내려간다. 그래서 프로그램은 신문 기사처럼 읽힌다. (p.172)

클래스를 만들 때 첫 번째 규칙은 크기다.
클래슨느 작아야 한다. 두번째 규칙도 크기다. 더 작아야 한다. 앞서 함수 장에서 했던 이야기를 되풀이할
의도는 없다. 단지 클래스를 설계할 때도, 함수와 마찬가지로, '작게'가 기본 규칙이라는 의미다. (p.172)

클래스 이름은 해당 클래스 책임을 기술해야 한다. (p.175)

단일 책임 원칙(Single Responsibility Principle, SRP)은 클래스나 모듈을 변경할 이유가
하나, 단 하나 뿐이어야 한다는 원칙이다. SRP는 '책임'이라는 개념을 정의하며 적절한 클래스 크기를
제시한다. 클래스는 책임, 즉 변경할 이유가 하나여야 한다는 의미다. (p.175)

SRP는 객체 지향 설계에서 더욱 중요한 개념이다. (p.176)

소프트웨어를 돌아가게 만드는 활동과 소프트웨어를 깨끗하게 만드는 활동은 완전히 별개다.
우리들 대다수는 두뇌 용량에 한계가 있어 '깨끗하고 체계적인 소프트 웨어'보다
'돌아가는 소프트웨어'에 초점을 맞춘다. 전적으로 올바른 태도다. 관심사를 분리하는 작업은
프로그램만이 아니라 프로그래밍 활동에서도 마찬가지로 중요하다. (p.176)

'깨끗하고 체계적인 소프트웨어'라는 다음 관심사로 전환하지 않는다. (p.176)

"도구 상자를 어떻게 관리하고 싶은가? 작은 서랍을 많이 두고 기능과 이름이 명확한 컴포넌트를
나눠 넣고 싶은가? 아니면 큰 서랍 몇 개를 두고 모두를 던져 넣고 싶은가?"
규모가 어느 수준에 이르는 시스템은 논리가 많고도 복잡하다. 이런 복잡성을 다루려면 체계적인 정리가 필수다. (p.177)

강조하는 차원에서 한 번 더 말하겠다. 큰 클래스 몇 개가 아니라 작은 클래스 여럿으로 이뤄진 시스템이 더 바람직하다.
작은 클래스는 각자 맡은 책임이 하나며, 변경할 이유가 하나며, 다른 작은 클래스와 협력해 시스템에 필요한 동작을 수행한다. (p.177)

첫째, 리팩터링한 프로그램은 좀 더 길고 서술적인 변수 이름을 사용한다. 둘째, 리팩터링한 프로그램은 코드에 주석을
추가하는 수단으로 함수 선언과 클래스 선언을 활용한다. 셋째, 가독성을 높이고자 공백을 추가하고 형식을 맞추었다. (p.185)

객체 지향 프로그래밍 입문에서 우리는 구체적인(concrete) 클래스와 추상(abstract) 클래스가 있다고 배웠다. (p.189)

이렇게 결합도를 최소로 줄이면 자연스럽게 또 다른 클래스 설계 원칙인
DIP(Dependency Inversion Principle)를 따르는 클래스가 나온다.
본질적으로 DIP는 클래스가 상세한 구현이 아니라 추상화에 의존해야 한다는 원칙이다. (p.190)

추상화로 실제로 주가를 얻어오는 출처나 얻어오는 방식 등과 같은 구체적인 사실을 모두 숨긴다. (p.190)


오늘 읽은 소감ㅤ📙


아마 이 책에서 말하는 클래스와 내가 알고있는 클래스와 차이가 있을 것 이다.
자바스크립트 클래스는 몇 번 본 적이 있지만, 자바의 클래스는 본 적이 없다.
사실 자바코드 자체를 본 적이 없다. 그래서 이번에도 거의 이해를 하지 못하였다.
다만 함수든, 클래스든 반드시 짧고 간결하고 깨끗하게 써야한다는 것을 알게 되었다.
그러니까 개발자는 더욱 더 게을러져야 한다는 말을 돌려서 하는것은 아닐까 ?
성실하지만 게으른 개발자가 되라고 이 책이 나에게 주문을 거는 것 같다.
게으른건 확실한데 성실은 음.... 좀 더 부지런해지자 😭

궁금하거나 이해가 잘 가지 않는 내용ㅤ📘

🦖ㅤ자바스크립트에서의 클래스

👉ㅤClass는 사실 "특별한 함수"입니다. 자바스크립트에서 클래스는 함수의 한 종류입니다.

객체 지향 프로그래밍에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀로, 객체를 정의하기 위한 상태(멤버 변수)와 메서드(함수)로 구성된다.


profile
낯선이여, 당도하였으면 당도높은 복숭아

0개의 댓글