Community

개발자 99% 커뮤니티에서 수다 떨어요!

← Go back
1기-책 "클린코드" 좋은 TIL 모음 (6장. 객체와 자료구조 / 7장. 오류처리)
by lynn
#clean_code
2년 전
2,910

클린코드 (Clean Code)

노마드 개발자 북클럽 1기 (22/02/04)
수강생 Today I Learned 기록 모음


6장. 객체와 자료구조

  • 기억하고 싶은 책의 내용

    • 변수 사이에 함수라는 계층을 넣는다고 구현이 저절로 감춰지지는 않는다. 구현을 감추려면 추상화가 필요하다! 그저 get 함수와 set 함수로 변수를 다룬다고 클래스가 되지 않는다.

    • 그보다는 추상 인터페이스를 제공해 사용자가 구현을 모른 채 자료의 핵심을 조작할 수 있어야 진정한 의미의 클래스다.

    • 객체는 추상화 뒤로 자료를 숨긴 채 자료를 다루는 함수만 공개한다.

    • 자료 구조는 자료를 그대로 공개하며 별다른 함수는 제공하지 않는다.

    • 복잡한 시스템을 짜다 보면 (새로운 함수가 아니라) 새로운 자료 타입이 필요한 경우 → 클래스와 객체 지향 기법이 가장 적합!

    • (새로운 자료 타입이 아니라) 새로운 함수가 필요한 경우 → 절차적인 코드와 자료 구조가 좀 더 적합!

    • 잡종 구조( 객체 50%, 자료 구조 50% ) - 중요한 기능을 수행하는 함수, 공개 변수나 공개 get/set 함수(비공개private 변수를 그대로 노출) 등. → 되도록 피하는 편이 좋음.

    • 자료 전달 객체(Data Transfer Object, DTO) - 공개 변수만 있고, 함수가 없는 클래스

      • 데이터베이스와 통신, 소켓에서 받은 메세지의 구문을 분석할 때 유용

      • 일반적인 형태는 빈bean 구조!

      • 특수한 형태는 활성화 레코드! - 책 내용 정리 / @Roxy

  • 소감 및 생각

    • 객체, 자료 구조의 차이를 알게 되었다. 그리고 가능하면 객체 지향 코드를 사용하라는 디미터 법칙에 대해 배우게 됐다. 자바 내용이 많이 나오고 현재 다루는 JS 나 React 와는 거리가 있는 것처럼 보여 다소 거리감이 느껴지는 장이었다... - @Jz

    • 디미터의 법칙은 다른 객체가 어떠한 자료를 갖고 있는지 속사정을 몰라야 한다는 것을 의미하며, 이러한 이유로 Don't Talk to Strangers(낯선 이에게 말하지 마라) 또는 Principle of least knowledge(최소 지식 원칙) 으로도 알려져 있다. - @yoon

    • java를 주 언어로 사용하는 개발자로서 객체지향설계 를 중점으로 배우고, 사용하였다. 그래서 막연히 객체지향이 절차지향보다 당연히 좋다는 편견을 가지고 있었다. 하지만, 이번 파트를 읽으면서 프로그래머로서 두 설계의 차이점을 명확히 알고 상황에 맞게 좋은 설계를 하는 것이 올바른 프로그래머란 걸 깨닫게 되었다. - @dongHyo


7장. 오류처리

  • 기억하고 싶은 책의 내용

    • 깨끗한 코드와 오류 처리는 확실히 연관성이 있다.

      상당수 코드 기반은 전적으로 오류 처리 코드에 좌우된다.-여기저기 흩어진 오류 처리 코드 때문에 실제 코드가 하는 일을 파악하기가 거의 불가능하다는 의미다.

    • 오류 처리는 중요하지만 오류 처리 코드로 인해 프로그램 논리를 이해하기 어려워진다면 깨끗한 코드라 부르기 어렵다

    • 오류코드를 반환하기 보다는 예외처리를 해라!

    • 예외가 발생할 코드에는 try-catch-finally 문으로 시작하는게 좋다.

    • 미확인예외를 사용하라

    • 예외에 의미를 제공하라-예외를 던질 때는 전후 상황을 충분이 덧붙히자-오류가 발생한 원인과 위치를 찾기 쉬워진다.

    • 호출자를 고려해 예외 클래스를 정의하라-애플리케이션에서 오류를 정의할 때 프로그래머에게 가장 중요한 관심사는 오류를 잡아내는 방법이 되어야 한다. - 책 내용 정리 / @친슈

  • 소감 및 생각

    • 나는 개인적으로 try-catch문이 뭔가 더러운 느낌이 나서 최대한 안쓰려고 했는데 정말 바보같은 짓이었구나.. try-catch를 잘 활용해서 클린코드가 좀더 안정성이 높은 코드가 되도록 노력해야겠다. 그리고 스쳐 지나간 수만은 null을 전달하고 반환했던 함수들... 반성합니다. - @Bonita

    • '호출자를 고려해 예외 클래스를 정의하라' 부분에서 예제 코드를 보며 외부 라이브러리가 던지는 예외를 논리 사이에 끼워넣는 것이 아니라 하나의 예외로 추상화해 논리와 분리하는 것이 인상 깊었다.

      예외 처리가 깨끗한 코드와 큰 상관이 없다고 생각했으나 깨끗한 코드를 위해서는 예외 처리를 프로그램 논리와 분리하는 것이 중요하다는 것을 알 수 있었다. - @강민주

    • 7장 내용을 바탕으로 본인의 코드를 스스로 리팩토링 해보았음!! - @Arthur Coker (클릭!)


노마드 개발자 북클럽이란?

한달에 1권! 개발자 필독서를 (니꼬쌤이랑) 다같이! 함께 읽는 북클럽 입니다. (심지어, 무료!)
곧 2기가 시작할터이니~ 대기자 리스트에 미리 신청해보세요!