Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[2주차] 02. 리팩터링 원칙 #2

Open
DaehunGwak opened this issue Sep 11, 2021 · 4 comments
Open

[2주차] 02. 리팩터링 원칙 #2

DaehunGwak opened this issue Sep 11, 2021 · 4 comments
Labels

Comments

@DaehunGwak
Copy link
Contributor

진도

  1. 리팩터링 원칙

메인 진행자

방식

  • 코멘트로 자유롭게 느낀점 (좋았단 점) 을 적어주시면 됩니다.
  • 질문, 다른 좋은 참고자료, 실무 적용 사례 등을 공유해주셔도 좋습니다.
@DaehunGwak
Copy link
Contributor Author

느낀점

리팩터링의 궁극 적인 목적은 개발 속도를 높여, 더 적은 노력으로 더 많은 가치를 창출 하는 것

  • 위 명언을 계속 리마인드하자
  • 토이플젝 하는 곳에서 안정적으로 리팩터링하기 위해서라도 jenkins + PR 테스팅 (CI) 를 구성해야겠다
  • DB 마이그레이션 스크립트를 짠다고 해도, 단계적으로 접근해야할 듯 하다 (위험요소가 많음)
  • 읽어야할 책을 또 소개해주다니 참 좋으신 분이다 ^^

요약 정리

  • 정의: 겉보기 동작은 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 것
  • 두 개의 모자 전략으로 기능 추가, 리팩터링 을 동시에하지 않는다
  • 리팩터링의 이유: 설계의 질 상승, 장기적 생산성
  • 리팩터링 시점: 코드를 이해하기 위해, 기능 추가 시작 전, 기능 추가하다 발견되었을 때 등 다양함
  • CI + Test 는 기존의 기능 유지 보장을 위한 체계로 유용 (리팩토링 후 기능 유지 보장)
  • 리팩토링 + 자가 테스트 코드 = TDD

정리 링크

https://daehungwak.github.io/til/docs/books/refactoring/02

@minkukjo
Copy link
Contributor

@minkukjo
Copy link
Contributor

느낀점

  • 테스트 없는 리팩토링은 팥 없는 붕어빵 (오히려 좋아)
  • 리팩토링은 얼핏 개발 속도를 늦추는 것 처럼 보이지만 결과적으로 개발 속도를 높여준다고 하니 주기적인 리팩토링은 중요하다!
  • 마스터와 기능 브랜치간의 간극을 최소하하자 (가급적 하루)

@donghoon-song
Copy link

코드가 수정하기 쉬운가?

뛰어난 습관을 지닌 프로그래머가 될 것.

리팩터링은 개발 속도를 높일 수 있다.

내부 설계가 잘 된 소프트웨어는 새로운 기능을 추가할 지점과 어떻게 고칠지를 쉽게 찾을 수 있다.

언제 리팩토링해야 할까?

  1. 처음에는 그냥 한다.
  2. 비슷한 일을 두번재로 하게 되면(중복이 생겼다는 사실에 당황스럽겠지만) 일단 계속 진행한다.
  3. 비슷한 일을 세번째 하게 되면 리팩토링한다.

기능을 쉽게 추가하게 만들기

두 개의 모자

  1. 기능 추가
  2. 리팩터링

⇒ 서로 간섭하지 않는다.

리팩토링의 궁극적인 목적은 개발 속도를 높여서, 더 적은 노력으로 더 많은 가치를 창출하는 것

리팩토링은 기능 추가 시간을 줄이고, 버그 수정 시간을 줄여준다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants