STL 사용과 코드의 복잡성 및 가독성에 대한 소고

디지츠님이 남겨주신 리플을 보고 STL 같은 표준 라이브러리나 기타 여러 라이브러리들을 사용할 때 저도 그렇고 누구에게나 드는 의문일 거 같기 때문에 그에 대해 간단하게 저의 생각을 적어봤습니다.

“홀짝도 구분 못하는 STL 에서 볼 수 있듯이 C++ Standard Template Library 의 경우 표현력과 재사용성을 서로 trade-off 했기 때문에 STL 로만 코드를 짜는데는 표현력에 많은 제한이 있습니다. 제가 불평한 것도 그런 표현력이 몇가지 부분에 있어서 많이 부족했기 때문입니다.

하지만 오히려 그 덕분에 STL 로만 작성할 수 있는 경우에 그 코드의 가독성과 논리적 명확성은 오히려 더욱 뚜렷해진다고 생각합니다. 반면 아무런 라이브러리도 사용하지 않은, 언어 자체의 expression 과 statement 를 사용한 코드의 경우 그 표현에 있어서 제한이 없으니 더 쉬운 코드나 아니면 이해할 수 없을 정도로 복잡다단한 코드도 나올 수 있을 겁니다. 따라서 저는 단순히 STL 사용 여부가 코드의 복잡성이나 가독성을 높이거나 낮춘다고 생각하지는 않습니다.

하지만 어떠한 알고리즘을 사용하는 경우 이미 라이브러리에 구현되어 있다면 직접 구현하는 것보다는 라이브러리를 사용하는 것이 코드의 가독성을 높인다고 생각합니다. 물론 그 라이브러리를 잘 아는 사람은 코드를 보고 한번에 이해할 수 있겠지만 모르는 사람은 문서를 읽어봐야 이해할 수 있을 것입니다. 하지만 손수 구현할 경우 라이브러리를 아는 사람이건 모르는 사람이건 전부 다 그 알고리즘 코드를 한줄 한줄 따라가면서 이해를 하거나 주석을 보고 알아내야 할겁니다. 게다가 문서화도 많이 쓰이는 라이브러리들보다 손수 작성한 코드가 더 잘 되어있으리라고는 아마 쉽게 상상할 수 없을 겁니다.

그리고 코드의 완성도 면에서도 이미 구현된 라이브러리의 코드의 경우 수많은 테스트를 통과하고 대부분의 예외들을 고려해서 짜여져있기 때문에 개인이 시간에 쫓기면서 짠 코드보다는 훨씬 낫다고 생각합니다. 물론 그렇다고 맹목적으로 추종하고 잘 알지 못하는 상태에서 남용한다면 큰 낭패를 볼 수 있고, 그게 바로 제가 STL 과 관련해서 경고하는 포스팅을 계속 하는 이유이기도 합니다.

마지막으로 유지, 보수 면에서도 라이브러리 쪽이 유리하다고 생각합니다. STL 과 같은 표준 라이브러리들의 경우 Microsoft 와 같은 컴파일러 제작사들이나 STLport 같은 회사들이 꾸준히 업데이트를 하고 있습니다. 그리고 기타 다른 라이브러리들도 회사나 오픈소스 진영들이 끊임없이 유지, 보수를 하고 있기 때문에 그로부터 얻는 “공짜 점심의 이득”도 상당하다고 생각합니다. 직접 작성한 코드의 경우 직접 유지, 보수를 해야 하지만 라이브러리를 사용하는 경우 단순히 업데이트된 라이브러리를 설치하는 것만으로도 유지, 보수의 혜택을 입을 수 있기 때문입니다.

저는 아직까지는 배우는 입장이고 STL 을 다른 사람들보다 조금 더 안다고 자부하기도 어렵기 때문에 계속 공부하고 사용해 볼 예정입니다. 아마 어떠한 라이브러리라도 손발과 같이 자유자재로 사용할 수 있게 되기까지는 많은 시간과 노력이 필요할 것입니다. 그리고 팀으로 일하는 경우에 있어서는 다른 동료들의 입장도 감안해야 합니다. 모든 사람들이 저와 같은 생각을 가지고 있는 건 아니니까요. 하지만 지금까지 짧은 경험을 통해서나마 느낀 제 생각은 이렇습니다.

Creative Commons License
This work, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Noncommercial-Share Alike 2.0 Korea License.

관련된 포스트들

Tags: , ,

  1. 飛烏’s avatar

    …다 그 알고리즘을 코드 하나하씩 따라가면서…

    오타 수정 :$

    Reply

  2. J.Strane’s avatar

    비오// 수정 완료했습니다. :)

    Reply

  3. 디지츠’s avatar

    에구, 길어져서 쓰다가 트랙백으로 바꿉니다~

    저 역시도 STL은 쓰는 만큼 쓰면 된다고 생각해요.
    그 정도는 다르겠지만..
    그래도 이렇게 길게 답변을 주었기에 저도 트랙백으로 바꿨습니다. :)

    Reply