원문 게시: 2020년 11월 5일, 주간 팁 #186

작성자: James Dennett, Jason Rennie

최종 수정: 2020-11-05

빠른 링크: abseil.io/tips/186

“모든 것은 가능한 한 단순해야 하지만, 지나치게 단순해서는 안 된다.” - 아인슈타인의 생각을 해석한 로저 세션스

새로운 함수를 추가할 때 기본적으로 해당 함수가 호출되는 .cc 파일에 로컬인 비멤버 함수로 만드는 것이 좋습니다. 다른 선택이 필요할 수 있는 합리적인 이유가 있지만, 무명 네임스페이스(익명 네임스페이스라고도 함)에 작성하는 것을 고려하세요.

장점

무명 네임스페이스에 비멤버 함수를 작성하면 함수가 .cc 파일에 내부적으로 위치하도록 하고(헤더 파일에서 제거), 클래스 외부로 이동시키는 이점을 제공합니다.

헤더 파일에 선언된 함수에 비해 다음과 같은 장점이 있습니다:

비공개 메서드에 비해 다음과 같은 장점이 있습니다:

이러한 대부분의 장점은 헤더 파일이 없는 경우에도 유효합니다(예: *_test.cc 또는 *_main.cc 파일).

무명 네임스페이스를 사용하지 않는 경우

때로는 비멤버 로컬 함수가 적절하지 않을 수 있습니다. 예를 들어:

대안: static 비멤버 함수

비멤버 함수를 static으로 표시하면 다른 번역 단위의 코드에서 격리된다는 점에서 무명 네임스페이스에 넣는 것과 본질적으로 동일한 효과를 얻을 수 있습니다. 무명 네임스페이스는 타입, 함수, 객체에 대해 일관된 방식으로 이를 수행하지만, 일부 사람들은 함수 선언에 static을 명시적으로 작성하여 함수가 번역 단위에 로컬임을 표시하는 것을 선호합니다(무명 네임스페이스가 있는지 확인할 필요 없이). 이 팁은 무명 네임스페이스 사용을 권장하지만, static을 사용하는 것도 합리적인 선택이 될 수 있습니다.

참고 자료

Google 스타일 가이드에서 이 방향성을 어느 정도 제시하고 있지만, 완전하게 다루지는 않습니다. 예를 들어:

요약

파일 로컬 함수는 의존성을 단순화하고 코드의 지역성을 높여줍니다. 비멤버 함수는 캡슐화를 강화하고 클래스 정의를 단순화하며 의존성을 더 명확히 만듭니다. 함수를 작성할 때, .cc 파일의 무명 네임스페이스에 파일 로컬 비멤버 함수로 만드는 것을 고려하세요.

PLAINTEXT
클릭하여 더 보기

라이선스

저작자: Jaehun Ryu

링크: https://jaehun.me/posts/abseil-tip-186-%ED%95%A8%EC%88%98%EB%8A%94-%EB%AC%B4%EB%AA%85-%EB%84%A4%EC%9E%84%EC%8A%A4%ED%8E%98%EC%9D%B4%EC%8A%A4%EC%97%90-%EB%91%90%EB%8A%94-%EA%B2%83%EC%9D%84-%EC%84%A0%ED%98%B8%ED%95%98%EC%84%B8%EC%9A%94/

라이선스: CC BY 4.0

이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다. 출처를 밝히면 상업적 목적을 포함해 자유롭게 이용 가능합니다.

댓글

검색 시작

검색어를 입력하세요

↑↓
ESC
⌘K 단축키