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

[인프런 워밍업 클럽 3기 - BE 클린 코드, 테스트 코드] 1주차 발자국

[인프런 워밍업 클럽 3기 - BE 클린 코드, 테스트 코드] 1주차 발자국

1주차 발자국

이제까지 읽기 좋은 코드를 작성하기 위해서 따로 기준을 잡지 않고, 그저 내 눈에 읽기 가장 좋게 코드를 작성했었다. 하지만 강의를 들으며, 사고의 depth부터 시작하여, SOLID 원칙까지 읽기 좋은 코드를 작성하기 위해서 어떻게 사고를 해야하는 지 많이 얻어갈 수 있었던 강의였다. 가장 기본적인 추상과 구체를 시작으로 일기 좋은 코드를 만들기 위한 자세, 추상의 관점으로 바라보는 객체 지향 등을 통해 앞으로 읽기 좋은 코드를 작성할 때, 어떻게 생각할 지 조금은 방향이 잡힌 것 같다.

강의 내용 중 가장 기억에 남는 것은 SOLID 원칙이다.

SRP(Single Responsibility Principle): 단일 책임 원칙
: 하나의 클래스는 하나의 책임만을 가져야 한다. 하나의 기능만을 담당하여 유지보수를 더욱 효율적으로 할 수 있다.
OCP(Open Closed Priciple): 개방 폐쇄 원칙
: 확장에는 열려있어야 하며, 수정에는 닫혀있어야 한다. 새로운 변경 사항이 발생했을 때, 확장에 따른 기존 코드의 수정은 최소화 하며, 유연하게 코드를 추가함으로써 기능을 확장할 수 있다.
LSP(Listov Substitution Priciple): 리스코프 치환 원칙
: 자식 타입은 언제나 부모 타입으로 교체할 수 있다. 자식의 부모의 기능을 사용해도 동작이 부모 타입에서 의도한대로 흘러가야 한다.
ISP(Interface Segregation Principle): 인터페이스 분리 원칙
: 클라이언트의 목적과 용도에 적합한 인터페이스 만을 제공한다. 한 인터페이스에 변경이 발생하더라도 다른 인터페이스는 영향을 받지 않도록 한다.
DIP(Dependency Inversion Principle): 의존 역전 원칙
: 구현 클래스가 아닌 인터페이스에 의존해야한다. 클라이언트가 인터페이스에 의존해야 유연하게 구현체를 변경할 수 있다.

강의를 들으면서 왜 이 5가지의 원칙들이 읽기 좋은 코드를 만드는 데 큰 도움이 되는 지 많이 깨달았다.

미션

day2 미션 - 추상과 구체의 예시

추상과 구체 강의를 들었을 때, 가장 와닿은 것은 '이해'라고 생각한다. 추상화 된 문장을 보았을 때, 머릿속으로는 구체화 된 사건이 떠오르는 것이 제대로 된 추상화가 아닐까? 싶었다. 그래서 흔히 사용하는 추상화 된 문장을 아무거나 하나 생각해내고, 그 과정을 빠진 부분 없이 자세하게 작성해서 추상에 대한 구체를 작성하여 미션을 수행했다.

 

day4 미션 - 자기만의 언어로 리팩토링하기

미션에 있는 코드를 봤을 때, 가장 먼저 생각했던 건 일단 복잡성을 줄이기였다. 강의 때 들은 SOLID 원칙이 있지만, 아직까지는 이 원칙들에 대해서 완벽하게 이해를 못했기 때문에 먼저 복잡하게 연결되어있었던 if문을 줄이고, 최대한 이것저것 연결되어 복잡해지지 않게 만들어야 겠다고 생각했다. 그래서 복잡한 코드들을 3가지 조건으로 나눠서 나만의 언어로 리팩토링 했다.

 

회고

day2 강의에서 노래방에 가는 것을 구체화 된 문장으로 설명해주셨었는데 거기서 어찌보면 가장 큰 깨달음을 얻은 것 같았다. 노래방을 간다는 것이 그냥 노래방을 가는 것이지 그렇게 생각해 본 적이 없는데 폐에서 나온 공기가 성대를 통과하면서 만들어진 진동과 같이 구체화 시킨 문장을 보고 나도 모르는 사이에 내 머릿속은 구체화 된 문장으로 생각하고 있었던 것 같다. 그때 추상과 구체에 대해서 조금 더 확실하게 이해를 했었던 것 같다.

생각한 코드를 구현하는 것도 물론 어렵지만, 그 코드를 생각하는 단계가 더욱 중요하게 어떻게 보면 더 어렵다고 생각하기에 앞으로 읽기 좋은 코드를 만들기 위해서 스스로 많은 생각을 해봐야겠다고 깨달음을 얻었다.

댓글을 작성해보세요.


채널톡 아이콘