Skip to content
isdnetworks
Go back

임시로 붙인 이름이 그대로 남았다

일단 돌아가게 하려고 클래스 이름을 TempService 라고 지었다. 두 달 뒤에도 그 이름이었다.

Table of contents

Open Table of contents

증상 — 임시가 아니게 된 이름들

프로젝트를 훑었다.

TempService.java
Test2Controller.java
NewNewDao.java
util/Util2.java
common/CommonUtil3.java

Eclipse 에서 Temp 로 찾으니 클래스가 넷이었다. New 가 붙은 것이 셋, 뒤에 숫자를 단 것이 다섯이었다.

svn log 로 커밋 메시지를 보니 전부 몇 달 전에 만들어졌고 「임시로 추가」라고 적혀 있었다. 이름만 보면 무엇을 하는지 모른다. 열어 보고 알아야 한다.

왜 안 바꿨는지 봤다

바꾸려고 하니 참조하는 곳이 많았다.

$ grep -rn "TempService" --include=*.java --include=*.xml .
src/.../OrderController.java:22
src/.../MemberController.java:18
src/.../BatchJob.java:41
WEB-INF/applicationContext.xml:88
WEB-INF/applicationContext.xml:104

Java 코드만이 아니라 설정 파일에도 있었다. 세어 보니 스물세 곳이다. Java 열둘, JSP 넷, applicationContext.xml<bean> 정의 하나, 나머지는 주석과 로그 문자열이었다.

<bean id="tempService" class="com.example.service.TempService" />

class 속성은 문자열이라 컴파일러가 안 본다. 이름을 바꾸면 빌드는 통과하고 Tomcat 이 뜰 때 ClassNotFoundException 으로 죽는다.

시간이 지날수록 참조가 는다. 이름을 붙일 때는 참조가 하나였고 그때 바꿨으면 1분이었다.

한 번에 바꿨다

미루면 더 는다. 그날 바꿨다.

$ svn mv src/.../TempService.java src/.../OrderNotifyService.java

파일을 옮기고 클래스 이름과 참조를 고쳤다. applicationContext.xml 은 따로 확인했다.

$ grep -rn "TempService" .
(없음)

빌드가 되는지 보고 실제로 띄워서 동작하는지 봤다. 설정 파일의 이름은 컴파일에서 안 걸리므로 돌려 봐야 안다.

임시 이름이 생긴 이유는 무엇을 만드는지 정하기 전에 파일부터 만들었기 때문이다. 그래서 만들기 전에 한 줄로 적어 보기로 했다.

주문이 들어오면 문자와 메일을 보낸다  →  OrderNotifyService

무엇을 하는지 한 줄로 못 적으면 이름도 못 정한다. 그때는 아직 만들 때가 아니다.

같은 일이 다시 생기지 않게 규칙도 적어 뒀다.

- Temp, Test, New, Old 를 이름에 쓰지 않는다
- 숫자를 붙여 구분하지 않는다 (Util2, Util3)
- 무엇을 하는지가 이름에 들어간다

Util 이라는 이름도 안 좋다. 무엇이든 들어갈 수 있는 이름이라 실제로 뭐든 들어간다.

// 무엇이 들어 있는지 모른다
CommonUtil.java  (1,240줄)

// 나눴다
DateFormatter.java
StringMasker.java
FileNameResolver.java

이름을 못 정하겠는 것이 신호였다

OrderNotifyService 에 들어 있던 것 중 이름이 안 어울리는 것이 있었다.

public void sendNotify(Order o) { ... }
public String formatPhone(String p) { ... }   // 알림과 상관없다
public boolean isHoliday(Date d) { ... }      // 알림과 상관없다

formatPhoneisHoliday 는 알림과 상관이 없다. 이름을 정하려 하니 안 맞는 것이 드러났고 밖으로 뺐다.

이름이 안 정해지는 것은 그 안에 여러 가지가 들어 있다는 뜻이었다. 게으름이 아니다. 다만 이걸 매번 알아챌 수 있을지는 모르겠다.

정리


Share this post on:

Previous Post
버전 관리를 처음 쓰면서
Next Post
폴더가 없어서 파일이 안 만들어졌다