본문 바로가기
프로그래밍 놀이터/Tips

[실용주의 프로그래머] 가역성

by 돼지왕 왕돼지 2018. 10. 1.
반응형

[실용주의 프로그래머] 가역성


decoupling, dry 원리, [실용주의 프로그래머] 가역성, 가역성, 결합도 줄이기, 디커플링, 메타 데이터, 메타 데이터 사용하기, 실용주의 프로그래머, 유연한 아키텍처, 추상화 인터페이스

-

당신이 가진 생각이 딱 하나밖에 없다면, 그것만큼 위험한 것은 없다. - 에밀 사르티에



-

무언가를 구현하는 방법에는 여러 가지 길이 있고, 보통 하나의 솔루션에는 여러 벤더의 제품이 존재한다.

"이것은 이 방법으로 해결할 수 있어"와 같은 근시안적인 생각을 갖고 프로젝트에 참여한다면 아마도 예상치 못했던 경우에 의해 한숨지을 일이 많을 것이다.

많은 프로젝트 팀들이 프로젝트를 진행하면서 어쩔 수 없이 고통스럽게 그들의 근시안을 조금씩 수정하게 된다.





가역성


-

유연하고, 적응 가능한 소프트웨어를 만드는 방법은 DRY 원리, 결합도 줄이기, 메타데이터 사용하기 등이 있다.

이들을 따른다면 중요하면서도 되돌릴 수 없는 결정을 가능한 한 줄일 수 있게 될 것이다.

이는 우리가 프로젝트 초기에 항상 최선의 결정을 내리는 것은 아니라는 점에서 매우 유용하다.



-

우리가 소프트웨어를 개발하는 속도는 요구사항, 사용자, 하드웨어의 변화를 앞 지를 수 없다.



-

결정이 돌에 새겨지는 것이 아니라 해변가의 모래 위에 쓰인 글씨라 생각해 보자.

언제든지 큰 파도가 글씨를 지워버릴 수 있다.



-

최종 결정이란 없다.





유연한 아키텍처


-

보통 특정 벤더 제품에 대한 의존도 등은 잘 정의한 추상화한 인터페이스를 통해 감출 수 있다.

사실 우리가 수행해 온 모든 프로젝트를 이런 식으로 수행할 수 있다.

만약 벤더 의존적인 코드를 깨끗하게 분리하지 않으면, 벤더 의존적인 수행문들이 코드 전반에 흩어져 있을 것이고,

이는 유지보수성, 유연성을 극도로 떨어뜨리게 된다.


요구사항을 메타데이터에 넣고, 필요한 수행문을 코드에 넣을 때 애스팩트나 펄 등을 이용하여 메커니즘을 자동화시켜라.

그리고 어떤 메커니즘을 이용하든 이를 되돌릴 수 있도록 하라.

무언가 자동으로 추가할 수 있다면, 역시 자동으로 빼낼 수도 있다.


누구도 미래에 대해서는 알 수 없으며, 우리라고 예외는 아니다.




반응형

댓글