노개북 13

[노개북] 실용주의 프로그래머 (Mission 3)

Mission (3) 진짜 요구사항 요구사항을 받았는데, 요구사항이 아닐 수 있습니다! 요구사항이 아니라면 사용자가 진짜로 원하는게 무엇인지 알아내야합니다. 애매한 요구사항에서 진짜 요구사항을 찾아내는 연습을 해봅시다. (1) '연습문제 #33'을 읽습니다. (2) 1-5번까지 문제를 클라이언트가 건넨 요구사항이라 상상하며 문제를 풀어봅시다. (3) 진정한 요구사항이 아닐 경우 어떻게 질문을 해야하는지, 무엇을 알아야 하는지, 왜 그렇게 생각하는지 등 나의 생각을 작성해보세요. ❗️ 풀이과정은 문제당 300자 이상으로 작성해주세요. ❗️ 책에 있는 해답은 참고용이며, 본인의 생각을 잘 작성해주세요. 📌 연습문제 33 다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용..

[노개북] 실용주의 프로그래머 (8장. 프로젝트 전에)

오늘 읽은 범위 🔖 8장. 프로젝트 전에 📝 책에서 기억하고 싶은 내용 실용주의 프로그래머는 요구사항을 받으면 의문점을 떠올리고 의뢰인에게 역으로 질문하며 탐험한다. (p.352) 프로젝트 용어 사전 관리하기 (p. 360) 짝 프로그래밍pair programming, 몹 프로그래밍mob programming: 한 사람이 코드를 입력하는 동안 한 명 혹은 여러명의 팀 동료가 조언하고 고민하며 문제를 함께 푸는 것 (p. 368) 익스트림 프로그래밍eXtream Programming, XP의 실천 방법 중 하나 (p. 369) 애자일agile: '기민하다'는 뜻의 형용사 애자일 선언 중 소프트웨어 개발에서 중요하게 여겨야할 가치 공정과 도구보다 개인과 상호작용 포괄적인 문서보다 작동하는 소프트웨어 계약 협..

[노개북] 실용주의 프로그래머 (7장. 코딩하는 동안)

오늘 읽은 범위 🔖 7장. 코딩하는 동안 📝 책에서 기억하고 싶은 내용 여러분은 개발자로서 ... 경험과 지혜를 축적해 왔다. ..그 느낌을 따라라. 직감이 여러분의 역량에 일조하도록 하라. (p. 277) 일단, 하고 있는 일을 멈춰라. 여러분의 뇌가 정리를 좀 할 수 있도록 약간의 시간과 공간을 확보하라. (p. 278) 코드를 마구 찍어내는데 드는 시간을 줄이고, 오류를 초기에 더 적게 만들기 위한 의도적으로 프로그래밍하는 법 (p. 288) (중 일부만 작성) 지금 무엇을 하고 있는지 알아야 한다. 코드를 상세히 설명할 수 있는가? 계획을 세우고 그것을 바탕으로 진행하라 신뢰할 수 있는 것에만 기대라 우선순위를 정하라 대문자 O (Big O) 표기법 어떤 함수가 O(n)2 시간이 걸린다고 하면, ..

[노개북] 실용주의 프로그래머 (6장. 동시성)

오늘 읽은 범위 🔖 6장. 동시성 📝 책에서 기억하고 싶은 내용 용어 정의 (p. 241) 동시성concurrency: 동시에 실행 중인 것처럼 행동하는 것 ex) 파이버fiver, 스레드, 프로세스 등을 사용 병렬성parallelism: 실제로 동시에 실행되는 것 ex) 여러 개의 일을 동시에 할 수 있는 하드웨어. 코어가 여러개인 CPU, 여러대의 CPU 등 시간적 결합temporal coupling 깨트리기 보통 직선적 사고를 하기 마련이다. ...우리는 동시성을 확보해야 한다. 시간이나 순서에 의존하는 시간적 결합을 끊는 방법을 생각해 내야 한다. (p. 244) 작업 흐름을 분석하라 -> 활동 다이어그램activity diagram 작성하기 (p. 244) 공유 상태는 틀린 상태 상태를 공유하는..

[노개북] 실용주의 프로그래머 (5장. 구부러지거나 부러지거나)

오늘 읽은 범위 🔖 5장. 구부러지거나 부러지거나 📝 책에서 기억하고 싶은 내용 결합도 줄이기 열차 사고: 메서드나 속성들이 모두 연결되어있는 코드. 코드가 지저분하고 고치기 어렵고 코드를 이해하기 위해 알아야하는 것이 너무 많다. (p. 185 ~ 186) 함수 파이프라인 (p. 189) 묻지 말고 답하라(Tell, Don't Ask, TDA): 객체가 하는 일을 위임하라. (객체에서 내부 객체를 호출하지 말고, 불필요하게 분리된 함수는 합치기) 데메테르 법칙, 디미터 법칙 (Law of Demeter, LoD): 깨끗하고 결합도가 낮은 함수를 작성하는 방법, 사실 실현하기 어려움 어떤 클래스 C에 정의된 메서드가 다음 목록에 속하는 것만 사용할 수 있다. C의 다른 인스턴스 메서드 메서드의 매개 변수..

[노개북] 실용주의 프로그래머 (4장. 실용주의 편집증)

오늘 읽은 범위 🔖 4장. 실용주의 편집증 📝 책에서 기억하고 싶은 내용 계약에 의한 설계 (DBC, Design by Contract): 코드를 작성하기 전에 값의 입력 범위, 경계 조건, 루틴이 전달하는게 뭔지 정의하는 일종의 설계 기법이다. 일찍 작동을 멈춰라 (p. 160) 절대 일어나지 않는 일은 없다. 단정문으로 불가능한 상황을 예방하라 (p. 162) 진짜 오류처리를 해야하는 곳에 단정을 대신 사용하지는 말라 (p. 163) 단정 기능을 켜 둬라, 실서비스에서도 (p. 165) 성능 이슈가 있는 경우 문제가 되는 단정문만 끄도록 하자 내가 사용한 리소스는 내가 해제하자 작은 단계들을 밟아라. 언제나. 더 진행하기 전에 피드백을 확인하고 조정하라. "아기 발걸음" 원칙 (p. 178) 너무 큰..

[노개북] 실용주의 프로그래머 (3장. 기본 도구)

오늘 읽은 범위 🔖 3장. 기본 도구 📝 책에서 기억하고 싶은 내용 일반 텍스트의 힘 (p. 132) 일반 텍스트, 암호화, 구조화(XML, JSON..)를 적절히 사용하기 조개 놀이 (Shell Games) (p. 139) 반복적이고 번거로운 GUI 작업을 Shell 명령어로 만들라 Windows의 경우 Cygwin을 이용해 유닉스 호환 레이어와 유닉스용 유틸리티를 사용할 수 있다. 디버깅 (p. 157) 디버깅 = 문제 해결, 디버깅을 할 때 당황하지 마라 데이터를 시각화하면 디버깅하기 좋다. (DDD 디버거 참고) 트레이싱(Tracing)은 값을 추적하기 어려운 동시성 프로세스, 이벤트 기반 애플리케이션에서 유용하다. 고무 오리: 문제의 원인은 누군가에게 설명하는 것만으로도 해결할 수 있다. (설명..

[노개북] 실용주의 프로그래머 (Mission 1)

Mission: 나의 최애 북틸 다른 사람의 TIL을 찾아서 읽고 맘에 드는 것을 3개 선정했습니다. nlom0218 님 책을 안 읽은 사람도 책을 다 읽은 것 처럼 느낄 수 있도록 한 장으로 잘 요약했다고 느꼈습니다. https://nomadcoders.co/community/thread/3724 TIL 2장 실용주의 접근법 – 노마드 코더 Nomad Coders Post on 노마드 코더 Community nomadcoders.co roghabo 님 책의 내용을 충분히 이해하고 작성했다는 느낌이 들었습니다. https://nomadcoders.co/community/thread/3703 실용주의 프로그래머 2장 실용주의 접근법 – 노마드 코더 Nomad Coders Post on 노마드 코더 Comm..

[노개북] 실용주의 프로그래머 (2장.실용주의 접근법)

오늘 읽은 범위 🔖 2장.실용주의 접근법 📝 책에서 기억하고 싶은 내용 요구사항은 항상 변한다 -> 소프트웨어를 신뢰성 높게 개발하고... 유지보수하기 쉽게 만드는 유일한 길 -> DRY 원칙을 따라라 (p. 66) 반복하지 마라 DRY, Don't Repeat Yourself 참을성 없는 중복: 만약 이런 유혹을 느낀다면 '돌아가는 길이 지름길이다'라는 진부한 격언을 기억하라 (p.73) 직교성 Orthogonality: 두 직선이 직교하는 경우, 두 개의 선은 '독립적'이다. -> 결합도 줄이기(decoupling) 하나가 바뀌어도 나머지에 어떤 영향도 주지 않은 경우.. (p. 76) 장점: 생산성 향상, 리스크 감소 관점 지향 프로그래밍(AOP, Aspect-Oriented Programming)..