Book19 6장 : 코딩하는 동안 해야 할 일들 코딩은 기계적인 작업이 아니다. 프로그램이 정확하고 생산적으로 작동하기 위해 사려 깊은 생각과 판단을 통한 결정이 필요하다. 그렇지 않은 코드는 우연에 맡기는 프로그래밍으로 생산된 코드이다. 코드가 작동은 하지만 왜 작동하는지 설명을 못한다. 이 챕터에서는 프로그래머가 코딩 과정에서 더 적극적으로 행동하는 방법에 대한 내용이다. 📔우연에 맡기는 프로그래밍 행운과 어쩌다 오는 성공에 의존하는 프로그래밍을 하지 말아야 한다. 대신 의도적으로 프로그래밍을 해야 한다. 지금 잘 동작하는데 괜히 건드렸다 일을 만들 필요가 있을까? 건드려야 할 이유 정말 제대로 돌아가는 것이 아닐지도 모른다. 우리의 화면에서만 그런 것처럼 보일 수 있다. 여러분이 의존하는 조건이 단지 우연인 경우도 있다. 다른 상황(화면 해상도가.. 2022. 4. 1. 5장 : 구부러지거나 부러지거나 삶은 멈추지 않는다. 우리가 작성하는 코드도 마찬가지이다. 현대의 미친 듯이 빠른 변화 속도에 맞추기 위해서는 가능한 느슨하고 유연한 코드를 작성하기 위해 노력해야 한다. 그렇지 않으면 코드는 금세 낡고 수정하기 어려워져 기억 저편으로 사라져 버릴 것이다. 이 챕터에서는 되돌릴 수 있는 의사 결정을 내릴 수 있는 구체적인 방법에 대해 설명한다. 이를 잘 활용하면 여러분이 작성하는 코드가 불확실한 세상에 닥쳐도 유연성과 적응성을 잃지 않게 될 것이다. 📔결합도 줄이기와 디미터 법칙 좋은 울타리는 좋은 이웃을 만든다. 부끄럼 타는 코드를 작성하는 것이 이롭다고 말했었다. 이때 부끄럼 타는 이란 자신을 남에게 들어내지 말고 너무 많은 사람과 상호작용하지 말라는 2가지 의미를 갖는다. 코드를 모듈로 구성하고 이.. 2022. 4. 1. 4장 : 실용주의 편집증 완벽한 소프트웨어는 만들 수 없다. 길지 않은 컴퓨터 역사를 통틀어 어느 누구도 완벽한 소프트웨어를 만들지 못했다. 여러분이 최초가 될 것 같지도 않다. 📔계약에 의한 설계 정직한 거래를 보장하는 최선의 해법 중 하나는 계약이다. DBC 버트란드 마이어는 아이펠이라는 언어를 만들면서 계약에 의한 설계 개념을 개발했다. 이것은 단순하지만 강력한 기법으로 프로그램의 정확성을 보장하기 위해 소프트웨어 모듈들의 권리와 책임을 문서화하는 데에 초점을 맞춘다. 정확한 프로그램이란 무엇인가? 스스로 자신이 하는 일이라고 주장하는 것보다 많거나 적지도 않게 딱 그만큼만 하는 프로그램을 말한다. SW에서 모든 함수와 메서드는 뭔가를 하는데 그것을 어떻게 된다고 설명하는데 필요한 것은 루틴 = 모든 함수와 메소드 선행조건.. 2022. 4. 1. 3장 : 기본적인 도구 모든 장인들은 기본적인 훌륭한 도구들을 몇 개 갖고 자신의 여정을 시작한다. 📔일반 텍스트의 힘 실용주의 프로그래머로서 우리의 기본 재료는 나무나 철이 아니고 지식이다. 우리가 지식을 저장하는 최고의 포맷은 일반 텍스트라고 믿는다 일반 텍스트란? 사람이 직접 읽고 이해할 수 있는 형태의 인쇄 가능한 문자로 이루어진 텍스트 XML, JSON, HTML 등은 잘 정의된 구조를 가진 일반 텍스트의 예다. 지식을 일반 텍스트로 저장하라. 단점 압축된 이진 포맷을 사용하는 것보다 더 많은 공간을 차지함 일반 텍스트 파일을 해석하고 처리하는 데에 더 많은 계산이 필요할 수 있다. 텍스트의 힘 구식이 되는 것에 대한 보험 텍스트는 어떤 다른 형태의 데이터와 그걸 생성한 애플리케이션보다 더 오래 살아남을 것이다. 데이.. 2022. 4. 1. 2장 : 실용주의 접근법 📔중복의 해악 프로그램을 개발하는 중에 지식을 중복해 넣는 경우가 많다 그렇게 된다면 애플리케이션이 완성되기 전부터 유지보수의 악몽이 시작될 것이다. 소프트웨어를 신뢰성 높게 개발하고 개발을 이해하고 유지 보수하기 쉽게 만드는 유일한 길은 DRY원칙을 따르는 것이다 DRY - 반복하지 마라 Don't Repeat Yourself 모든 지식은 시스템 내에서 단일하고 애매하지 않고 정말로 믿을만한 표현양식을 가져야 한다. DRY원칙을 따르지 않는다면 똑같은 것을 2군데 이상 표현했을 경우 하나를 바꾼다면 나머지 하나도 바꿔야 함을 기억해야 한다. 이것을 기억하느냐 마느냐의 문제가 아니다, 단지 언제 잊어버릴 것인가의 문제이다. 📔언제 중복이 생기는가? 강요된 중복 : 개발자들은 다른 선택이 없다고 느낀다. .. 2022. 4. 1. 1장 : 실용주의 철학 📔고양이가 내 코드를 삼켰어요 어설픈 변명을 만들지 말고 대안을 제시하라! 우리는 자신의 능력에 대해 자부심을 가질 수 있지만 실수나 무지 같은 단점에 대해서도 정직해져야 한다. 누구나 실수는 한다! 실수를 저지르거나 잘못된 판단을 내렸다면 변명을 하지 말고 정직하게 인정하고 해결안을 제안하도록 노력하라! 위험요소가 있다면 그 위험요소에 대한 대책을 세워야한다 소스코드와 디스크가 다 망가져 버렸는데 "고양이가 내 코드를 삼켜버렸어요"라고 말하는 것은 별 도움이 안 될 것이다, 오히려 자신을 깎아내리는 일이 될 것이다. 📔소프트웨어 엔트로피 깨진 창문 이론 : 깨진 창문을 내버려 두지 말라. 오랜 기간 수리하지 않고 방치된 창문 하나가 거주자들에게 버려진 느낌을 스며들게 한다. 그로 인해서 사람들은 깨진 .. 2022. 4. 1. 이전 1 2 3 4 다음