ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 19. 코드 재사용
    Technique/Programmer 2017. 3. 26. 14:18
    반응형

    복사 & 붙여넣기


    복붙이란 하나의 앱에서 복사한 코드를 다른 앱으로 그대로 옮기는 것을 말한다.

    이는 재사용 이라기 보단 중복에 가깝다. 그것은 코드의 저작권 침해와 동등하게 사악한 행위 이다.

    자신이 했던 일을 반복하지 말자 ( Do Not repeat yourself )” DRY를 명심하자.

    코드베이스에서 파일 간에 코드를 복붙하는 것도 유혹적이지만 웹에서 코드의 많은 부분을 복사하는 것은 훨씬 더 유혹적이다.

    그것들을 액면 그대로 가져와 중대한 판단 없이 통합하여 적용하는 일이 없도록 하자.

    -      코드가 정말로 완벽하게 들어 맞는가? 모든 에러를 적절하게 다루고 있는가? 버그는 없는가?

    -      필요한 것을 이루기 위한 가장 좋은 방법인가? 오래된 예제는 아닌가?

    -      당신의 코드에 적용해도 되는 권리가 있는가? 저작권이 있지는 않은가?

    -      얼마나 철저하게 테스트 하였는가?

    위의 고려사항을 꼭 확인하기를 바란다. 주의 깊게 조사하지 않은 채 복사하는 일인 없도록 하자.

     

    재사용을 위한 설계


    다양한 프로젝트에 포괄적으로 사용할 라이브러리를 처음부터 설계할 수 있다. 이런 접근 방식은 불필요하며, 너무 큰 일탈이다. 코드 하나가 하나의 프로젝트가 아닌 더 많은 용도로 사용될 것인 것 의심스러운 상황에서 처음부터 다양하게 사용될 수 있도록 처리하는 것은 가치 없는 일이다.

    모든 일반적인 경우를 포함하려 하다 보니, 겉치레가 너무 많은 기능을 가진 소프트웨어가 된다. YAGNI 원리를 잘 이용하자. “( 아직 ) 필요하지 않으면 ( 지금은 ) 작성하지 말자

    당장의 요구사항을 모두 만족시킬 수 있는 가장 간단한 코드를 만드는 데에만 집중하자. 가능한 적은 양의 소프트웨어를 만듦으로써, 버그를 양산하거나 향후 수년간 지원해야 하는 불필요한 기능을 만들 위험을 줄일 수 있다.

     

    개선하고 리팩토링하기

    작고 모듈화된 코드를 작성하자. 깨끗하고 정돈된 상태를 유지하자.

    한곳이 아닌 여러 곳에서 사용되어야 한다는 것을 깨닫는 순간 바로 리팩토링 하자. 공통 라이브러리 혹은 공통 코드 파일을 만들자. 그리고 코드를 옮기고. 다음 사용자에게 맞추기 위해 가능한 작은 범위로 기능을 확장하자.

    수정을 최소화하고 단순화 하는 것이 가장 좋다. 그 이유로는

    -      현재 코드가 잘 작동하기 때문이다. 모든 이유 없는 수정은 현재의 작동 중인상태에서 더 멀어지게 한다.

    -      아주 약간의 변경 사항을 요구하는 새로운 클라이언트가 나타날 수도 있기 때문이다.

     

    코드는 공통화 되어야 한다 이는 다수의 클라이언트에게 유용해서이지 개발자가 멋진 공통 라이브러리를 만들고 싶어서가 아니다.

     

    매입하라 아니면 시간 낭비다.


    새로운 기능을 추가해야 할 때 새로운 기능을 제공하는 서드파티 라이브러리가 이미 존재할 것이다. 이 때 자신만의 코드로 시작하거나 오픈 소스 버전을 적용하거나, 서드파티 솔루션을 사는 것 중에 어느 것이 경제적이고 더 합리적일 지 주의 깊게 고려하자

    구매 비용을 개발 비용과 코드 품질, 각 솔루션의 유지 보수 및 통합의 용이함과 서로 비교해봐야 한다

    개발자들은 지적인 훈련을 하기 위해서뿐만 아니라 잘 모르는 것에 대한 불신 때문에, 스스로 코드를 작성하는 것을 선호하는 경향이 있다. 현명한 결정을 내리자.


    다른 사람의 코드를 무시하지 말자. 자신만의 버전을 작성하는 것보다 이미 존재하는 라이브러리를 사용하는 편이 나을 수도 있다.

    반응형

    'Technique > Programmer' 카테고리의 다른 글

    QA는 무엇에 좋은가?  (0) 2017.04.06
    20. 효과적인 버전 관리  (0) 2017.04.06
    18. 변하지 않는 것은 없다.  (0) 2017.03.26
    17. 머리 쓰기  (0) 2017.03.26
    16. 간결하게 하기  (0) 2017.03.22

    댓글

Designed by Tistory.