개발자 99% 커뮤니티에서 수다 떨어요!
오늘 TIL 3줄 요약
DRY 원칙, 중복하지 말 것.
코드의 결합성을 줄여 직교성을 유지한다. 이것으로 유연하고, 적응 가능한 소프트웨어를 만든다.
예광탄 코드와 프로토타입의 특징과 차이.
TIL (Today I Learned) 날짜
2022.03.21-2022.03.22
오늘 읽은 범위
2장. 실용주의 접근법
책에서 기억하고 싶은 내용을 써보세요.
DRY 원칙, 중복의 해악
프로그래머가 갖는 불안정성은 결국 소위 유지보수, 지식을 재조직하고 재표현하는 데 대부분의 시간을 보낸다는 것을 의미한다.
애플리케이션이 출시되었을 때 비로소 유지보수가 시작된다고 믿는 것은 틀렸다.
소프트웨어를 신뢰성 높게 개발하고, 개발을 이해하고 유지보수하기 쉽게 만드는 유일한 길은 DRY 원칙을 지키는 것 뿐.
Don’t Repeat yourself 반복하지 마라!
재사용하기 쉽게 만드는 것, 중복을 피하는 길.
직교성의 원칙
독립성, 코드의 결합도 줄이기
헬리콥터 조종의 예를 기억하자. 관련 없는 것들 간에 서로 영향이 없도록 하는 것이다.
두가지 가장 큰 장점은 생산성 향상과 리스크 감소. (사실 모두가 바라는 지향점)
직교적인 결과물은 M가지 일을 하는 컴포넌트와 N가지 일을 하는 컴포넌트의 기능적 조합은 M*N 가짓수. 즉, 단위 노력당 더 많은 기능을 할 수 있다.
감염된 코드는 격리하고, 시스템이 잘 깨지지 않는다.
단위 테스트를 설계하고 더 많은 테스트가 가능하다.
특정 벤더나 제품, 플랫폼에 덜 종속될 것이다.
직교성을 유지하기 위한 노력, 리팩터링
코드의 결합도를 줄인다. → 디미터 법칙
전역 데이터를 피한다.
유사한 함수를 피한다.
최종 결정이란 없다, 가역성
중요하면서도 되돌릴 수 없는 결정을 가능한 줄이게 될 것이다.
프로젝트 초기의 잘못된 결정, 또는 고집할 수 없는 환경적 변화에 유연하게 대응할 수 있어야 한다.
특정 벤더 제품에 대한 의존도 등을 추상화한 인터페이스로 감출 수 있다.
예광탄과 프로토타입
목표물을 찾기 위해 예광탄을 쓴다.
예광탄은 요소간 상호작용을 만들고 구체화 해놓으면 개발자들의 생산성이 높아지고 일관성도 생긴다.
요구사항에 관해 데모를 보여줄 수 있으며, 진전 상황에 대해 더 정확하게 감을 잡을 수 있다.
일부 측면에서 실용적이고 즉각적인 반응을 얻을 수 있다는 점에서 프로토타입과 닮았지만, 재사용의 측면에서 중요한 차이가 있다.
프로토타입은 최종 시스템의 일부 특정 단면을 그린다. 예광탄 코드와 다르게 포스트잇 또한 좋은 프로토타입 수단이 된다.
프로토타입은 목적을 달성 후 폐기될 것이다.
오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요
어떻게 중복이 생기는가. 실제 업무를 진행하면서 생기는 ‘어쩔 수 없는' 중복은 ‘있으니까'라고 생각했던 안일한 마음이 완전 털려버린 기분이다. 결국 내 중복은 자기합리화와 핑계이고 짧은 배움이었다며. 팁 상자에 등장하는 말들은 짧고 강렬해서 왠지 다 아는 것 같았는데, 볼 때마다 뜨끔하게 된다. 결합도는 줄이고, 응집도를 높이고, 직교성을 향상시킨다. 그렇게 하기 위해선, 직교적인 시스템 설계의 중요성. 코드를 작성하는 것만으로 직교성을 떨어뜨릴 위험에 있다는 것 항상 명심하자. 아, 그리고 추정 섹션은 완전 초 꿀팁. 😍
궁금한 내용이 있거나, 잘 이해되지 않는 내용이 있다면 적어보세요.
도메인 언어 섹션이 전반적으로 이해가 힘들었다. 어떤 프로그래밍 언어 영역 자체를 의미하는 것일지, 소형 언어를 구현한다는 개념이 어떤 것인지.
오늘 읽은 다른사람의 TIL
→ 놓친 부분이 있는지, 다시 찾아보게 된 개념이 있어서 꼽았다. 정리를 잘 해두신 것 같다. ☺️
→ 이제 즐겨찾기 해놓은 TIL, 정리도 깔끔하게 해두시고 공감도 많이 된다. 😎