분류 전체보기
-
테스트 주도 개발 - 둘째날Programmer/Etc 2013. 5. 7. 18:21
최대한 빨리 테스트에 통과하는 코드를 작성하는 방법 중에, 캐스팅의 남용이 있다. 돌아가고 나면 이러한 코드를 적절한 자리로 옮기거나 다형성을 사용하여 불필요한 캐스팅을 제거한다. 지난 번 포스팅한 글을 다시 불러와서 갱신해보자. 최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공, 캐스팅을 마구 남용한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거하고, 캐스팅을 제거하기 위한 적절한 코드 옮김이나 다형성을 사용한다. 외부 프로토콜은 같으면서 내부 구현이 다른 객체를 정의하는 방법을 소개했다. 저자는 Money와 비슷하게 동작하지만 합을 나타내..
-
테스트 주도 개발 - 첫째날Programmer/Etc 2013. 5. 6. 16:17
최종 목적은 잘 돌아가는 깔끔한 코드의 작성이다. 이를 위해서 아래 과정을 반복한다.최대한 빨리 테스트에 통과하는 코드를 작성하는 것이 목적이다. 스텁 구현, 상수를 사용한 하드 코딩, 복사&붙여넣기 신공을 마음껏 발휘한다.리펙토링을 통해서 스텁을 채우고, 상수와 중복을 제거한다. 무엇을 어떻게 개발할지보다 무엇을 테스트할지를 먼저 생각한다. 논외지만 흥미로운 이야기팩토리 생성자를 사용하면 클래스의 사용과 클래스 구조 간의 의존성을 제거할 수 있다. 대표적으로 리펙토링 과정에서 불필요해진 하위 클래스의 제거가 가능해진다.
-
무조껀 권위에 기대지 마라.Life/Communication 2013. 4. 29. 23:33
어떤 말이나 주장이 타당하려면, 그 근거가 귄위있는 사람이나 단체가 이야기를 했기 때문이 아니라, 그 말의 가정과 근거와 논리가 합리적어야 한다. 권위에 기대서 오판을 했었던 부끄러운 나의 과거의 이야기를 하나 해야겠다. 회사내 회의에서, XML 속성을 사용하면 잘못된 설계라며 지적질을 한 적이 몇차례 있다. 이러한 주장을 하게 된 배경을 이러하다. 예전에 읽었던 XML의 튜토리얼 중에 XML의 속성를 설명하는 페이지에서 아래의 내용이 있었다. Avoid XML Attributes? Some of the problems with using attributes are:attributes cannot contain multiple values (elements can)attributes cannot cont..
-
치환 모델 (Substitution Model)Programmer/Programming 2013. 4. 10. 17:41
예제에 사용할 함수 (defun square (x) (* x x)) (defun sum-of-squares (x y) (+ (square x) (square y)) normal-order: 전체를 확장한 후에 다시 줄여나간다. (sum-of-squares (+ 5 1) (* 5 2)) 확장한다. (+ (square (+ 5 1)) (square (* 5 2))) (+ (* (+ 5 1) (+ 5 1)) (* (* 5 2) (* 5 2))) 줄인다. (+ (* 6 6) (* 10 10)) (+ 36 100) 136 applicative-order: 인자를 평가하고 적용한다. sum-of-squares의 인자를 평가하고 적용한다. (sum-of-squares (+ 5 1) (* 5 2)) (sum-of-sq..
-
자본주의의 노예Life/Society 2013. 3. 26. 10:10
내가 회사의 일을 하는 첫번째 이유는 돈을 벌기 위해서이다. 돈을 버는 것이 일하는 목적의 전부는 아니지만, 가장 큰 부분을 차지한다. 이것이 충족되지 않으면, 다른 부차적인 이유는 전부 무시될 수 있다. 예를 들어, 지금 하는 일이 아무리 재미있어도 생계를 꾸리기에 무리가 있으면 당장 이직을 결정할 것이다. Look after the pennies and the pounds will look after themselves by Mukumbura 그런데 언젠가부터 직업 이외의 다른 행위를 돈과 결부시키고 있었다. 모든 행위는 결과적으로 통장에 돈이 들어오거나, 장기적으로 돈으로 바뀔 수 있는 경력, 명성 등을 얻어야 했다. 예를 들면, 교양 서적을 고를 때, 취미로 오픈 소스를 선택할 때, 얼마나 재미 ..
-
기술의 부작용을 경계하기Life/Society 2013. 3. 13. 23:03
"과하면 아니한만 못하다."라는 말이 있다. 모든지 지나치면 해로운 법이다. 극좌, 극우가 우리 사회를 병들게 하는 것처럼 말이다. 기술에 대한 태도에도 이와 비슷한 양상을 발견할 수 있다. 기술이 모든 문제를 해결해 줄 것처럼 말하는 기술만능주의가 있고, 흘러가는 아날로그를 추억하며 기술이 이 모든 것을 갉아 먹고 있다면서 기술의 발전을 매우 부정적으로 바라보는 시각도 있다. 1부 '갈망' by TheHolySpirit! 인터넷 기술의 발전은 거대 권력의 언론 통제를 비집고 들어갈 수 있는 여지를 주었다. 그러나 인터넷이 진정한 소통을 방해한다. 우리는 더 많은 사람과 연결되어 있지만, 얼굴을 마주보며 이야기하는 옛날에 비해서 더 외롭다고 느낀다. 전쟁, 테러, 범죄는 늘 기술의 첨단에서 움직인다. 범..