본문 바로가기
C++

[C++ Core Guidelines] P.12, P.13 도구를 잘 활용하자

by 코드쉼터 2024. 4. 26.

P.12: Use supporting tools as appropriate

P.13: Use support libraries as appropriate

 

이유

컴퓨터가 여러분 대신 해줄 수 있는 일이 많이 있습니다. 사람은 지루한 작업을 반복적으로 수행하는 것보다 더 나은 일을 해야 합니다.

라이브러리를 만드는데 사용되는 비용(시간, 노력, 돈 등) 은 여러 사용자가 공유할 수 있습니다. 널리 사용되는 라이브러리는 개별 애플리케이션보다 최신 상태로 유지되고 새로운 시스템으로 이식될 가능성이 더 높고 문서화도 잘 되어있습니다.

널리 사용되는 라이브러리에 대한 지식은 다른/향후 프로젝트에서 시간을 절약할 수 있기 때문에 적절한 라이브러리가 있으면 이를 사용하는 것이 좋습니다.

 

 

알아두기

아래와 같은 시중의 코드 분석기를 활용하면 코드가 지침을 잘 따르는지 확인할 수 있습니다.

1. 정적 코드 분석 도구 (Cppcheck, Splint, CppNcss, LDRA Testbed)

2. 동시성 분석 도구 (ThreadSanitizer, CppMem)

3. 테스트 도구 (Embunit, Typemock, Cantata, Parasoft, CppUTest, Boost test library, CRT debug library)

그밖에 소스 저장소, 자동화 빌드 (CI/CD) 도구 등과 같은 다른 종류의 도구들도 많이 있습니다.

 

 

알아두기

아래 라이브러리들을 능수능란하게 사용할 줄 알아야 합니다.

1. The ISO C++ Standard Library

2. The Guidelines Support Library

 

 

예시 (좋은 예)

std::sort(begin(v), end(v), std::greater<>());

// 작성자 추가 : C++20 Ranges 활용 시
std::ranges::sort(v, std::ranges::greater{});

여러분이 정렬 알고리듬 만들기의 달인이 아니라면 위처럼 STL 를 쓰는 것이 더 빠르고 정확할 가능성이 더 높습니다.

표준 라이브러리 (또는 응용 프로그램이 사용하는 기본 라이브러리) 를 사용해야 하는 이유를 묻지 마세요. 사용하지 않아야 할 이유를 찾는 편이 더 좋습니다.

 

 

정리

1. 도구를 사용하면 편합니다. 다만, 지나치게 정교하거나 전문화된 도구 체인에 의존하지 않도록 주의하세요. 이로 인해 이식 가능한 코드가 이식 불가능해질 수 있습니다.

2. 코드를 여러 C++ 컴파일러로 컴파일 해보는 것 역시 코드를 검증하는 훌륭한 수단입니다.

3. 좋은 라이브러리가 없다면 이를 설계하고 구현하여 C++ 커뮤니티 (Boost 등) 에 기여해 주세요.