안녕하세요 😀
유로띠 입니다 😉
실용주의 프로그래머
TIL (Today I Learned)
3줄 요약
✏️ 클린 코드에도 나오는 DRY원칙! 중요하다!
✏️ 새롭게 배운 ETC 원칙. 바꾸기 더 쉽게 코딩하도록 하자.
✏️ 본인이 짠 코드를 한달 뒤에 봤을 때 고칠 게 없으면 하산해도 된다.
DAY 2
오늘 읽은 범위: 2장. 실용주의 접근법
😉 책에서 기억하고 싶은 내용을 써보세요.
🟢 잘 설계된 코드는 바뀜으로써 사용하는 사람에게 맞춰져야 한다. 그래서 우리는 ETC 원칙을 따른다. 바꾸기 더 쉽게(Easier to Change.) 이게 전부다.... 왜 결합도를 줄이면 좋은가? 관심사를 분리함으로써 각각이 더 바꾸기 쉬워지기 때문이다. 왜 단일 책임 원칙이 유용한가? 요구 사항이 바뀌더라도 모듈 하나만 바꿔서 반영할 수 있기 때문이다. 왜 이름 짓기가 중요한가? 이름이 좋으면 코드가 읽기 쉬워지고, 코드를 바꾸려면 코드를 읽어야 하기 때문이다. (P. 39)
🟢 여러분이 작성하는 코드를 교체하기 쉽게 만들도록 노력하는 것이다. (P. 40)
🟢 코드를 작성할 때 장애물은 없애고 도움을 주는 부분만 잘 살릴 방법이 있을까? 이 코드가 바꾸기 쉬운가? (P.41)
🟢 모든 지식은 시스템 내에서 단 한 번만, 애매하지 않고, 권위 있게 표현되어야 한다. (P.43)
🟢 재사용하기 쉽게 만들어라. 사람들은 쉽지 않으면 하지 않을 것이다. 그리고 재사용에 실패한다면 지식 중복의 위험을 감수해야 한다. (P. 54)
🟢 컴포넌트들이 각기 격리되어 있으면 어느 하나를 바꿀 때 나머지 것들을 걱정하지 않아도 된다. 직교적인 시스템을 작성하면 두 가지 큰 장점이 있다. 바로 생산성 향상과 리스크 감소다. (P. 57)
🟢 부끄럼쟁이 코드를 작성하라 (P. 61)
🟢 자신이 작성하는 코드를 항상 비판적으로 바라보는 습관을 길러라. (P. 62)
🟢 예광탄 - 시스템을 정의하는 중요한 요구 사항을 찾아라. 의문이 드는 부분이나 가장 위험이 커 보이는 곳을 찾아라. 이런 부분의 코드를 가장 먼저 작성하도록 개발 우선순위를 정하라. (P.73)
🟢 예관탄 코드는 기능은 별로 없지만 완결된 코드이며, 최종 시스템 골격 중 일부가 된다. (P. 79)
🟢 PERT 과업은 낙관적 추정치와 가장 가능성이 높은 추정치, 비관적 추정치를 갖는다. 값을 범위로 추정하는 건 추정 오류를 피할 수 있는 훌륭한 방법이다. (P.100)
🧐 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
✅ 왜 결합도를 줄이고 의존성을 줄이고 응집도는 높이는지, 왜 단일 책임 원칙이 유용한 지, 왜 이름 짓기가 중요한지 책에서 하라니까 중요하니까 따라 했지 정작 왜 해야 하는지 생각하지 못했는데, 이번 책을 읽고 왜 해야하는지 깨닫게 되었다. 그렇다. 바꾸기 더 쉽게..(Easier to Change.) 요구사항에 영원한 건 없으니까. 🥴
✅ 헬리콥터의 비유가 잘 와닿았다. 비 직교적인 시스템은 변경과 조정을 어렵게 만든다. 반대로 직교적인 시스템의 장점은 생산성이 향상되고 리스크가 감소된다는 점이다.
✅ 외부 라이브러리를 그대로 사용하면 의존성이 생기고 어떤 이유로는 바뀔 수 있다. 책에서 소개한 것처럼 데코레이터 패턴을 이용하여 실무에서 응용할 수 있도록 찾아보려고 한다. 또한, 다양한 디자인 패턴을 배워 현업에 적용하고 배워나갔으면 한다.
✅ '자신이 작성하는 코드를 항상 비판적으로 바라보는 습관을 길러라.' 예전에 보았던 강의에서 한 개발자분이 말씀하신 것이 떠올랐다. '본인이 짠 코드를 한 달 뒤에 봤을 때 고칠 게 없으면 하산해도 된다.' 저 역시 한 달이 아닌 한 시간도 안 가서.. 다시 코드를 고치고 있지만 비판적으로 바라보는 습관은 중요하게 느껴진다. 😏
✅ 실제 현업에서 PERT를 이용하여 추정치를 만들어서 개발을 진행하고 있다. 개인적으로 PERT를 이용해서 일정을 정하고 진행하는 방식이 다른 팀과의 의사소통에 있어서 좋다고 생각한다. PERT가 미 해군이 탄도 미사일 개발 프로젝트 계획을 세울 때 사용한 방법론이라니.. 처음 알았다. 😇
🙋♂️ 궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
⭐️ 데코레이터 패턴
주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브 클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다.
⭐️ 전략 패턴
전략은 알고리즘을 사용하는 클라이언트와는 독립적으로 다양하게 만든다. 전략은 유연하고 재사용 가능한 객체 지향 소프트웨어를 어떻게 설계하는지 기술하기 위해 디자인 패턴의 개념을 보급시킨 디자인 패턴이라는 영향력 있는 책에 포함된 패턴들 가운데 하나이다.
⭐️ 큐컴버
행동 중심 개발을 지원하는 소프트웨어 도구입니다. Cucumber BDD 접근 방식의 핵심은 Gherkin이라는 일반 언어 파서입니다. 고객이 이해할 수 있는 논리적 언어로 예상되는 소프트웨어 동작을 지정할 수 있습니다
⭐️ 앤서블 (Ansible)
오픈 소스 소프트웨어 프로비저닝, 구성 관리, 애플리케이션 전개 도구이다. 수많은 유닉스 계열 시스템에서 실행되며 유닉스 계열 운영 체제 및 마이크로소프트 윈도우의 구성이 가능하다. 시스템 구성을 기술하기 위해 자체 선언형 언어를 포함하고 있다
⭐️ 배커스-나우르 표기법 (BNF)
문맥 자유 문법을 나타내기 위해 만들어진 표기법이다. 존 배커스와 페테를 나우르의 이름을 따서 부른다.
BNF는 기본적으로 다음의 문법을 사용한다.
<기호> ::= <표현식>
'Books > 실용주의 프로그래머' 카테고리의 다른 글
5장. 구부러지거나 부러지거나 (0) | 2022.03.30 |
---|---|
4장. 실용주의 편집증 (0) | 2022.03.25 |
3장. 기본 도구 (0) | 2022.03.23 |
1장. 실용주의 철학 (0) | 2022.03.19 |
실용주의 프로그래머 책 구매 인증 👍 (0) | 2022.03.18 |