😀 책에서 기억하고 싶은 내용을 써보세요.

  • 알고리즘을 이해하라(383p)
    • 알고리즘을 안다고 생각하지만 실제는 코드가 '돌아갈' 때까지 이리저리 찔러보고 굴려본다.
    • '돌아간다'는 사실은 어떻게 아느냐고? 생각할 수 있는 테스트 케이스를 모두 통과하니까.
      * 이 방식이 틀렸다는 말이 아니다.
    • 구현이 끝났다고 선언하기 전에 함수가 돌아가는 방식을 확실히 이해하는지 확인하라.
      =>  테스트 케이스를 모두 통과한다는 사실만으로 부족하다.
    • 알고리즘이 올바르다는 사실을 확인하고 이해하려면 기능이 뻔히 보일 정도로 함수를
      깔끔하고 명확하게 재구성하는 방법이 최고다.

  • if/Else 혹은 Switch/Case 문보다 다형성을 사용하라(385p)
    1. 대다수 개발자가 switch 문을 사용하는 이유는 그 상황에서 가장 올바른 선택이기보다는
      당장 손쉬운 선택이기 때문이다.
      => switch를 선택하기 전에 다형성을 먼저 고려하라는 의미다.
    2. 유형보다 함수가 더 쉽게 변하는 경우는 극히 드물다. 그러므로 모든 swtich 문을 의심해야 한다.

// 변경 전
if (shouldBeDeleted(timer))

// 변경 후
if (timer.hasExpired() && !timer.isRecurrent())
  • 조건을 캡슐화하라(388p)
    • 부울 논리는 이해하기 어렵다.
    • 조건의 의도를 분명히 밝히는 함수로 표현하라.
  • 부정 조건은 피하라(389p)
    • 부정 조건은 긍정 조건보다 이해하기 어렵다.
    • 가능하면 긍정 조건으로 표현한다.

 

 

🤔 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요.

  1. Switch/Case 문은 잘 사용하지 않았지만 if/else로 도배된 코드는 많이 봤습니다.
    • 우선적으로 가독성이 상당히 안 좋았습니다.
    • if에 해당하는 조건을 전부 거치기 때문에 상당히 비효율적이라고 느껴졌습니다.
  2. 제가 추상화에 대한 개념이 아직 덜 정립되어 있는 것 같습니다.
    • 우선 책을 읽어야겠다는 생각 때문에 '대략적인 이런 거구나?'라는 생각으로 넘어가고 있습니다.
      추상화의 개념과 예시를 좀 더 찾아보고 고민해봐야 할 것 같습니다.

 

 

 

🔎 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요. 

  • 추상화란?
    • 컴퓨터 과학에서 추상화는 복잡한 자료, 모듈, 시스템 등으로부터
      핵심적인 개념 또는 기능을 간추려 내는 것을 말한다.
    • 결국 핵심은 불필요한 코드를 제거하고 중요한 부분을 살리는 것입니다.
  • 다형성이란?
    • 하나의 객체가 여러 가지 타입을 가질 수 있는 것을 의미합니다.
    • 자바에서는 이러한 다형성을 부모 클래스 타입의 참조 변수로 자식 클래스 타입의 인스턴스를
      참조할 수 있도록 하여 구현하고 있습니다.

 

 

 

👀 소감 3줄 요약

  • 알고리즘을 이해하지 않고 우선 코드부터 했던 적이 많은데, 책을 읽고  반성하게 되었습니다.
  • 객체지향의 개념이 중요하다는 걸 이번 챕터를 읽고 더욱 강하게 느꼈습니다.
  • 클린코드를 읽었나 보다 그걸 바탕으로 코드에 적용해 봤나 가 중요하다고 생각했습니다.

 

 

 

 

 
반응형

+ Recent posts