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