본문 바로가기
반응형

STUDY11

리팩터링 2판 도서 메모 | 기본적인 리팩터링 함수 추출하기 function printOwing(invoice) { printBanner (); let outstanding = calculateOutstanding(); // 세부 사항 출력 console.log('고객명: stinvoice.customery'); console.log('채무액: $foutstanding)'); } ↓ function printOwing(invoice) { printBanner (); let outstanding = calculateOutstanding(); fuction printDataDetails(outstanding) { console.log('고객명: stinvoice.customery'); console.log('채무액: $foutstanding)'); } .. 2023. 12. 4.
리팩터링 2판 도서 메모 | 테스트 구축하기 리팩터링을 제대로 하려면 불가피하게 저지르는 실수를 잡아주는 견고한 테스트 스위트(test suite)가 뒷받침되어야 한다. 자가 테스트 코드의 가치 모든 테스트를 완전히 자동화하고 그 결과까지 스스로 검사하게 만들자! 자가 테스트 코드 자체뿐 아니라 테스트를 자주 수행하는 습관도 버그를 찾는 강력한 도구가 된다. 테스트 스위트는 강력한 버그 검출 도구로, 버그를 찾는 데 걸리는 시간을 대폭 줄여준다. 테스트를 작성하기 가장 좋은 시점은 프로그래밍을 시작하기 전이다. 기능을 추가해야 할 때 테스트부터 작성한다. 테스트를 작성하다 보면 원하는 기능을 추가하기 위해 무엇이 필요한지 고민하게 된다. 구현보다 인터페이스에 집중하게 된다는 장점도 있다. 코딩이 완료되는 시점을 정확하게 판단할 수 있다. 테스트를 .. 2023. 12. 4.
리팩터링 2판 도서 메모 | 코드에서 나는 악취 기이한 이름 코드를 명료하게 표현하는 데 가장 중요한 요소 하나는 바로 이름이다. 굳이 이름 수정 등이 그럴 가치가 없다는 생각을 하는 사람도 많은데, 이름만 잘 지어도 나중에 문맥을 파악하느라 헤매는 시간을 크게 절약할 수 있다. 이름바꾸기는 단순히 이름을 다르게 표현하는 연습이 아니다. 마땅한 이름이 떠오르지 않는다면 설계에 더 근본적인 문제가 숨어 있을 가능성이 높다. 중복 코드 코드가 중복되면 각각을 볼 때마다 서로 차이점은 없는지 주의 깊게 살펴봐야 하는 부담이 생긴다. 긴 함수 함수 이름을 잘 지어두면 본문 코드를 볼 이유가 사라진다. 그러기 위해서는 훨씬 적극적으로 함수를 쪼개야 한다. 함수 이름은 동작 방삭이 아닌 의도가 드러나게 짓는다. 여기서 핵심은 함수의 길이가 아닌, 함수의 목적과 .. 2023. 12. 4.
리팩터링 2판 도서 메모 | 리팩터링 원칙 리팩터링 정의 리팩터링: 소프트웨어의 겉보기 동작은 그대로 유지한 채, 코드를 이해하고 수정하기 쉽도록 내부 구조를 변경하는 기법 리팩터링(하다): 소프트웨어의 겉보기 동작은 그대로 유지한 채, 여러가지 리팩터링 기법을 적용해서 소프트웨어를 재구성하다. 리팩터링은 결국 동작은 보존하는 작은 단계들을 거쳐 코드를 수정하고, 이러한 단계들을 순차적으로 연결하여 큰 변화를 만들어내는 일 따라서 리팩터링하는 동안에는 코드가 항상 정상 작동하기 때문에 전체 작업이 끝나지 않았더라도 언제든 멈출 수 있다. 누군가 "리팩터링하다가 코드가 깨져서 며칠이나 고생했다"라고 한다면, 십중팔구 리팩터링한 것이 아니다. 한 번에 바꿀 수 있는 작업을 수많은 단계로 잘게 나눠서 작업하는 것이 비효율적일 것 같지만, 이렇게 잘게 .. 2023. 12. 4.
리팩터링 2판 도서 메모 | 리팩터링 첫 번째 예시 예시 프로그램이 새로운 기능을 추가하기에 편한 구조가 아니라면, 먼저 기능을 추가하기 쉬운 형태로 리팩터링하고 나서 원하는 기능을 추가한다. 리팩터링이 필요한 이유는 변경 때문이다. 잘 작동하고 나중에 변경할 일이 절대 없다면 코드를 현재 상태로 놔둬도 아무런 문제가 없다. 하지만 다른 사람이 코드를 읽고 이해해야 할 일이 생겼는데 로직을 파악하기 어렵다면 대책을 마련해야 한다. 리팩터링의 첫 단계 리팩터링의 첫 단계는 항상 똑같다. 리팩터링할 코드 영역을 꼼꼼하게 검사해줄 테스트 코드들부터 마련해야 한다. 리팩터링에서 테스트의 역할은 굉장히 중요하다! 함수 추출하기 코드 조각을 별도 함수로 추출하는 방식으로 파악한 정보를 코드에 반영하고, 추출한 함수에 코드가 하는 일을 설명하는 이름 짓기 수정 후 곧.. 2023. 12. 4.
독서 메모 | 조직을 민첩하고 유연하게 바꾸는 애자일 전략 | 밀리의서재 위의 책은 애자일에 대한 방법론적인 내용보다는 애자일을 어떤 관점에서, 혹은 어떤 마인드로 접근해야 하는지에 대한 보다 본질적인 측면에서 생각을 할 수 있도록 한다. 많은 회사나 팀들이 효율적이고 실용적인 업무 운영을 하기 위해서 많은 고민들을 하고, 그 대안으로 애자일 방식을 많이 시도한다. 나 역시 스타트업을 운영했을 때, 애자일 방법들을 팀에 적용시키기 위한 노력을 했지만 쉽지 않았던 기억이 있다. 현재 직장에서의 우리 팀 역시 팀의 규모와 형태가 변하면서 그에 맞게 업무 프로세스를 변화시킬 필요성을 느끼고 그에 따라 스크럼 방식을 도입하고 있다. 과거에도 잠깐 애자일을 경험했지만, 조금 더 깊은 차원에서 애자일을 이해하기 위해서 위의 책을 읽게 되었고, 인상깊었던 메모들을 간단하게 공유하려고 한다.. 2023. 9. 9.
반응형