cycle length calculator
http://cavin.egloos.com/3049122
TDD로 구현한 코드를 블로그에 공개를 하신 cavin님의 코드를 구경을 해봤다. 그리고, 아래와 같은 덧글도 목격을 했다.

frok님의 입장은 if문에 직접적으로 이해할수 없는 조건절을 넣는것으로 덧글을 남기셨고,

cavin 님은 위와 같은 덧글로 코드에 의도를 나타냈다는 답글을 다셨다.
저같은 경우는 멤버변수로 cavin님처럼 사용하지는 않지만, 가능한 extract method로 조건문을 추출을 해서 의도를 표현을 한다. 개념적으로는 cavin님하고 같은 방식이라고 하겠다.
martinfowler의 책(http://www.ologist.co.kr/409)을 보면 다음과 같은 내용이 나온다.
그런 의미에서 cavin님의 코드 스타일에 한표를 던진다!! number == 1의 의미를 아는 사람은 세상에 아무도 없을 것이다.
간혹 이름을 잘 지을 경우가 의도를 분명히 나타내지 않겠느냐고 생각을 하는데, 일단 자신이 알아볼수 있는 이름으로 지어두고, 추후에 다른 개발자와 pair로 프로그래밍을 하다가 더 좋은 이름으로 refactoring을 해도 되고, 코드리뷰시간에 다른 분들과 좋은 이름을 선택하면 되는 것이다. 같은 의미로 공유할수 있는 이름은 한번에 나오지 않을 수도 있는 것이다.
리팩토링...
cavin님의 주석이 위에 코드에 대한 주석인지 아래 코드에 대한 주석인지 잘 모르겠지만, 위에 코드라면 숫자 1만 선택을 하고 refactoring menu를 누르면, extract constant, extract local variable를 사용할 수가 있다.
boolean isEndNumberOfPermutation = (number == 1);
// 값을 상수필드로 바꾸는 refactoring잘 안됨, ex) .. = 1;
number == 1을 상수로 빼고자 했다면, number가 멤버변수이기때문에 refactoring이 안되는 것이고, extract method를 통해서 refactoring을 하면 됩니다.
트랙백 보낼 주소 :: http://www.ologist.co.kr/trackback/507
-
3n+1문제 관련하여..
from 상실의시대2007/02/09 02:45TDD습작을 통해 몇가지 문제를 깨달았는데.. 개인적으로 네이밍에 따라 그 개념에 사로잡혀 문제를 어렵게 끌어나가는 경향..이 곧잘 있음.. 그리고 김창준님께서 좋은 말씀을 해주셨는데.. 가독성은 독자에 상대적이라는 것과.. 때때로 가독성보다 중복을 줄이며 흥미로운 객체를 발견할 수 있다..는 말씀. 정확히 이해한건지 확실치 는 않지만 이번 J-language에서와 같이 우리가 일반적으로 인지하는 것... -
3n+1문제와 가독성...그리고 객체
from ologist`s blog2.02007/02/09 08:58코드의 의도http://www.ologist.co.kr/507위에 많은 덧글들이 달려서 덧글 및 트랙백을 통해서 느낌점을 얘기해보려 합니다.cycle length calculatorhttp://cavin.egloos.com/3049122이 이야기의 시작은 바로 위에 있는 링크입니다. 애시당초 number 라는 변수의 이름 자체가 모호해서 생긴 문제를 불필요하게 해결한 건 아닌가 하는 생각이 듭니다. - 이희승 네이밍을 잘 지으면, 구현이 단순해질수..

