스터디/클린코드(Clean Code)

[스터디] 클린코드 11장 (2022년 8월 10일)

눙엉 2022. 8. 10. 01:27

11장 시스템

 

도시를 세운다면?

도시가 돌아가는 이유 중 하나는 적절한 추상화와 모듈화 때문이다.

소프트웨어 팀도 도시처럼 구성한다.

시스템 수준에서도 깨끗함을 유지하는 방법을 살펴보는 장이다.

 

시스템 제작과 시스템 사용을 분리하라

제작(construction)과 사용(use)은 아주 다르다.

소프트웨어 시스템은 준비 과정과 런타임 로직을 분리해야 한다. (프론트엔드 관점에서는 무슨 말인지 1도 모르겠다)

 

시작 단계는 관심사 분리를 해야한다.

 

책에서 소개하는 초기화 지연(Lazy Initialization), 계산 지연(Lazy Evaluation)이 있다.

따로 간단하게 정리를 해두어서 링크로 대신한다. (지연 초기화)

 

초기화 지연, 지연 초기화 어떤 단어가 맞는지 잘 모르겠다.

 

확장

개발을 할 때 우리는 오늘 주어진 사용자 스토리에 맞춰 시스템을 구현해야 한다.

내일은 새로운 스토리에 맞춰 시스템을 조정하고 확장하면 된다. 이것이 반복적이고 점진적인 애자일 방식의 핵심이다.

TDD, 리팩터링, 깨끗한 코드는 코드 수준에서 시스템을 조정하고 확장하기 쉽게 만든다.

 

미래의 변경 때문에 미리 고민할 필요는 없다고 생각이 든다. 그래도 프론트엔드 관점에서 어떻게 하면 확장성을 좋게 컴포넌트를 제작할 것인지 생각해볼 때가 된 것 같다.

 

의사 결정을 최적화하라

아주 큰 시스템에서 한 사람이 모든 결정을 내리기 어렵다. 가장 적합한 사람에게 책임을 맡기면 좋다.

때때로 가능한 마지막 순간까지 결정을 미루는 방법이 최선이다. 최대한 정보를 모아 최선의 결정을 내리기 위함이다.

 

결론

클린 코드 책답게 시스템 역시 깨끗해야 한다고 말한다.

모든 코드에 의도를 명확히 표현하는 것이 중요한 것 같다.

자바의 코드를 이해하지는 못했지만 최대한 프론트엔드 관점에서 생각하며 읽으려고 했었다.