내일배움캠프 40일차 TIL : 리팩토링

김정환·2024년 11월 8일
0

키워드

  • 리팩토링

특강을 들으면서 중요하다고 생각한 걸 정리했다.

리팩토링에 관해서

기존에 짠 코드들은 모두 레거시 코드이다.
코드를 짜 놓고 손 놓는게 아니라 이걸 개선해 나가야한다.

시작부터 완벽한 코드를 짜는 것은 불가능하다.
실력이 부족하든 시간이 촉박했든 이러저런 이유에서든 처음에 짠 코드는 완벽하지 않다.
(애초에 완벽이라는 기준도 사람에 따라 다를테지만.)

다만 확실한 것은 이전에 짠 코드는 어디든 개선의 여지가 있고 이걸 개선해야 발전이 이뤄진다.

그래야 다음 번에 유사한 기능을 구현할 일이 생겼을 때
당시에 했던 실수나 잘못된 점을 반복하지 않을 것이고
나아가서는 같은 시간 안에 더 나은 코드를 짤 수 있을 것이다.

코드리뷰, 리팩토링은 꼭 해야한다.

디자인 패턴이라는 것도 이 과정에서 나왔다.
개선하고 개선하다보니까 어떠한 문제 상황에 공통적인 해결 패턴이 나온 것이다.

Gof 디자인 패턴이 그렇게 만들어졌고,
이후에도 새로운 해결 패턴과 이들을 발전시킨 패턴들이 나타났다.

디자인 패턴을 사용해볼 기준

  1. if, else if문과 switch문이 너무 많아질 때
    어떻게하면 이 조건문들을 줄이지 생각해볼 것
  2. 문제를 만났을 때
    디자인 패턴은 애초에 문제를 해결하기 위한 방법이므로
    패턴을 사용하기 위해 개발하는 것은 지양해야한다.
    아직 패턴에 익숙하지 않은 지금은 리팩토링하면서 어떻게 적용할 지 발견하게 될 것 같다.

패턴의 단점

  • 모든 기능과 디자인 패턴은 SOLID를 지키는 것이 아님.
  • 패턴 중 일부는 SOLID를 의도적으로 어기기도 하는데
    이유없이 어기는 것이 아니라, 메모리 관리 측면 등에서 최적화하거나 경량화 하는 것을 위한 것.
    (CS 관련 지식이 필요한 이유)

리마인드

클래스

클래스끼리는 의존성과 결합도를 줄이고, 이를 위해서 응집도를 높여야한다.

코드 내부적으로

  • 불필요한 생성
  • 불필요한 탐색, 정렬
  • 불필요한 연산, 조건문

이러한 문제를 해결하기 위해서 패턴을 사용할 수 있다.

객체지향 특강 정리
복습하면서 더 제대로 정리해봐야겠다.

#내일배움캠프 #스파르타내일배움캠프 #스파르타내일배움캠프TIL

profile
사파 개발자

0개의 댓글