프로그맨 엔진 C++ 프로그래밍 표준

이 문서는 추후 수정될 수 있습니다.

서문

프로그래밍 표준의 필요성.

코드 베이스는 프로젝트 목표와 유형에 따라 프로젝트가 발전함에 따라 크게 증가합니다. 일관되지 않은 코드 베이스는 가독성과 유지보수성을 위협하여 개인 또는 팀의 생산성을 저해합니다.

일회성 코드 베이스에는 프로그래밍 표준이 필요하지 않을 수도 있습니다. 코드 베이스의 불일치를 피하고 디버깅 지옥에 빠지지 않으려면 프로그래밍 스타일 가이드를 따라야 합니다.

깔끔한 코드는 존재하지 않으며, 깔끔한 코드에 대한 인식은 개인이나 팀에 따라 주관적이기 때문에 동화 같은 이야기일 뿐입니다. 이 문서의 목표는 읽을 수 없는 코드를 작성하는 것을 피하고 클린 코드를 종교적으로 따르는 것을 피하는 것입니다.

난독화되고 깊게 중첩된 코드의 단순화된 예시)

#include <iostream>
#include <cstdlib>

void mergeSort(int *arr, int l, int r) {
    if (l < r) {
        int m = l + (r - l) / 2;
        mergeSort(arr, l, m);
        mergeSort(arr, m + 1, r);
        int n1 = m - l + 1;
        int n2 = r - m;
        int *L = (int*) malloc(n1 * sizeof(int));
        int *R = (int*) malloc(n2 * sizeof(int));
        for (int i = 0; i < n1; i++) L[i] = arr[l + i];
        for (int j = 0; j < n2; j++) R[j] = arr[m + 1 + j];
        int i = 0, j = 0, k = l;
        while (i < n1) {
            if (j < n2) {
                if (L[i] <= R[j]) {
                    arr[k] = L[i];
                    i++;
                } else {
                    arr[k] = R[j];
                    j++;
                }
            } else {
                arr[k] = L[i];
                i++;
            }
            k++;
        }
        while (j < n2) {
            arr[k] = R[j];
            j++;
            k++;
        }
        free(L);
        free(R);
    }
}

프로그래밍 스타일 가이드 만들기(다른 것을 채택하는 대신).

Google 스타일 가이드와 언리얼 코딩 표준과 같이 잘 문서화된 C++ 프로그래밍 스타일 가이드와 규칙은 온라인에서 많이 찾아볼 수 있습니다. 하지만 규칙의 이면에 숨은 이유를 알아두는 것은 매우 중요합니다.

레퍼런스

C++ Coding Standards | Pope's Dev Docs

주요 규칙

1. 클린 코드를 종교적으로 실천하지 마세요. 동료들이 쉽게 읽고 이해할 수 있도록 중복되거나 과도하게 설계되거나 복잡한 코드를 작성하지 마세요.