codepresoo

SW 유지보수성 향상을 위한 Clean Code (clean method)

당근개발자 2022. 1. 23. 17:16

Clean method

 

- 유지 보수성이 높은 clean method를 만드는 법 -

 

1) method를 호출하는 사람이 사용하기 용이해야한다

2) 유지보수하는 사람이 이해하고 변경하기 용이해야함

3) 유지보수하는 사람이 테스트하기에 용이해야한다.

->> 나 혼자만이 아닌, 모두에게 이용 가능하게 만들어야 한다.

 

-clean method principle-

 

1) 가능한 한 충분히 작아야한다.

2) 한가지를 해야한다. 그 한 가지를 잘 해야 한다.

3) 테스트 가능해야 한다.

4) 중복이 없어야한다

 

 

Parameter 원칙

 

1) Method를 호출하는 사람의 인지적 부하를 최소로 만들어 주어야 한다.

2) Method를 호출할 때마다 내부 코드를 보거나 API 문서를 보지 않게끔 해야한다.

3) Parmeter의 개수는 가능 한 적어야한다.

 

메서드를 분리하거나 혹은

해당 파라미터 값들을 객체화하여, 객체 하나를 넘겨준다.

 

 

 

Clean Method의 역할

 

한가지 명확한 역할

- 명확한 Naming이 가능하고, 이름만으로 기능을 이해할 수 있음

- 복잡도가 낮아질 가능성이높음

 

 

한 가지의 일이란 무엇인가?

Q) Method마다 1라인 코드만 있어야 하는 것인가??? 

A) 1라인을 말하는것이 아니다, 메서드의 이름을 토대로, 하나의 역할만 해야한다.

 

!!!하나의 Method는 동일한 추상화의수준만 가져야 한다.

 

추상화의수준

1) High Level

높은 수준의 레벨에서는 WHAT 무엇을 할지 목표를 말해준다.

2) Intermediate Level

High level의 다음 단계로 , High의 일을 종류별로 나눈다.

3) Low Level

그다음 구체적인 메서드를 지정

4) Lower Level

실제적인 비지니스로직이 일어나는 레벨이다.

 

 

 

중복코드란??

- 일정 라인 수 이상이 다수중복되어 존재하는 코드

- 개발자는 복사/ 붙여넣기의 유혹과 갈등하는 경우 있음

- 기존 메서드/클래스를 수정하기 두려운데 복사/붙여넣기 해서 조금만 수정할까?

 

다음과 같은 종류가 있다.

 

-중복 코드의 문제점 -

 

- 불필요하게 코드 베이스를 크게 만듦

- 코드르 수정해야 할때 중복 된 다수의 코드를 모두 수정해야 함

 -  일부 누락될 시 에러 발생 가능

- 중복 코드에 잠재적 결함이 있을시, 결함이 같이 중복됨

 

- 중복 코드의 발견 -

1) 코드리뷰

 - 수동으로 전체 sw 시스템의 중복을 다 발겨한기는 쉽지 않음

2) 정적분석

 - 중복 코드를 찾아내는 정적 분석 도루를 활용

 - CPD

 - Atomiq

 

- 중복 코드의 해결 -

- 다양한 Refactoring 전략 및 Desgin pattern wjrdyd

- Extract Method

 -중복 된 코드를 새로운 Method로 추출

 - 기존 중복 코드의 부분에서 새로운 Method를 호출


 

 

정리

메서드를 정의 할때, 수많은 파라미터를 넣기도하였고, 중복되는 코드가많음에도 불구하고, 그냥 사용했다.

공통된 부분이 있기는 하지만.. 그 공통된 부분을 빼서 하기가 힘들었기 때문이었다.

실제로 중복된 부분에 에러가 발생했을때, 수많은 코드를 고쳐야 했던 경험이 있었다.

코드를 빠르게 작성하는것보다, 체계적으로 짜야한다는것을 느꼇던 강의였다.


 

본글은 코드프레소 JAVA 웹 개발 체험단 활동중에 작성한 글입니다.

 

 코드프레소 URL : https://www.codepresso.kr/