1. 개요

최근 회사에서 코드리뷰를 받다가 많은 생각을 하게되어 글을 쓰게 되었다

 

먼저 나는 웹개발은 하지않고 보통 컴포넌트 및 모듈을 만드는

 

웹개발로 치면 서비스단에 집중해서 개발을 하다보니

 

로직을 짜는것에만 신경을 썼던거 같다

 

그런데 결국 컴포넌트 끼리 관계 그 안에 모듈들은 SOLID 원칙을 생각하고

 

자바의 객체지향적인 부분을 신경써서 만들었어야 하는걸 이번에 다시 리마인드했다

 

2. 가장 먼저 생각해야할 부분

팀장님과 이야기를 하면서 가장 먼저 생각해야 하는것이 무엇인지 생각 해보면

 

내가 이걸 개발하는게 누구를 위한것인지 였다

 

당연히 주 고객은 이 제품을 쓰는 고객일것이다

 

하지만 나의 경우에는 제품이 프레임워크 성향도 띄고있다 보니

 

개발자 또한 내 고객이 될 수 있었다

 

즉 나는 해당 제품이 깔리는 필드의 직원(비개발자) 들과

 

필드에 해당 제품을 깔아서 유지보수 해주는 직원(개발자) 일 것이다

 

이를 고려해서 접근제한자를 어느 정도 범위까지 허용할것인지

 

어느 부분까지 모듈화를 진행할것인지를 고민해야하는 것이다

 

3. 실행한 내용

1) 접근제한자 범위 재조종

모듈 내에 여러 메서드를 정의해 놨는데 이를 전부 public으로 정했었다

변수가 아니라 메서드이기에 외부에 공개가 되어도 상관없지 않나라 생각을 했다

물론 프로그램을 깔아주고 비개발자인 직원들이 사용한다면 코드가 어떻든

아무런 상관이 없었을것이다

그러나 나는 개발자들이 사용할것도 생각해야하다 보니 내부에서만 사용하는 메서드를

굳이 공개해서 보이는 메서드의 개수를 늘릴 필요가 없다는것이 팀장님 의견이다

내가 처음보는 코드를 받아서 개발을 이어가려해도 필요한 메서드만 딱 보이게 하는것이

좋을것 같다는 생각이 들어 수정했다

 

2) 코딩컨벤션 맞추기

조금은 사소하다고 생각할 수 있는 부분부터 말해보면

예를들어 if 문을 사용할때 if(){} 이렇게 띄워쓰기 없이 붙이는것과

if () {} 이렇게 띄워써서 사용하는것 어떤것을 쓰든 통일하라는 것이다

요즘에는 저장을 누르면 자동으로 코딩컨벤션이 맞춰지게 하는 툴도 있지만

사용하지 않는다면 신경써야할 부분인거같고

 

자바에서 변수명, 메서드명에 규칙이 존재하는데 그걸 지키는 것이다

변수명은 명사로 메서드명은 동사로 시작한다거나 카멜표기법을 따른다던가

이러한것을 신경써줘야하는걸 리마인드 했다

 

3) 다른 컴포넌트에서 확장해서 쓰는것을 신경쓰자

처음 개발을 시작할때 하나의 컴포넌트에서 사용하도록

한 클래스 내에 메서드와 클래스까지도 선언해서 사용했는데

같은 기능을 다른 컴포넌트에서 쓰게 되었을때 급한 상황이라

전체를 복붙해서 사용했었다

 

하지만 이럴경우 오류가 발생하면 같은곳 2곳을 고쳐야하는것이고

이 수가 늘어날수록 유지보수에 힘이 많이 들어가는것이다

이는 참 당연히 생각해야하는 유지보수, 재사용성을 생각해서 코딩했어야하는데

단지 편하게 개발해야지 라는 생각에 발생한 일 같다

 

팀장님이 말씀하시길 내가 편하면 고객이 불편해지고

고객이 편하면 내가 불편해진다고 하셨다

 

어떤것을 개발하든 어떻게하면 고객이 편하게 사용할 수 있을까를 생각해서

개발을 한다면 자연스럽게 객체지향적인 코드를 짤 수 있겠다는 생각이 들었다

 

4. 느낀점

처음부터 모든걸 고려해서 코드를 짤 수 있다면 좋고

그렇다고 생각해서 짜더라도 분명 요구사항이 변경될 수 있다

그렇기에 리팩토링이라는 개념이있는것이고

나는 이번일을 통해서 리팩토링이 왜 필요한지를 확실하게 알게 되었다

앞으로는 코드를 짤때 더 신경써서 짜고

끝난 프로젝트도 다시 살펴보며 리팩토링하는 습관을 들여야겠다