본문으로 바로가기
728x90
반응형

https://www.youtube.com/watch?v=mNPpfB8JSIU 

  • 리팩터링 절차
    • 개요
      • 개발자들은 리팩터링이 중요하다는 것을 많이들 말하지만 언제 하는 것이 중요한가에 대한 주제로 이야기를 하지 않는다.
    • TDD
      • TDD의 절차
        • 실패하는 테스트를 넣고, 기능을 성공적으로 구현함
      • 문제
        • TDD 형식으로 개발을 하게 되면 코드를 잘 짜야한다는 고민을 깊이 하지 않게 됨
        • 개발자는 기능을 구현하는 것이 첫 번째고 기능이 정상작동하는 것이 우선
          • 이 기능이 큰 시스템에서 어떻게 적용될지 깊이 고민하지 않음
      • 제기
        • 왜 코드를 짜는 단계를 2 단계로 해야 될까?
          • 기능을 만드는 것
          • 코드를 깔끔하게 만드는 것
        • 리팩터링이 무엇을 하는 건지에 대해 생각해봐야 됨
  • 켄트 백 왈
    • 개발을 할 때 2가지 모드로 진행하는 걸 기억해야 한다.
      1. 새로운 기능을 개발하는 모드
        1. 코드의 추가, 수정, 삭제 전반
      2. 리팩터링 모드
        1. 기능이 이전과 동일하게 동작하면서 개발을 진행하는 것
        2. 소프트웨어 내부 설계를 더 높은 수준으로 진화시키는 것 → 리팩터링의 본질
          1. 일반적으로 리팩터링을 할 때는 계속해서 테스트 코드를 실행하게 됨 (실수 방지)
          2. 리팩터링을 할 때는 버그를 찾았어도 고쳐서는 안 됨
            1. 왜냐면 소프트웨어의 기능을 변경하는 것이기 때문
      • 개발자는 자신이 지금 어떤 상황에 무슨 일을 하고 있는 걸 인지해야 하고 각 상황에 맞게 유연하게 대처할 수 있어야 됨
  • 리팩터링 기점
    • 잘 돌아가는 코드라도 개선할 필요가 있어 보일 때
  • 보이스카웃 룰 (Little Pickup refactoring)
    • 항상 이전처럼 깨끗한 상태가 되도록 행동하는 것
      • 굳이 모든 것을 완전히 깨끗이 만들 필요는 없다.
    • 얼마나 리팩터링을 할 수 있는지가 중요
      • 개발자는 적어도 이전보다 나은 개선사항을 적용시키는 것이 중요함
  • 코드를 이해하는 리팩터링 (Comprehension Refactoring)
    • 복잡한 코드를 보고 리팩터링 하지 않고 넘어가면 머릿속에는 그 내용들이 스파게티 코드 형태로 남아있고 그 내용을 팀에게 이해 해시 키기 위한 노력이 듦
    • 최대한 리팩터링 해서 머릿속에 남아있는 내용을 코드 적용시키기 위해 노력해야 됨
  • 리팩터링 투 트랙
    • 이해 못 할 코드
      • 지금 우리가 이걸 당장 고쳐야 하는가?
        • 새로운 기능을 추가해야 될지도 모름
        • 내가 지금 하는 일에 영향이 있나를 생각해야 됨
      • 리팩터링 할 것들을 티켓이나 이슈로 남겨놓음으로써 개발을 진행해야 됨
        • 리팩터링을 결정하는 시점은 이러한 준비 과정이 필요함
    • 코드가 왜 이렇게 동작하는지 모르겠다.
      • 보통 새로운 기능을 하는 코드를 작성하면 나타남
      • 코드가 적절하게 보이지 않으면 리팩터링을 통해 코드를 정리해야 됨
        • 잘 정돈되지 않은 코드를 정리하고 테스트를 통과시키고 그 위에 새로운 기능을 추가해야 됨
  • 리팩터링을 하는 팀은 작업들을 더 잘게 쪼개야만 한다.
    • 작은 기능들을 개발할 때마다 리팩터링이 필요하므로
    • 리팩터링을 작업 수행 단계에 넣는 과정은 리팩터링을 해야 할 이유를 찾아야 하게 되는 것이므로 지양함
    • 일반적인 상황에서 리팩터링을 하는 것이 맞다고 봄
      • 개발자는 항상 코드를 깨끗하게 만들려는 노력을 해야 됨
  • 리팩터링이 중요한 이유
    • 마틴 파울러가 말하는 디자인 스태미나 가설
      • 소프트웨어 설계에 신경 쓰지 않으면 계속 개발을 하면서 시간이 지날수록 개발 속도가 현저히 떨어진다는 점이다.
        • 기능을 추가할 때 기존 코드와 씨름하느라 생산성이 저하되는 등 여러 가지 상황
    • 경제성
      • 개발자들이 하는 일은 더 많은 기능을 더 빠르게 적용하기 위함임
728x90
반응형

'Abstract > Kata' 카테고리의 다른 글

변수에 관해서..  (0) 2022.04.11