ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 4. 코드줄여 개선하기
    Technique/Programmer 2017. 1. 26. 15:45
    반응형

    장 화끈한 코드 개선 방법은 코드에서 방대한 부분을 제거하는 것이다.

    불필요하게 파일의 사이즈와 공간을 차지하는 코드를 대폭으로 줄이는 개선이야 말로 단순한 것이 더 아름답다는 말을 전적으로 보여주는 예시이다.


    1. 제멋대로인 코드

    불필요한 코드가 만들어지는 이유가 뭘까? 그것은 프로그래머가 자신의 개인적 취향만으로 제멋대로 코드를 작성했기 때문이다

    • 추가 코드가 재미있는 부분이라 그냥 작성하였다.
    • 미래에 필요할 것 같아서 지금 작성해 두기로 하였다.
    • 엄청나게 큰 기능이 아니라 작은 기능에 불과하기에 실제로 필요한지는 모르겟으나 지금 만들어 두는 것이 좋다고 생각했다.
    • 실제 사양서에는 존재하지도 않는 기능을 제멋대로 구현하였다.


    우리는 린 개발 절차를 잘 알고 있으며, 아주 훌륭한 개발자와 함께 그 같은 일을 피할 수 있는 절차상의 확인 과정을 거친다.

    그럼에도 불구하고 여전히 불필요한 코드는 생겨난다.


    2. 불가피한 결과물

    불필요한 신규 기능 추가를 피한 상황에서도 소프트웨어 개발 과정에서 콛의 사장된 부분은 여전히 튀어나오기 마련이다.


    백엔드 지원 코드에 남아 있는 경우

    그것이 언젠가 필요할지도 모르며, 당장 제거되지 않아도 문제를 일으키지 않기 때문이다.

    더는 사용되지 않는 자료형 또는 클래스가 프로젝트에 남아 있는 경우

    프로젝트의 서로 다른 파트에 대해 작업할 때 특정 클래스에 대한 마지막 참조를 제거했다고 확신하기란 어렵다.

    기존 제품의 기능들이 거의 제거되지 않는 경우

    비록 사용자들이 더 이상 원하지 않거나 두 번 다시 사용하지 않는다 해도, 제품의 특정 기능을 제거하는 일은 결코 좋아 보이지 않는다.

    코드에 대한 오랜 기간의 유지 보수로 인해 함수가 일부 실행되지 않는 경우

    반복문이 순환되지 않는 것은 그 위에 추가된 상수나 분기문에 의해 반복문으로 진입하지 못하기 때문이다. 오래된 코드베이스일수록 이런 부분이 더 많이 발견된다.

    잘 사용되지 않는 이벤트 핸들러가 있는 경우

    UI마법사 동구를 통해 성성된 UI코드에는 잘 사용되지 않는 이벤트 핸들러가 있다. 자동 생ㄷ성된 코드 덩어리를 제거하는 일은 그냥 해당 코드를 없는 셈 치고 무시하는 경우보다 훨씬 더 많은 작업을 필요로 한다.

    전혀 사용되지 않는 함수 반환 값이 있는 경우

    많은 함수가 특정 기능을 수행하고 반환 값을 돌려주도록 만들어진다. 이때 반환 ㅏㅂㅅ은 그 누군가에게 유용할 수도, 유용하지 않을 수도 있다. 그것은 오류코드가 아니며 단지 쓸모없는 값일 뿐이다.

    디버그 코드가 괴사하는 경우

    초기 구현이 완려되면 지우너 코드의 대부분은 쓸모가 없어진다. 오히려 보기 흉한 임시 가설물로 인해 아름다운 구조는 알아볼 수 없게 된다.다시는 사용되지 않을 진단용 로그나 진단용 변수 확인 및 테스트 코드를 흔희 볼 수 있는데. 그들은 코드를 뒤죽박죽으로 만들고 수정을 더 어렵게 만든다.


    3. 그럼 어떻게??
    왜 죽은 코드를 찾아 다녀야하는가?

    • 불필요한 코드 역시 다른 필요한 코드와 마찬가지로 유지 보수 되어야 한다는 점은 명백하다. 여기에는 시간과 돈이 든다.
    • 여분의 코드는 프로젝트를 파악하기 어렵게 만드는 만큼 추가적인 이해와 검토가 필요하다.
    • 백만 개의 메서드를 ㅁ가진 클래스는 주의 깊게 프로그래밍 할 수 없으며, 엉성하게 작성할 수 밖에 없다.
    • 가장 빠른 장비, 가장 좋은 컴파일러를 사들여도 불필요한 코드는 빌드를 지체시키고 덜 생산적이게 만든다.
    • 코드가 좀비 코드로 가득 차면 리팩토링이나 간소화 최적화는 더욱더 어려워진다.


    4. 탐색

    어떦게 죽은 코드를 찾을 수 있을까??

    가장 좋은 방법은 코드베이스에서 작업할 떄 주의를 기울이는 것이다. 자신의 행동에 대해 책임을 지고, 작업 후에는 확실하게 정리하자. 정기적인 코드 리뷰는 죽은 코드를 찾는데 도움이 된다.

    사용되지 않는 기능을 구별하기 위해, 제품을 계측하여 사용자들이 셀제로 어떤 것을 사용하는지에 대한 지표를 수집할 수 있다. 불필요한 코드를 판별할 뿐만 아니라 모든 종류의 사업적 의사 결정을 내리는 데에도 유용한다.


    5. 적출

    죽은 코드를 제거하는 일은 해롭지 않다. 이전 기능이 다시 필요할 때는 버전 관리 시스템을 통해 손쉽게 가져올 수 있다.

    죽은 코드를 제거하는 작업과 기능 추가 작업을 병행하지 말라. 항상 다른 개발 작업과 대청소 기능을 분리하자. 이것은 버전 힌스토리를 깨끗하게 만들고, 제거된 코드가 되살아났는지 화인 시켜준다.


    가장 훌륭한 코드베이스에도 불필요한 코드는 만들어진다. 프로젝트가 클수록 더 많은 불필요한 코드가 존재한다.

    이것은 실패의 징조가 아니며, 죽은 코드를 발견했음에도 아무런 조치도 취하지 않는 것이야 말로 실패의 징조이다.

    사용되지 않거나 실행되지 않는 불필요한 코드를 찾아 냈다면 바로 제거해버리자.



    반응형

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

    6. 경로 탐색  (0) 2017.02.02
    5. 코드베이스의 망령  (0) 2017.01.30
    3. 코드 적게 쓰기  (0) 2017.01.24
    2. 정돈된 코드 유지하기  (0) 2017.01.04
    1. 코드에 신경쓰기  (0) 2017.01.04

    댓글

Designed by Tistory.