🎁 모든 강의 30% + 무료 강의 선물🎁

인프런 워밍업 스터디 클럽 3기 백엔드-code 1주 차 발자국

블로그 글은 박우빈님의 readable-code강의 참조하여 작성한 글입니다.

 

강의 수강 및 워밍업 스터디 참여 계기

나는 평소 가독성 좋은 코드, 유지보수 하기 좋은 코드에 대해 관심을 갖고 있었다.

그 이유는 지속적으로 변화하는 요구사항에 유연하게 대응하며 코드를 작성하기 위해서다.

우리는 개발자로서 새로운 기능 개발하는 시간 보다 기존 코드를 유지보수하는 시간이 더 많을 것이다. 또한, 코드를 읽는 시간이 작성하는 시간보다 훨씬 길다.

따라서, 읽기 쉬운 코드 작성 방법을 배우고자 이번 강의를 수강하게 되었다.

이때 강력한 동기부여 장치로 여러 동료들과 함께 성장할 수 있는 스터디 또한 참여하게 되었다.

학습 내용 요약

  • 추상: 중요한 정보는 가려내어 남기고, 덜 중요한 정보는 생략하여 버린다
    -> 구체에서 조각하듯이 정보를 덜어내고 정말 중요한 것만, 엑기스만 뽑아서 남겼을 때를 추상화했다고 표현함

     

  • 적절한 추상화: 해당 도메인의 문맥 안에서, 정말 중요한 핵심 개념만 남겨서 표현하는 것

  • 적절한 추상화를 위한 방법

    • 좋은 이름 짓기

      • 단수, 복수 구분

      • 이름 줄이지 않기

      • 은어, 방어 사용 금지

    • 추상화 레벨 동등하게 유지

    • 매직넘버 상수화

      • 의미를 갖고 있으나, 상수로 추출되지 않은 숫자 문자열 등은 상수화를 통해 이름 부여

    • 뇌 메모리 적게 쓰기


      인지적 경계성 추구: 읽는 사람으로 하여금, 읽는 사람 뇌 메모리에 정보를 최대한 적게 올리도록 코드를 작성해보자!

      • 중첩 반복문 사용 자제 -> early return 활용하려 else 사용 지양하기

      • 사용할 변수는 가깝게 선언하기

      • 부정 연산자 피하기

        • 부정어구를 쓰지 않아도 되는 상황인지 체크

        • 부정의 의미를 담은 다른 단어가 존재하는지 고민하기 or 부정어구로 메서드 명 구성

        • 부정 연산자(!)는 가독성이 떨어진다!!

           

           

  • 객체지향 SOLID 5가지 원칙

    • SRP: 하나의 클래스는 하나의 책임만 가져야 한다.

    • OCP: 확장에는 열려 있고, 수정에는 닫혀 있어야 한다.

    • LSP: 부모 클래스 인스턴스를 자식 클래스의 인스턴스로 치환이 가능해야 한다.

    • ISP: 사용하지 않는 인터페이스에 의존하면 안 된다.

    • DIP: 구체화가 아닌 추상화에 의존해라.



      보다 자세한 설명은 아래 링크에 정리해두었으니 참고 바랍니다!
      https://jiihyunn.tistory.com/12

       

       

    일주일 간의 학습 내용 회고

    • 계속할 점

      • 1차로 강의 보면서 노트 적극 활용하기!!
        이후 강사님이 하신 것중 생각나는 대로 리팩토링 따라해본 후, 기억이 나지 않으면 강의 다시 보면서 학습할 것

      • 학습한 내용 중 중요한 부분 나만의 언어로 블로그에 정리하기

      • 강의 진도표에 맞춰서 학습할 것. 밀리지 않기!

    • 느낀 점

      • 우테코 프리코스를 진행하면서 학습해왔던 가독성 좋은 코드 작성법을 강의를 통해 다시 한번 탄탄히 다질 수 있었다. 강의를 들으며 기존에 알고 있었던 내용을 복습하는 동시에, 두루뭉실하게 알고 있었던 부분도 확실히 예시를 통해 익힐 수 있어 더욱 의미 있는 시간이 되었다.

         

      • 하나의 클래스에 100줄이 넘는 방대한 코드가 처음에는 절대 리팩토링할 수 없을 것처럼 느껴졌지만, 강사님께서 몇 차례 다듬으신 후 객체지향적으로 변하는 과정을 보며 큰 신선함을 느꼈다. 코드가 점점 명료하고 유연하게 개선되는 모습을 보면서 객체지향 설계의 강력함을 다시금 체감할 수 있었다.

         

      • 리팩토링을 고려해봤을 때 조합, 다형성 이용 등 사용하는 것은 전혀 생각지도 못했는데, 강의를 통해 활용법을 배워서 재밌었다. 앞으로 혼자 지뢰찾기 게임 리팩토링을 다시 해보면서 강사님의 생각을 읽을 수 있도록 많이 복습해야겠다!

     

    미션 회고

    [DAY 2]

    평소 추상에 대해 깊게 생각해보지 않았는데, 미션을 통해 추상이 무엇인지, 코드에는 추상화라는 걸 어떻게 적용시킬 수 있는지 좀 더 명확하게 알게 되었다.

[DAY 4]

미션 PR: https://github.com/Jiihyun/readable-code/pull/1

 

🤔 고민사항

  • Item 객체 생성할 때 마다 금액이 양수인지 검증을 해주었는데,
    Order 클래스에서 총 가격이 양수인지 검증을 다시 한번 해줘야 할지 엄청 고민이 되었다.

 

[출처]

댓글을 작성해보세요.


채널톡 아이콘