GNU 코딩 표준
GNU coding standards![]() |
GNU 코딩 표준은 GNU 시스템 내에서 일관되게 작동하는 프로그램을 기술하기 위한 규칙과 가이드라인 세트입니다.GNU 코딩 표준은 Richard Stallman과 다른 GNU Project 자원봉사자들에 의해 작성되었습니다.표준 문서는 GNU 프로젝트의 일부이며 GNU 웹사이트에서 구할 수 있습니다.C에서 GNU를 위한 무료 소프트웨어를 작성하는 데 중점을 두고 있지만, 그 대부분은 더 일반적으로 적용될 수 있습니다.특히, GNU Project는 기여자들에게 프로그램이 C에 구현되어 있는지 여부에 관계없이 항상 표준을 따르도록 권장하고 있습니다.
코드 포맷
GNU 코딩 표준은 대부분의 C 프로그래밍 언어 구조를 포맷하는 방법을 정확하게 지정합니다.다음으로 특징적인 예를 제시하겠습니다.
인트 주된 (인트 argc, 차 *argv[]) { 구조 기모 후우; fetch_gizmo (&후우, argv[1]); 확인.: 한다면 (후우.유형 == 무민) 놓다 ("무민이에요"); 또 다른 한다면 (후우.막대기 < > GIZMO_SNUFKIN_THRESHOLD / 2 (스트램프 (후우.class_name, "fkin") == 0) & & 후우.막대기 < > GIZMO_SNUFKIN_THRESHOLD) 놓다 (스너프킨이에요.); 또 다른 { 차 *바니; /* 다음 첫 번째 문자에 대한 포인터 파일 이름의 마지막 슬래시.*/ 인트 할 수 있다; /* 우주의 대략적인 크기.*/ 인트 프래드; /* 'bar' 필드의 최대값입니다.*/ 하다 { 프롬산염 (&후우, GIZMO_SNUFKIN_THRESHOLD, &바니, &할 수 있다, &프래드); 빙글빙글 돌다 (&후우, 바니, 할 수 있다 + 프래드); } 하는 동안에 (후우.막대기 >= GIZMO_SNUFKIN_THRESHOLD); store_size (할 수 있다); 에 가다 확인.; } 돌아가다 0; }
(인디케이션의 목적으로) 블록을 문으로 일관되게 취급하는 것은 GNU C 코드 포맷 스타일의 매우 독특한 특징이며 괄호 앞의 필수 공간도 마찬가지입니다.GNU 스타일로 포맷된 모든 코드는 각 닫는 괄호, 괄호 또는 괄호가 대응하는 시작 구분 기호 오른쪽 또는 같은 열에 나타나는 속성을 가집니다.
일반적으로 GNU Emacs는 GNU 코드 포맷 스타일에 대해 신뢰할 수 있는 권위자로 간주됩니다[by whom?].따라서 Emacs에 의해 들여쓰기되었을 때 보기 흉하게 보이는 코드 조각은 예를 들어 괄호를 추가하는 등 Emacs 친화적인 형식으로 변경하는 것이 좋습니다[according to whom?].
긴 선 분할
식을 여러 줄로 분할할 때는 [1]연산자 앞에 분할하지 말고 연산자 앞에 분할하십시오.
예를 들어 다음과 같습니다.
한다면 (foo_this_is_long & & 막대기 > 당첨되다 (x, y, z) & & remaining_condition(나머지 조건))
평.
GNU 프로그램에 영어로 코멘트를 써주세요.왜냐하면 영어는 거의 모든 나라의 프로그래머가 읽을 수 있는 언어이기 때문입니다.만약 당신이 영어를 잘 쓰지 못한다면 가능한 한 영어로 코멘트를 쓰고 다른 사람에게 다시 쓰도록 도움을 요청하세요.영어로 코멘트를 쓸 수 없는 경우는, 함께 일할 사람을 찾아, 코멘트를 영어로 번역해 주세요.
코멘트는 완전한 대문자로 된 문장으로 구성되어야 하며, 그 뒤에 각각 두 개의 공백이 있어야 합니다(Emacs가 한 문장이 어디에서 끝나고 다음 문장이 어디서 시작되는지 알 수 있도록).
긴 프리프로세서 조건 또는 복잡한 프리프로세서 조건의 경우#else
그리고.#endif
아래 코드의 조건을 설명하는 코멘트가 필요합니다.#else
(용) 이상#endif
).
파일
표준에서는, 다음의 경우에, 모든 프로그램이 동작할 수 있도록 하고 있습니다./usr
그리고./etc
읽기 전용으로 마운트됩니다.따라서 내부용으로 변경된 파일(로그 파일, 잠금 파일, 임시 파일 등)은 어느 쪽에도 저장해서는 안 됩니다./usr
또는/etc
시스템 컨피규레이션파일을 갱신하는 것을 목적으로 하는 프로그램에서는 예외입니다./etc
또, 유저가 같은 디렉토리의 파일의 변경을 명시적으로 요구했을 경우는, 디렉토리에 파일을 보존하는 예외도 있습니다.
휴대성
GNU 코딩 표준에서는, 이러한 방법으로 휴대성의 문제를 정의하고 있습니다.유닉스 세계에서의 휴대성은 Unix 사이의 「유닉스」를 의미합니다.GNU 프로그램에서는 이러한 종류의 휴대성이 바람직하지만, 지극히 중요한 것은 아닙니다.
표준에 따르면, GNU 프로그램은 하나의 컴파일러인 GNU C 컴파일러로 컴파일되도록 설계되어 있으며, 단 하나의 시스템, 즉 GNU 시스템에서만 실행되도록 설계되어 있기 때문에 이식성 문제는 매우 제한적입니다.
단, 이식성 문제에는 한 가지 형태가 있는데, 이는 표준에서 프로그램이 다른 CPU 유형에서 실행되어야 한다는 것을 명확히 하고 있다는 사실입니다.표준에서는 GNU는 16비트 시스템을 지원하지 않으며 지원하지 않지만 32비트 및 64비트 시스템을 모두 처리해야 합니다.
비판
GNU 코딩 표준은 주로 GNU 프로젝트에서 사용됩니다. 단, GNU 프로젝트에만 사용되는 것은 아닙니다.
Linux 커널은 커널 코드에 대해 이 스타일을 강하게 권장하지 않으며, "먼저 GNU 코딩 표준의 복사본을 인쇄하고 읽지 않는 것이 좋습니다.태워라, 이것은 훌륭한 상징적 [2]제스처이다."Steve McConnell은 또한 그의 책 Code Complete에서 이 스타일을 사용하지 말 것을 권고하고 있습니다. 그는 코드 샘플을 "Coding Horror" 아이콘으로 표시하고, 특히 위험한 코드를 상징하며,[3] 교정기용 추가 수준의 움푹 패임이 필요하기 때문에 가독성을 방해한다고 말합니다.
「 」를 참조해 주세요.
레퍼런스
- ^ "GNU Coding Standards". www.gnu.org. Retrieved 2020-11-29.
- ^ "Linux kernel coding style — The Linux Kernel documentation". www.kernel.org. Retrieved 2017-10-12.
- ^ McConnell, Steve (2004). Code Complete: A practical handbook of software construction. Redmond, WA: Microsoft Press. pp. 746–747. ISBN 0-7356-1967-0.