재사용 가능한 코드 개발 - ChoDragon9/posts GitHub Wiki
글의 목적
재사용 가능한 모듈 또는 컴포넌트를 만드는 작업은 비용을 절약하는 데 큰 역할을 한다. 재사용성 관련해서는 난이도 3배의 법칙이 있다. 재사용 가능한 모듈을 만드는 작업은 단일 소프트웨어에서 사용할 모듈을 개발할 때보다 3배 어렵다는 법칙이다.
프런트의 역할이 많아지면서 소프트웨어의 볼륨이 커졌다. 재사용 가능한 모듈과 컴포넌트를 만들지 않으면 유연한 요구사항 대응과 개발 비용이 많이 소비될 수 밖에 없다. 재사용 가능한 코드 개발을 위해서 어떠한 원칙들을 지켜야하고 어떤 과정이 있는 지 정리한 포스트이다.
재사용성
재사용을 위한 소프트웨어 개발은 장래의 프로젝트에서 재사용할 수 있는 모듈을 현재 소프트웨어 개발 과정에서 창출하는 것을 의미한다. 다른 소프트웨어에서 재사용하기 위한 소프트웨어를 개발한다. 재사용하는 소프트웨어를 개발하기 위해서는 요구사항 분석과정을 통해 일반화를 해야 한다. 그리고 기존 구조나 모듈에 조립을 할 수 있도록하면 종료된다.
요구사항 분석
요구사항 분석 단계에서는 해당 기능이 사용되는 모든 페이지의 요구사항을 모두 분석하는 것이다. 모든 페이지의 사용되는 요구사항을 파악하면 일반화하기 용이하기 때문에 되도록 꼼꼼히 살펴볼 필요가 있다.
간혹 특정 페이지의 요구사항만 분석하는 경우가 있다. 특정 페이지의 기능만 맞춰서 구현하게 되는 경우 다시 수정하는 작업과 리펙토링 하는 비용이 발생한다. 초기 요구사항 비용이 많이 들어도 재작업 비용보다는 적기 때문에 모든 경우의 요구사항을 담아야 한다.
요구사항
[게시판]
- 검색 영역에서 [날짜범위] 버튼 클릭 시, 달력이 노출된다.
- 달력에서 날짜 클릭 시, 시작 날짜를 지정할 수 있다.
- 달력에서 날짜 더블클릭 시, 종료 날짜를 지정할 수 있다.
[갤러리]
- 검색 영역에서 [날짜범위] 버튼 클릭 시, 달력이 노출된다.
- 달력은 7일전, 14일전, 21일전, 30일전 버튼을 볼 수 있다.
- 달력에서 날짜 클릭 시, 종료 날짜를 지정할 수 있다.
- 달력에서 [7일전] 버튼 클릭 시, 종료 날짜를 기준으로 7일전 범위를 지정할 수 있다.
요구사항에서 분석된 공통 요구사항
[달력]
- 달력에서 날짜 클릭 시, 시작 날짜를 지정할 수 있다.
- 달력에서 날짜 더블클릭 시, 종료 날짜를 지정할 수 있다.
- 달력은 7일전, 14일전, 21일전, 30일전 버튼을 볼 수 있다.
- 달력에서 날짜 클릭 시, 종료 날짜를 지정할 수 있다.
- 달력에서 [7일전] 버튼 클릭 시, 종료 날짜를 기준으로 7일전 범위를 지정할 수 있다.
일반화
일반화는 구체적인 대상으로부터 공통 성질을 추출해서 더욱 범용적인 개념으로 정식화하는 것이다. 다른 여러 개의 대상에 집중할 때 공통된 성질을 찾아내고 공통점을 조합시켜 범용다. 개념을 구상한다.
요구사항에서 분석된 공통 요구사항
[달력]
- 날짜 클릭 시, 시작 날짜를 지정 할 수 있다.
- 날짜 더블클릭 시, 종료 날짜를 지정 할 수 있다.
- 시작 날짜 [자동 선택 모드]를 지정 할 수 있다.
- 자동 선택 모드일 때, 버튼을 통해 시작 날짜의 범위를 지정할 수 있다.
- 자동 선택 모드일 때, 날짜 클릭 시 종료 날짜를 지정할 수 있다.
재사용 코드는 언제 개발해야 할까
재사용 코드 필요는 요구사항을 분석할 때 인지된다. 기획서를 리뷰하면서 요구사항을 도출하게 되는 데, 이때 일반화된 요구사항을 만들어야 한다. 그리고 기능 개발 시작에 앞서 공통 컴포넌트 또는 모듈을 개발해야 되며, 동료가 중복되서 개발하지 않게 해야 한다.
재사용 코드는 인지가 되는 시점에 개발되지 않으면 중복 코드를 발생하게 된다. 그 상황은 이른바 부채를 떠안는 샘이 되는 데, 이를 기술적 부채라고 부른다. 기술적 부채를 만들게 되면 재설계와 리펙토링 비용이 발생되므로 되도록 재사용 코드가 필요하다고 인지되는 시점에 바로 개발하는 것이 좋다.