이미 많은 사람들이 말했지만 Agile이란 말을 내가 처음 들은건 어느 유명한 블로거의 글에서 처음 보았다.
본건 그리 오래 되지 않았다.
그래서 무엇인지는 대충알겠는데 이게 왜 좋은지까지는 잘 몰랐다.그냥 많은 사람들이 좋다고 하니 좋은가보다 정도(?)
요즘 공부를 해보면 Agile이 왜좋은지 왜 Agile이라고 불리우는지 알수 있었다.(물론..얼마 않보구 이런 얘기를 하는것이 좀 웃기긴하지만 조금씩 알아가고 있다는 자부심을 가지고..ㅡㅡ;)
Agile방법론 중에 TDD가 있는데 난 처음에 완전 접근을 잘못 했다.
이걸 왜하는지 잘 이해가 않됬다,왜 test메소드를 만들어서 할까 라는 생각을하고 하려니깐 그냥 코드를 보고 치기 시작했다.하지만 무엇을 하는지 이해를 못했다. 그러다 잘이해가 안되서 내가 스터디하는 블로그에 글을 내가 접근 방법이 잘못됬는지 글을 남기게 됬는데 그냥 순서 대로하면되다고 했다,그리고 다른 스터디멤버는 그책을 3번을 보구 2번을 코딩했다고 했다. 한번도 정확히 못보고 코딩도 대충하고 눈으로 읽었다.알고 보니 이게 문제 였던거였던것 이였다.
난 책의 순서를 무시하고 내가 개발했던 방식대로 개발하고 TestCase를 끼워넣었다.
이런 나의 코딩습관 때문에 책이 말하려는 의도를 파악을 못했던것이였다.
나의 코딩순서는 먼저 Class를 만들고 TesCase를 만들었다
(이클립스의 이 기능을 난 잘못알고 있었다.).난 당연히 이미 만들어진 코드를 Test한다고 생각했던것이다.(TDD란 말만 정확히 봤어도 이런 일은 안생길텐데..ㅡㅡ;)
지금까지 해왔던 방식은 개발한후 test를 했기때문이다.왜 있지도 않은것들을 Test를 할까라는 생각을 했던것이다.이것은 내가 Test를 내 머리속에 있는 일반적인 오류체크정도로 생각했던것 같다.
(저 같은 사람들이 많은가 보군요.그래서 BDD가 생겼다고 합니다.)
하지만 여기서 Test는 내가 알고 있는 bugCheck수준이 아닌 더많은 의미를 가지고 있었다.
일단 내가 생각한것을 test의 의미를 가지고 있으면서도 test보다는 행동을 제어한다는 의미를 갖는것 같다.
즉,일단 행동(method)에대해서 테두리(test method)는 만들고 그안에 행동을 제어하는것 같다라는 생각을했다.
이러다보니 이미 행동범위를 정해놓기 때문에 엉뚱한 곳으로 가는 bug가 생길만한 기회(?)가 줄어들는것 같다.그리고 나서 이런 작은행동들을 모여 더큰행동들을 만들고 점점 행동들이 커지게 만드는것 같다.(물론 제가 아직 이해를 못하고 있을수 있습니다.)
이렇게 하다보니 작고 깨끗한 코드들이 모여 크고 멋진 코드로 변해가는것을 느꼈다.
그리고 또 느낀점은 코딩을 하는데 명명법이 아주 중요하다는 생각을 다시 하게 됬다.
AgileJava에서 소스을 보면 하나의 글을 보는듯하다.그정도로 가독성이 뛰어나다.
조금 오바하자면 주석없이도 메소드명이나 클래스명을 봐도 무엇을 하는지 알정도로 가독성이 뛰어나다.여지 것 해왔던 콩글리쉬한 내 메소드명을 볼 개발자들 미안한 감정을 느낀다..ㅡㅡ;
그리고 많은 장점들이 있겠지만 내가 느낀건 이정도 ㅎㅎ;
프로그램이 잼있어진다.이런 재미를 주는 스터디멤버들에게 고마움을 느낀다.^^
하지만 회사에선 호응을 안해준다는거..ㅡㅡ;





