본문 바로가기

전체 글

(117)
실용주의 프로그래머(7장 ~마지막) 코딩하는 동안 7장에서는 제목처럼 코딩하는 동안 우리가 신경 써야 하는 부분들을 말해준다. Topic 37 파중류의 뇌에 귀 기울이기 여기서는 변연계에서 수행되는 감정에 관한 이야기를 한다. 일반적으로 본능적인 부분에 대해서 무시하라고 많이들 얘기한다. 하지만 본능은 우리가 경험하면서 학습한 패턴에 대한 반응으로도 만들어진다. 따라서 단순히 무시할 수 없다고 한다. 감정이 왜 들었는지 우리가 흔히 하는 메타인지처럼 메타감정도 중요하다고 하는 거 같다. 나도 이 부분을 요즘에서야 중요하게 생각하는데, 내가 하는 습관이나 여러 생각들이 생각보다 감정에서 유발된다고 생각한다. 나심 탈렙이 쓴 ‘Fooled by randomness’에서도 비슷한 얘길 하는데, 아무리 잘 학습된 사람도 극한의 상황에선 결국 감정..
실용주의 프로그래머(5~6장) 구부러지거나 부러지거나 유연한 코드를 작성하기 위한 자세한 기법들을 소개함 Topic 28 결합도 줄이기 여기서는 문제가 되는 여러 상황들에 대해서 소개한다 자세한 기법들은 뒤에 토픽에서 하나씩 다룬다 열차사고 여기서 처음 예시로 인스턴스가 메소드 체이닝형태로 호출하는 코드를 보여준다. 여기서 강조하는 게 TDA(tell don’t ask)인데 리팩터링 한 코드 보면 코드 내부상태 묻는 코드를 수정한다. 기존 코드 대로 객체를 노출시켜서 호출하면 캡슐화가 의미가 없어진다고 한다. //수정전 코드 public void applyDiscount(customer, order_id, discount){ totals = customer.orders.find(order_id).getTotals(); totals.g..
실용주의 프로그래머(3~4장) 3. 기본도구 3장에서는 프로그래밍을 할 때 필요한 도구들과 관련된 숙련법들을 정리했다 Topic 16 일반 텍스트의 힘 프로그래머로서 기본 재료는 지식인데, 이 지식은 전부 텍스트로 이루어진다. 여기서는 텍스트 그 자체의 특징과 장점을 말해준다. 예를 들어 이진 포맷 같은 특정 형태는 분명 이점이 존재하지만 데이터를 이해하는데 필요한 문맥이 데이터 자체와 별도로 분리되어 있다는 문제가 있다. 즉, 인위적으로 데이터와 그 데이터의 의미가 분리된 것이다. 가능하다면 텍스트로 기록해 놓는다면 시간이 지나도 쉽게 사용이 가능하다. Topic 17 셸 가지고 놀기 여기선 셸 명령어가 얼마나 유용하고 생산성을 증가시켜주는지 말해준다. 각각 독립적으로 동작하는 명령어를 잘 조합해서 사용하면 자동화에 큰 도움이 될 ..
실용주의 프로그래머(1~2장) 실용주의 프로그래머 실용주의 철학 이 부분은 큰 틀에서 실용주의를 위해 기본적으로 갖춰야 할 철학들이 담겨있다. Topic 1 당신의 인생이다 이 토픽에서는 주도적으로 행동해야 함을 강조한다. Topic 2 고양이가 내 소스코드를 삼켰어요 실용주의 철학의 초석인 책임에 대해서 이야기한다. 책임을 진다는 건 기본적으로 솔직해야 하고 결과를 내가 감당해야 하는 것이다. 따라서 할 수 있는 일과 할 수 없는 일을 구분할 줄도 알아야 한다. 예전에 나는 책임진다는 게 나에게 주어진 일은 어떻게든 내가 해야 한다고 생각했다. 물론 이것도 맞는 말이지만 집단에서 일이라는 것은 결국 내가 한 일이 집단 전체에 영향을 주기 때문에 나의 한계를 명확히 알고 알릴 줄도 알아야 했다. 그렇게 상황을 공유하고 조율하는 것도 ..
TDD 3부 기억에 남는 부분 패턴의 주요한 통찰이 하나 있으니, 우리가 언제나 완전히 다른 문제들을 해결하는 것 같지만 우리가 푸는 문제 대다수는 사용하는 도구에 의해 생기는 것이지 직면한 외부의 문제 때문에 생기는 것이 아니라는 점이다. ... 객체를 적용해서 계산을 조직화하는 것은, 내부 생성된 공통적이고 부차적 인문제들을 역시 공통적이고 예측 가능한 방법들로 해결하는 가장 좋은 예 중 하나가 된다. 디자인 패턴의 엄청난 성공은 객체 프로그래머들이 보는 공통성에 대한 증거다. 하지만 디자인 패턴이라는 책의 성공은 이런 패턴들을 표현하는 어떠한 다양성도 모두 억업하고 말았다. 30장. 267page 디자인 패턴 중 내가 알아챈, 그리고 다른 이들도 알아채길 바라는 것은, 반복적 행동을 규칙으로 환원함으로써 규칙을..
TDD 2부 스터디하면서 읽은 3번째 책인데, 시간이 안 나서 계속 정리를 못하다가 오랜만에 정리 좀 하려고 한다. 1부 내용이 쉽지가 않아서 3부 패턴들까지 다 보고 다시 돌아가서 보면 좋을 거 같다. 2부도 1부와 같이 TDD 예시를 보여준다. 여기서는 테스트를 위한 도구를 구현하면서 TDD를 보여준다. 다시 한 장씩 천천히 정리해봐야겠다. 먼저 2부의 시작인 18장에서는 테스트 케이스를 작성하기 위해 사용할 프레임워크를 테스트 하기 위한 테스트 케이스를 작성하는 도입 부분이다. 테스트 코드가 실행되었는지를 테스트하는 코드를 작성한다. 1부에서도 계속 나왔지만 일단 상수값을 넣어서 빠르게 초록 막대를 보기 위한 작업을 먼저 한다. 그리고 그 구조에 맞게 테스트 코드를 작성한다. 중간에 여러 리팩토링에 대한 이야기..
객체지향의 사실과 오해 3~4장 3장은 추상화와 타입에 대해 설명하고 객체와의 관계에 대해서 이야기한다. 4장은 앞서 이야기한 것들을 바탕으로 역할, 책임, 협력이 구체적으로 어떻게 이뤄지는지 그리고 우리가 객체지향 프로그램을 설계할 때 어떤 식으로 접근해야 하는지 좀 더 구체적으로 이야기해준다. 3장에서 먼저 복잡성을 다루기 위해 추상화가 이뤄지는 두 단계를 설명한다. 첫 번째 차원은 구체적인 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통해 단순하게 만드는 것이다. 두 번째 차원은 중요한 부분을 강조하기 위해 불필요한 세부 사항을 제거함으로써 단순하게 만드는 것이다. page 77 객체지향 패러다임은 객체라는 추상화를 통해 현실의 복잡성을 극복하고 위의 두 차원을 올바르게 이해하고 적용하는 것이라고 한다. 위에서 말한 첫 ..
객체지향의 사실과 오해 1장~2장 이 책은 혼자 읽은 책은 아니고 저번 주부터 정글에서 같이 공부했던 친구들 몇 명과 북 스터디에서 진행하기로 한 책이다. 객체지향적으로 코드를 짜는 방법론이나 이런 게 구체적으로 나와있는 책이 아니라 제목에 있는 것처럼 잘못된 오개념('프로그래머의 뇌'란 책에서 말한 그런 오개념)? 들 그리고 편견들에 대해 다시 잡으면서 올바르게 객체지향 관점으로 사고할 수 있게 도움을 줄 수 있는 책이 될 거 같다. 이번 주는 1장 ~ 2장 을 읽었는데 단순한 요약보다는 내가 읽으면서 흥미롭게 느끼거나 기억에 남았던 점들을 정리하려 한다. 우선 본격적으로 1장에 들어가기전에 저자는 보통 우리가 객체 지향하면 클래스부터 떠올리고 그거에 관련해서만 생각하고 이야기하는 점들을 경계한다. 2장 마지막을 읽게 되면 한번 더 이..