티스토리 뷰
반응형
소프트웨어 유지 보수의 4대 유형
- 버그를 발견하고 고친다(교정형 유지보수, corrective maintenance)
- 운영 환경의 변화에 따라 시스템을 변경한다(적응형 유지보수, adaptive maintenance)
- 시스템 사용자의 요구를 반영한다(완료형 유지보수, perfective maintenance)
- 품질을 높이고, 버를 방지할 방안을 모색한다(예방형 유지보수, preventive maintenance)
유지보수성 가이드라인
코드 단위를 짧게 하라
목표 : 코드 단위는 15라인을 어가지 않게 작성한다.
- 메서드 추출(Extract Method)
- 메서드를 메서드 객체로 대체(Replace Method with Method Object) : 길어지는 코드를 객체로 분리
코드 단위는 간단하게 짜라
목표 : 단위당 분기점은 4개로 제한한다
- Map 을 이용해 분기문 사용을 줄일 수 있다
- 케이스별로 구분해서 각각 return 문을 넣으면 중첩 조건문 제거에 도움이 된다. (중첩문 보호철로 대체, Replace Nested Conditional with Guard Clauses)
- 중첩 조건문을 별도 메서드로 추출하면 덜 복잡한 코드가 된다.
코드는 한 번만 작성하라
목표 : 코드를 복사하지 않는다.
- 코드를 재사용 가능한 일반적인 형태로 작성하거나 기존 메서드를 대신 호출한다.
- 상위 클래스 추출(Extract Superclass) 를 이용해 원 클래스의 상위 클래스로 생성하여 추출
단위 인터페이스를 작게 하라
목표 : 단위당 파라미터 개수는 4개 이하로 제한한다.
- 파라미터를 객체로 추출한다
- 세터가 전원 this를 반환하게 하여 흘러가는 인터페이스(fluent interface)를 만들 수도 있다
관심사를 모듈로 분리하라
목표 : 모듈 간결합을 느슨하게 하기 위해 큰 모듈은 삼가한다.
- 개별 모듈로 나누어 일을 시키고 구현 상세는 인터페이스 안으로 감춘다.
- 클래스를 나누어 관심사를 분리한다
- 특정 구현부는 인터페이스 안에 숨긴다
- 커스텀 코드를 서드파티 라이브러리/프레임워크로 대체한다
아키텍처 컴포넌트를 느슨하게 결합하라
목표 : 최상위 수준의 컴포넌트 간 결합도를 낮춘다
- 다른 컴포넌트 모듈에 호출을 받는 형태로 공개도니 모듈 내부의 상대적인 코드량을 최소화 한다.
- 모듈의 크기를 제한한다
- 상위수준에서 컴포넌트 인터페이스를 추상화 한다(컴포넌트 경계를 넘나드는 요청 가짓수를 제한)
- 스루풋 코드는 쓰지 않는다
아키텍처 컴포넌트의 균형을 잡아라
목표 : 최상위 수준 컴포넌트 개수와 상대적인 크기를 균형잡느다
- 컴포넌트 개수가 9개(6~12개) 정도 되도록 소스 코드를 조직화 하고 컴포넌트 크기를 대략 균등하게 맞춘다
코드베이스를 작게 하라
목표 : 코드베이스를 가능한 작게 한다
- 코드베이스가 커지는 걸 막고 시스템 크기를 적극적으로 줄인다
- 코드를 복사하지 않는다
- 기존 코드를 리팩터링 한다
- 서드파티 라이브러리/프레임워크를 사용한다
- 대규모 시스템을 분리한다
테스트를 자동화하라
목표 : 테스트를 자동화 한다
- 테스트 프레임워크로 자동화한 테스트를 작성한다
클린 코드를 작성하라
목표 : 클린 코드를 작성한다
- 규칙 1: 단위 수준의 코드 악취를 남기지 말라(커밋하기 전에 리팩터링을 마쳐야 한다)
- 규칙 2: 나쁜 주석을 남기지 말라
- 규칙 3: 주석 안에 코드를 남기지 말라
- 규칙 4: 죽은 코드를 남기지 말라
- 규칙 5: 긴 식별자 이름을 남기지 말라
- 규칙 6: 매직 상수를 남기지 말라(매직상수, magic constant : 의미가 불분명한 숫자나 리터럴 값, 상수값은 명시적으로 정의해서 사용하는 것이 좋다.)
- 규칙 7: 제대로 처리 안 한 예외를 남기지 말라
우아한 테크코스 프리코스 과정에 참가하고 있다. 이 과정에서 중요하게 여기는 것은 얼마나 기능적이고 좋은 코드를 만드느냐, 어떤 알고리즘을 사용하느냐가 아니라 유지보수성이 좋은 코드를 만드는 부분인 것 같다. 이건 지금 회사의 인턴과정 동안 많이 지적받았던 부분과 일치한다. 공부를 해 둬야 겠다는 생각을 하며 관련된 책을 찾다가 유지보수 가능한 코딩의 기술(길벗, 주스트 뷔서 등 5인 지음) 이라는 책을 발견했다.
책의 내용은 우아한 테크코스 측에서 내 준 과제의 미션과 일치하는 부분이 많았다. 실제로 모집 요강에 나와있는 커리큘럼에도 초창기 몇 개월 간은 클린코드에 대해 배운다고 나와 있었던 기억이 난다. 지금 회사에서나 우아한 형제들같은 회사에서나 클린코드와 유지보수성을 높이는데 큰 가치를 두고 있는 것 같다.
책 내용을 완벽하게 이해한 것은 아니지만 일단 알게 된 내용을 정리해 둔다. 책에서 나온 말 중에 실천하는 것이 중요하다는 말이 있다. 꾸준히 실천하다 보면 클린코드를 쓰는 클린 코더로 거듭나 있지 않을까? 하는 기대를 해 본다.
반응형
'language > JAVA' 카테고리의 다른 글
logger.error("Exception :: {}" , e.getMessage()); (0) | 2019.04.23 |
---|---|
JAVA CONVENTIONS (0) | 2019.04.17 |
자바 명명 규칙(Java naming conventions) (0) | 2019.03.13 |
Collection (0) | 2019.01.30 |
제네릭, Generic (0) | 2019.01.30 |
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CONVENTIONS
- REST API
- 전략패턴
- GROUP BY
- 문장 생성기
- markov chain
- 유지보수
- 마르코프 연쇄
- Warning
- 야근
- restful api
- 자바스크립트개론
- 동적계획법
- was
- 로그
- RESTful
- 코딩의 기술
- html
- 자바스크립트 개론
- 마르코프
- Spring in Action
- 몰라서망신
- java
- 디자인패턴
- 클린코드
- Markov
- Count
- 경고
- 크롬
- DP
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함