Study/실용주의 프로그래머
-
실용주의 프로그래머 정리 8Study/실용주의 프로그래머 2021. 12. 21. 00:19
실용주의 프로젝트 이번 장에서는 실용주의 기법들을 팀과 프로젝트에 적용하는 방법에 대해 알아보겠습니다. 41. 실용주의 팀 이전 장들에서 배운 실용주의 기법들을 팀 전체에 적용하는 전략을 알아보겠습니다. 깨진 창문을 없애라 깨진 창문은 팀원 전체가 관심을 가지고 정리해야합니다. 코드를 정리하는 인원 몇명을 두는 것은 현실적으로 불가능합니다. 팀 전체가 지저분하거나 개선해야되는 코드를 방치하지 말고 깨끗히 정리합시다. 삶은 개구리 프로젝트 전체 환경 변화를 지속적으로 감시하고 관찰해야 합니다. 아무도 모르게 프로젝트가 망가질 수 있습니다. 필요하다면 감시자 역할을 팀원 중 한명에게 맡겨서 변화를 지속적으로 감시하도록 할 수 있습니다. 소통하라! 팀원들끼리 활발하게 소통해야합니다. 또한 외부와 적극적으로 소..
-
실용주의 프로그래머 정리 7Study/실용주의 프로그래머 2021. 12. 20. 22:31
프로젝트 전에 이번 장에서는 프로젝트를 시작하기 전에 준비해야 할 것들에 대해 다루고 있습니다. 36. 요구사항의 구렁텅이 대부분의 클라이언트는 원하는 요구사항을 정확히 표현하지 못합니다. 따라서 우리는 클라이언트의 요구사항으로부터 더 정확한 요구사항을 끄집어내야 합니다. 요구사항을 정확하게 뽑아내기 위해서는 사용자가 어떻게 사용하는지에 집중하기 보다는 왜 필요한지 파악하는 것이 더 중요합니다. 요구사항의 핵심적인 내용을 파악해야 추후 요구사항의 변경이 생겼을 때 좀 더 유연하게 대처할 수 있습니다. 요구사항을 깊이있게 파악하기 위해 가장 좋은 방법은 사용자가 직접 되는 것입니다. 실제로 사용자와 함께 출근해서 일해보고 도메인을 파악해보면 좀 더 핵심적인 요구사항을 파악할 수 있습니다. 요구사항의 핵심을..
-
실용주의 프로그래머 정리6Study/실용주의 프로그래머 2021. 12. 12. 22:04
코딩하는 동안 해야 할 일들 기계적으로 하는 코딩은 좋지 않은 구조를 만든다. 항상 고민하고 많이 생각하지 않으면 잘못된 프로그램을 만들 가능성이 높아진다. 기계적으로 해도 좋은 코드가 나왔으면 이미 프로그래머는 대체 됐을 것이다. 이번 장에서는 코딩하는 동안 고려해야 될 점들을 알아본다. 31. 우연에 맡기는 프로그래밍 우연히 운좋게 동작하는 동작에 의존하지 말자. 어떤 원리로 돌아가는지 이해하고 있어야 한다. 또한 다른 사람의 라이브러리를 사용할 때는 문서에 없는 동작에 의존하지 말자. 작성자가 의도하지 않은 동작일 가능성이 높다. 확실하지 않은 사실을 가정하지 말고 증명하자. 의도적으로 프로그래밍하는 것이 우연에 맡기는 프로그래밍 보다 훨씬 안전하다. 의도적 프로그래밍을 지키기위한 원칙은 다음과 같..
-
실용주의 프로그래머 정리5Study/실용주의 프로그래머 2021. 12. 6. 21:47
구부러지거나 부러지거나 코드는 항상 빠르게 변화한다. 빠른 변화 속도를 대처하기 위해 느슨하고 유연한 코드를 작성해야 한다. 이번 장에서는 변화하는 세상속에서 코드의 유연성과 적응성을 잃지 않는 법을 소개한다. 우선 결합도를 낮추는 법을 알아보고, 메타 프로그래밍을 이용해서 적은 양의 코드를 작성해서 유연함을 유지할 수 있는 방법을 소개한다. 그리고 시간 측면에서 결합도를 알아보고 뷰와 모델을 분리하는 법을 소개한다. 마지막으로 모듈들이 데이터를 교환할 수 있는 만남의 장소를 마련해서 결합도를 획기적으로 줄이는 방법을 알아본다. 26. 결합도 줄이기와 디미터 법칙 결합도를 줄이면 코드가 유연해지고 변경을 잘 적응할 수 있다. 결합도를 낮게 유지하는 방법 중 하나는 디미터 법칙을 지키는 것이다. 디미터 법..
-
실용주의 프로그래머 정리 4Study/실용주의 프로그래머 2021. 11. 28. 13:00
실용주의 편집증 명심하자. 완벽한 소프트웨어는 만들 수 없다. 따라서 소프트웨어를 믿지 말자. 끊임없이 의심하고 방어 코드를 작성하자.(물론 적정선에서) 21. 계약에 의한 설계 계약에 의한 설계에서는 루틴, 함수, 메소드가 3가지를 지키며 동작하기를 기대한다. 선행조건: 함수가 정상적으로 동작하기 위한 조건이다. 후행조건: 함수가 실행된 이후 만족해야하는 상태(조건)을 의미한다. 클래스 불변식: 메소드 실행 전, 실행 후에는 특정 조건을 만족해야함을 의미한다. 계약에 의한 설계를 지원하는 아이펠같은 언어는 해당 조건을 기술해서 소프트웨어 안정성을 높인다. 개인적으로 자바에서 인터페이스가 계약이라고 생각한다. 실제로 계약에 의한 설계처럼 강한 조건 검사는 지원하지 않지만 인터페이스가 어떤 기능을 하고 어..
-
실용주의 프로그래머 정리 3Study/실용주의 프로그래머 2021. 11. 22. 23:05
기본적인 도구 개발 생산성을 높이기 위해서는 적합한 도구를 쓰는 것이 중요하다. 기본적인 도구와 더불어 상황에 맞는 도구를 확장해서 능숙하게 사용할 수 있어야 한다. 이번 장에서는 도구를 잘 활용하는 방법에 대해 알아보도록 하자. 일반 텍스트의 힘 일반 텍스트는 그 자체로 알아보기 쉽고 다루기 쉽다. 데이터를 효율적으로 저장하기 위한 경우를 제외하면 일반 텍스트를 잘 활용하자. 잘 정의된 일반 텍스트는 강력하다. 쉘 게임 쉘은 자동화 하기에 정말 좋은 도구다. GUI 기반의 툴들은 제한된 동작을 제공하지만(사실 요즘 GUI들은 플러그인이나 커스터마이징을 많이 지원해준다. 옛날 책이라 그런듯) 쉘을 이용하면 무궁무진한 기능을 제공할 수 있다. 특히 반복적인 작업을 자동화할 때 아주 유용하다. 쉘 스크립트와..
-
실용주의 프로그래머 정리 2Study/실용주의 프로그래머 2021. 11. 21. 19:10
실용주의 접근법 소프트웨어 개발에서 공리와 같은 아이디어와 보편화된 프로세스들을 다룬다. 이 장에 있는 내용들을 잘 숙지하고 활용하면 깔끔하고 변경에 강한 코드를 작성하면서 프로젝트를 성공적으로 완수할 수 있을 것이다. 7. 중복의 해악 DRY(Don't Repeat Yourself) 원칙은 프로그래머에게 가장 중요한 원칙 중 하나이다. 중복이 불가피한 상황도 있을 수 있지만 대부분은 중복을 제거할 수 있다. 지금 당장 편하자고 중복을 만들지 말고 중복을 없애자. 중복은 쌓이다보면 끔찍한 결과를 가져온다. 중복을 피하자! 8. 직교성 직교성은 모듈, 컴포넌트 등이 서로 의존성이 없는 것을 의미한다. 프로그램을 구성하는 컴포넌트 중 한 컴포넌트의 코드가 변경됐을 때 다른 컴포넌트는 전혀 변경할 필요..
-
실용주의 프로그래머 정리1Study/실용주의 프로그래머 2021. 11. 17. 20:26
실용주의 프로그래머를 읽고 간단하게 정리한 내용입니다. 문제가 될 시 삭제하겠습니다. 서문 서문에서는 다른 내용보다는 실용주의 프로그래머의 가장 기본적인 특징에 관한 내용이 기억에 남았다. 자신의 일에 관심과 애정을 가지고 자신의 일에 대해 생각하면서 일하라는 내용으로 특히 두번째 특징이 인상 깊었다. 우리는 보통 관성적으로 일을 해나간다. 새로운 일을 처음 할 때는 고민을 하면서 효율적인 방식을 찾지만 시간이 지나면 반복적으로 일을 한다. 심지어 새로운 일도 기존 방식대로 하는 경우가 많다. 실용주의 프로그래머는 자기가 하는 일에 대해 관심을 많이 가지고 더 효율적인 방법이 있을지 고민한다. 이것이 지속적으로 반복되면 나중에는 실력있는 개발자가 될 수 있을 것이라고 생각한다. 항상 하는 일에 대해 관심..