[실용주의 프로그래머] 가역성 |
-
당신이 가진 생각이 딱 하나밖에 없다면, 그것만큼 위험한 것은 없다. - 에밀 사르티에
-
무언가를 구현하는 방법에는 여러 가지 길이 있고, 보통 하나의 솔루션에는 여러 벤더의 제품이 존재한다.
"이것은 이 방법으로만 해결할 수 있어"와 같은 근시안적인 생각을 갖고 프로젝트에 참여한다면 아마도 예상치 못했던 경우에 의해 한숨지을 일이 많을 것이다.
많은 프로젝트 팀들이 프로젝트를 진행하면서 어쩔 수 없이 고통스럽게 그들의 근시안을 조금씩 수정하게 된다.
가역성
-
유연하고, 적응 가능한 소프트웨어를 만드는 방법은 DRY 원리, 결합도 줄이기, 메타데이터 사용하기 등이 있다.
이들을 따른다면 중요하면서도 되돌릴 수 없는 결정을 가능한 한 줄일 수 있게 될 것이다.
이는 우리가 프로젝트 초기에 항상 최선의 결정을 내리는 것은 아니라는 점에서 매우 유용하다.
-
우리가 소프트웨어를 개발하는 속도는 요구사항, 사용자, 하드웨어의 변화를 앞 지를 수 없다.
-
결정이 돌에 새겨지는 것이 아니라 해변가의 모래 위에 쓰인 글씨라 생각해 보자.
언제든지 큰 파도가 글씨를 지워버릴 수 있다.
-
최종 결정이란 없다.
유연한 아키텍처
-
보통 특정 벤더 제품에 대한 의존도 등은 잘 정의한 추상화한 인터페이스를 통해 감출 수 있다.
사실 우리가 수행해 온 모든 프로젝트를 이런 식으로 수행할 수 있다.
만약 벤더 의존적인 코드를 깨끗하게 분리하지 않으면, 벤더 의존적인 수행문들이 코드 전반에 흩어져 있을 것이고,
이는 유지보수성, 유연성을 극도로 떨어뜨리게 된다.
요구사항을 메타데이터에 넣고, 필요한 수행문을 코드에 넣을 때 애스팩트나 펄 등을 이용하여 메커니즘을 자동화시켜라.
그리고 어떤 메커니즘을 이용하든 이를 되돌릴 수 있도록 하라.
무언가 자동으로 추가할 수 있다면, 역시 자동으로 빼낼 수도 있다.
누구도 미래에 대해서는 알 수 없으며, 우리라고 예외는 아니다.
'프로그래밍 놀이터 > Tips' 카테고리의 다른 글
[실용주의 프로그래머] 프로토타입과 포스트잇 (0) | 2018.10.14 |
---|---|
[실용주의 프로그래머] 예광탄 (0) | 2018.10.13 |
[실용주의 프로그래머] 직교성 (0) | 2018.09.30 |
[실용주의 프로그래머] 중복의 해악 (0) | 2018.09.29 |
통신 3사 (SKT, KT, LGU+) USIM 다운로드 방법 (0) | 2018.09.12 |
댓글