티스토리 뷰

donaricano-btn
반응형

소프트웨어 유지 보수의 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
donaricano-btn
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
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
글 보관함