본문 바로가기

실용주의 프로그래머13

[도서 목차 정리] 실용주의 프로그래머 [도서 정리] 실용주의 프로그래머 고양이가 내 소스를 삼켰어요소프트웨어 엔트로피돌멩이 수프와 삶은 개구리적당히 괜찮은 소프트웨어지식 포트폴리오소통하라!중복의 해악직교성가역성예광탄프로토타입과 포스트잇도메인 언어추정일반 텍스트의 힘조개 놀이 (Shell Games)파워 에디팅소스코드 관리디버깅텍스트 처리코드 생성기계약에 의한 설계죽은 프로그램은 거짓말을 하지 않는다단정적 프로그래밍언제 예외를 사용할까리소스 사용의 균형결합도 줄이기와 디미터 법칙메타 프로그래밍시간적 결합단지 뷰일 뿐이야칠판우연에 맡기는 프로그래밍알고리즘의 속도리팩터링테스트하기 쉬운 코드사악한 마법사요구사항의 구렁텅이불가능한 퍼즐 풀기준비가 되어야만명세의 함정동그라미와 화살표실용주의 팀유비쿼터스 자동화가차 없는 테스트결국은 모두 글쓰기위대한 유.. 2018. 11. 20.
[실용주의 프로그래머] 도메인 언어 [실용주의 프로그래머] 도메인 언어 -언어의 한계가 곧 자기 세계의 한계다 - 루트비히 비트겐슈타인 -컴퓨터 언어는 여러분이 문제에 대해 생각하는 방식과 의사소통에 대해서 생각하는 방식에 영향을 미친다. 모든 언어에는 그 언어의 특징들의 목록이 딸려온다.특징들은 모두 어떤 해결 방안들을 제시할 수도 있지만 가려버리기도 한다. -우리는 언제나 앱 도메인의 어휘를 사용해서 코드를 작성하려고 노력한다.몇몇 경우, 한 차원 더 나아가서 실제로 그 도메인의 어휘, 문법, 의미론(즉 언어)을 사용해서 프로그래밍하는 일이 가능할 때도 있다. -사용자들이 정리가 잘 된 진술을 많이 해준다면, 여러분은 그들이 원하는 내용을 정확히 표현하는, 그 앱 도메인에 맞추어진 소형 언어(mini-language)를 만들 수 있다... 2018. 10. 15.
[실용주의 프로그래머] 프로토타입과 포스트잇 [실용주의 프로그래머] 프로토타입과 포스트잇 -소프트웨어 프로토타입은 위험요소를 분석하고 노출시키며 이를 매우 저렴한 비용으로 바로잡을 기회를 얻는 것이다.하나의 프로토타입을 프로젝트의 특정 측면에 중점을 두어 만들어 볼 수 있다. -프로토타입은 반드시 코드로 작성해야 한다고 생각하는 사람도 있지만, 꼭 그럴 필요는 없다.포스트잇은 작업흐름과 앱 로직과 같은 동적인 것들을 프로토타이핑해 볼 수 있는 훌륭한 도구다.사용자 인터페이스는 화이트보드에 그려 보거나, 페인트 프로그램, 인터페이스 빌더 등을 이용해 기능은 구현하지 않고 인터페이스만을 그려보는 방법으로 프로토타입을 만들 수 있다. -프로토타입은 제한된 몇 가지 질문에 답할 목적으로 설계되기 때문에 실제 제품보다 훨씬 작은 비용으로 빠르게 개발할 수 .. 2018. 10. 14.
[실용주의 프로그래머] 예광탄 [실용주의 프로그래머] 예광탄 -실용주의 프로그래머는 예광탄 사용을 선호한다. 어둠 속에서 빛을 내는 코드 -요구사항으로부터 최종 시스템의 일부 측면에까지 빨리, 눈에 보이게, 반복적으로 도달하게 해줄 무언가를 찾아야 한다.-> 목표물을 찾기 위해 예광탄을 써라. -예광탄 코드는 나중에 버리려고 만드는 것이 아니다. 그것은 계속 사용할 코드다.예광탄 코드에도 상용 코드와 마찬가지로 모든 에러 검사, 구조화, 문서화, 자기 검사가 포함된다.단지 예광탄 코드에는 아직 완전한 기능이 들어있지 않을 뿐이다. -예광탄 개발 방법은 프로젝트는 결코 끝나지 않는다는 관념과도 일맥상통한다.변화에 대한 요구와 추가할 기능은 언제나 계속 생기기 마련이다.예광탄 개발 방법은 점진적인 접근 방법이다. -예광탄 코드 접근 방법.. 2018. 10. 13.
[실용주의 프로그래머] 가역성 [실용주의 프로그래머] 가역성 -당신이 가진 생각이 딱 하나밖에 없다면, 그것만큼 위험한 것은 없다. - 에밀 사르티에 -무언가를 구현하는 방법에는 여러 가지 길이 있고, 보통 하나의 솔루션에는 여러 벤더의 제품이 존재한다."이것은 이 방법으로만 해결할 수 있어"와 같은 근시안적인 생각을 갖고 프로젝트에 참여한다면 아마도 예상치 못했던 경우에 의해 한숨지을 일이 많을 것이다.많은 프로젝트 팀들이 프로젝트를 진행하면서 어쩔 수 없이 고통스럽게 그들의 근시안을 조금씩 수정하게 된다. 가역성 -유연하고, 적응 가능한 소프트웨어를 만드는 방법은 DRY 원리, 결합도 줄이기, 메타데이터 사용하기 등이 있다.이들을 따른다면 중요하면서도 되돌릴 수 없는 결정을 가능한 한 줄일 수 있게 될 것이다.이는 우리가 프로젝트.. 2018. 10. 1.
[실용주의 프로그래머] 직교성 [실용주의 프로그래머] 직교성 -설계, 빌드, 테스트 그리고 확장하기에 쉬운 시스템을 만드는 데에 있어 직교성(Orthogonality)은 매우 중요한 개념이다. 직교성이란 -컴퓨팅에서 이 용어는 일종의 독립성(independence)이나, 결합도 줄이기(decoupling)을 의미한다.하나가 바뀌어도 나머지에 어떤 영향도 주지 않으면 서로 직교한다고 할 수 있다. 비직교적인 시스템 직교성의 장점 -시스템의 컴포넌트들이 고도로 상호의존적인 경우, 특정 국지적 부분만 수정하는 방법이란 없다. “” 관련 없는 것들 간에 서로 영향이 없도록 하라. “” -컴포넌트들이 각기 격리(isolate)되어 있으면 어느 하나를 바꿀 때 나머지 것들을 걱정하지 않아도 된다.해당 컴포넌트의 외부 인터페이스를 바꾸지 않는 한.. 2018. 9. 30.
[실용주의 프로그래머] 중복의 해악 [실용주의 프로그래머] 중복의 해악 -대부분의 사람들은 유지보수가 버그를 고치고 기능을 개선하는 것을 의미하기 때문에, 앱이 출시되었을 때 비로소 유지보수가 시작된다고 믿는다.우리는 이들이 틀렸다고 생각한다.프로그래머들은 늘 유지보수 모드에 있다. 유지보수는 별개의 활동이 아니며, 전체 개발 과정의 일상적인 부분이다. -소프트웨어를 신뢰성 높게 개발하고, 개발을 이해하고 유지보수하기 쉽게 만드는 유일한 길은 우리가 DRY 원칙이라 부르는 것을 따르는 것뿐이라 생각한다.DRY 원칙이란 이것이다. "모든 지식은 시스템 내에서 단일하고, 애매하지 않고, 정말로 믿을만한 표현 양식을 가져야 한다." DRY 는 반복하지 마라, Don’t repeat yourself 의 약자이다. -똑같은 것이 두 군데 이상에 표.. 2018. 9. 29.
[실용주의 프로그래머] 소통하라! [실용주의 프로그래머] 소통하라! 출처 : 실용주의 프로그래머 -나는 무시당하느니 차라리 샅샅이 훑어보는 시선이 낫다고 봐요 - 메이 웨스트 -뭘 가졌느냐 만이 아니라 그걸 어떻게 포장하느냐도 중요하다.최고의 아이디어, 최상의 코드 혹은 가장 실용주의적인 사고 등이 있다고 해도 다른 사람들과 소통할 수 없다면 그것들은 궁극적으로 아무 효용이 없다.효과적인 소통 없이는 어떤 훌륭한 아이디어도 고아에 지나지 않는다. -말하고 싶은게 무엇인지 알아야 한다.무엇을 말할지 미리 계획하라.개요를 작성하라.그리고 자문하라. “이게 내가 말하고자 하는 것을 잘 전달하는가?”그렇게 될 때까지 다듬어라. 의사소통하고 싶은 아이디어들을 적은 다음,제대로 전달하기 위해 필요한 전략을 몇 개 세워라. -청중을 알아야 한다.청중.. 2016. 7. 29.
[실용주의 프로그래머] 지식 포트폴리오 [실용주의 프로그래머] 지식 포트폴리오 출처 : 실용주의 프로그래머 -지식에 대한 투자가 언제나 최고의 이윤을 낸다. - 벤자민 프랭클린 -포트폴리오 만들기 * 주기적인 투자 자신의 지식 포트폴리오에 주기적으로 투자해야 한다. 비록 소량일지라도 그 습관 자체가 금액의 합계만큼이나 중요하다. * 다각화 여러 가지를 알면 알수록 자신의 가치는 더욱 높아진다. 기본적으로 현재 작업에 사용하는 특정 기술의 등장과 퇴장을 알아야 한다. * 리스크 관리 여러분의 기술 달걀을 한 바구니에 모두 담지 마라. * 싸게 사서 비싸게 팔기 새롭게 떠오르는 기술이 인기를 끌기 전에 미리 알고 학습하는 것은 저평가된 주식을 찾아내는 것만큼이나 어려울 수 있지만, 이익 또한 그만큼 클 수 있다. * 검토 및 재조정 이 산업은 매.. 2016. 7. 28.