-
[clean code] 7일차책 정리/Clean Code 2022. 5. 4. 01:03
- 오늘의 책읽기: 6장. 객체와 자료구조 까지!
- 오늘의 과제: TIL 작성하기
- 제출기간: 익일 오전 6시까지
TIL 작성하기
- TIL, Today I Learned 는 책 감상평을 쓰는 방법 중 하나 입니다.
- TIL 작성방법을 숙지한 후. TIL을 작성해주세요.
- TIL 책 감상평 예시 를 참고하세요.
좋은 TIL 엿보기
- 처음 코딩을 배운다고 갔던 학원에서 HTML, CSS를 배울때 (강사분께서 코딩 전공하신 분이 아니었다) 이러한 형식구분 없이 무조건 옆으로 길에 늘어서 코딩했던 것을 그대로 배워서 한동안 고생했던 기억이 있다. prettier라는 존재를 알고 나서 엄청난 신세계를 경험했지만 내가 의도해서 일부러 구분한것을 강제로 없어버리곤 해서 지금은 제한적으로 사용하고 있지만 훌륭한 로직을 구현하는 것과 별개로 정리되지 않아 읽기쉽지 않은 코드는 배울점이 없다고 생각한다 - @ses2000hj 님
- 더 자세히 읽어보기
- 코드 형식에 대해서는 충분히 필요성을 느끼고 있었다. 현재 다니는 회사는 코드 형식이 정해져 있지 않다. 뒤죽박죽인 들여쓰기, 가로 정렬. 그렇다. 나는 실제로 코드 형식의 필요성을 절실하게 느끼고 있다. 저자의 이말에 굉장히 와닿았다. 코드형식은 의사소통의 일환이다. 이러한 필요성으로 회사에 코드 포멧터 도입을 제안했다. 가로길이, 들여쓰기, 등 코드 포멧을 설정하는데 책의 내용이 자료로써 도움이 된다. - @오창선 님
- 더 자세히 읽어보기
제출방법
- 제출기간: 익일 오전 6시까지
- 업로드 하신 게시물 링크를 아래 제출하면 끝!
- 내일은 미션입니다! 준비되셨죠?
p119
객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다. 자료구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다. .... 두정의는 본질적으로 상반된다. 두 개념은 사실상 정반대다. 사소한 차이일지 모르지만 그차이가 미치는 영향을 굉장하다.더보기이터레이터 패턴을 공부하면서 배웠던 내용이 이 부분에 적나라하게 나타난듯하다.
이터레이터패턴은 생각보다 간단하면서 '왜쓰지?' 라는 질문을 던지게 만든다.
for문 쓰는게 훨씬 쉽자나? 라는 생각이 계속 든다.
하지만 이는 내가 자료구조와 객체의 분리에 대해 무지했기 때문이다.
이터레이터 패턴은 어떤 자료구조가 오더라도 해당 패턴을 이용해 내부를 탐색할 수 있다.
이처럼 객체와 자료구조의 차이를 분명하게 인지하고 프로그램을 설계하는 것이 좋다.
오늘 처음 설계한 프로그램의 경우 자료구조와 객체의 분리가 정확하게 이루어지지 못했던 부분이 있다.
이런점에서 변경된 패턴의 경우 자료구조와 해당 객체가 분리된 설계로 괜찮은 설계로 볼 수 있을 것이다.
자료구조와 객체의 분리가 얼마나 이루졌는가를 다시 체크해 보며 건강한 설계로 나아가도록 해보자.
p122
절차적인 코드는 새로운 자료구조를 추가하기 어렵다. 그러려면 모든함수를 고쳐야한다. 객체지향 코드는 새로운 함수를 추가하기 어렵다. 그러려면 모든 클래스를 고쳐야한다.
...
복잡한 시스템을 짜다 보면 새로운 함수가 아니라 새로운 자료타입이 필요한 경우가 생긴다. 이때는 클래스와 객체지향 기법이 적합하다. 반면 새로운 자료타입이 아니라 새로운 함수가 필요한 경우도 생긴다. 이때는 절차적인 코드와 자료구조가 좀 더 적합하다.
...
분별있는 프로그래머는 모든 것이 객체라는 생각이 미신임을 잘안다. 때로는 단순한 자료구조와 절차적인 코드가 가장 적합한 상황도 있다.더보기흠...
항상 객체 지향으로 가야한다고 생각했다.
아무래도 임베디드 c의 영향이 굉장히 강했다. 언제나 코드는 스파게티처럼 꼬이기 마련이였고 한편으로는 그렇게 멋있지 않았다. 추상화, 업캐스팅 등등 아무것도 사용하지 않고 오로지 절차에만 의존하여 흘러가는 로직이 나에겐 동기부여가 되지 않았다.
그래서 더 UML을 따른다. 설계를 어떻게 할것인지가 코드로 시작하기보다 더 중요한 베이스가 된다고 생각한다.
하지만 자료구조 관점에서도 한번 확인할 필요가 있다. 이런 것은 어떤 방식으로 표현하고 전달할 수 있을까?
'책 정리 > Clean Code' 카테고리의 다른 글
[clean code] 9일차 (0) 2022.05.08 [clean code] 8일차 (0) 2022.05.06 [clean code] 6일차 (0) 2022.05.03 [clean code] 5일차 (0) 2022.05.02 [clean code] 4일차 (0) 2022.04.28