리팩토링(refactoring) 이란?
- 결과의 변경 없이 코드의 구조를 재조정함
- 주로 가독성을 높이고 유지보수를 편하게 함
- 버그를 없애거나 새로운 기능을 추가하는 행위는 아님
- 사용자가 보는 외부 화면은 그대로 두면서, 내부 논리나 구조를 개선하는 유지보수 행위
리팩토링의 목적 / 하는 이유
- 소프트웨어의 설계, 구조 및 구현을 개선하는 동시에 소프트웨어의 기능을 보존하기 위해서
- 코드의 가독성을 향상시키고 복잡성을 감소시키는 효과
- 소스 코드의 유지 보수성을 개선하고 확장성을 개선하기 위해서
소프트 웨어를 더 이해하기 쉽고 수정하기 쉽게 만들어서, 코드의 품질을 좋게 만들기 위함
리팩토링의 사용 시기
- 기능을 추가할 때
- 버그를 수정해야 할 때
- 코드 검토 (Code Review) 할 때
클린 코드 이란?
- 원하는 로직을 빠르게 찾을 수 있는 코드
- 모든 사람이 이해하기 쉽도록 작성된 코드
클린 코드의 중요성
- 유지보수를 위해서
- 기존 코드에 추가 작업하는 시간이 압도적으로 많기 때문에
- 대부분의 시간을 기존 코드를 읽고, 이해하는 데 사용하기 때문에
- 테스트 코드가 없어서, 하나를 수정하면 여러 곳에서 Side-effect 가 발생하기 때문에
- 코드의 품질이 낮아지면, 복잡도가 상승하여 코드를 수정하는 데 더 많은 시간이 소요되기 때문에
클린 코드의 주요 원칙
- 코딩 표준, 아키텍쳐 표준 및 설계 가이드를 준수해야 한다.
- 단순한 것이 효율적이며, 복잡함을 최소화해야 한다.
- 참조되거나 수정되는 코드는 원래보다 클린해야 한다.
- 항상 근본적인 원인을 찾아야한다. 그렇지 않으면 반복될 것이다.
- 하나의 파일은 하나의 언어로 작성한다.
클린 코드를 하는 방법 ( 내 기준 )
- 검색 가능한 이름을 사용하기
- 함수명은 반드시 동사로
- 함수는 하나의 동작만 실행될 수 있도록 구성한다.
- 함수의 인수는 3개 이하가 적당함.
많을 경우 => object 로 정리해서 param 사용한다.
- 함수의 파라미터에 boolean 을 둬서 액션 2개 이상을 구현하기 보다는, 함수를 2개로 구분하는 것이 좋다.
- 변수명은 너무 축약하지 않을 것, 최대한 이해하기 쉬운 변수명으로 만든다.
- 같은 목적의 코드를 뭉쳐놓을 것.
TDD 이란?
테스트 주도 개발 ( Test Driven Development )
- 개발 시 테스트 케이스(코드) 를 작성하고 그것을 통과하는 코드를 만드는 과정을 반복하며, 해당 부분이 제대로 동작하는 지에 대한 피드백을 적극적으로 받는 개발 방식
과정
- 테스트 코드 작성 (결과값 무조건 실패)
- 결과값 성공이 나올 수 있도록 최소한의 코드 작성
- 테스트와 병행하며 실행 코드를 리팩토링
장점
- 보다 튼튼한 객체 지향적인 코드 생산
- 필요에 따라 모듈을 추가하거나, 제거해도 소프트웨어 전체 구조에 영향을 미치지 않게 됨
- 재설계 시간의 단축
- 테스트 코드를 먼저 작성하기 때문에 설계가 탄탄해짐.
- 디버깅 시간의 단축
- 특정 버그가 발생했을 경우 버그를 손 쉽게 찾아낼 수 있다.
- 테스트 문서의 대체 가능
- 테스팅을 자동화 시킴과 동시에 보다 정확한 테스트 근거를 산출 가능
- 추가 구현의 용의함
- 개발이 완료된 소프트웨어에 기능을 추가하기 편리하다.
단점
- 생산성이 저하됨.
- 개발 속도가 느려지기 때문에
일반 개발 방식의 단점
과정
- 요구사항 분석
- 설계
- 개발
- 테스트
- 배포
단점
- 소프트웨어 개발을 느리게 하는 잠재적 위험이 존재
- 소비자의 요구사항이 처음부터 명확하지 않음
- 처음부터 완벽한 설계가 어려움
- 자체 버그 검출 능력 저하, 소스코드 품질 저하
- 자체 테스트 비용이 증가
- 재사용과 관리가 어려워서 유지 보수를 어렵게 만듬
'CS > 개발지식' 카테고리의 다른 글
Sass (Syntactically Awesome Style Sheets) (0) | 2023.02.01 |
---|---|
개발환경 설정 - Webpack (2) | 2022.12.28 |
크로스 브라우징 (Cross browsing) (0) | 2022.12.26 |
렌더링 엔진 (0) | 2022.12.26 |
웹 브라우저의 동작 순서 (0) | 2022.12.26 |