Frogman Engine 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. 클린 코드를 맹목적으로 따르지 마십시오. 동료들이 코드를 쉽게 읽고 이해할 수 있도록 중복되거나, 과도하게 설계되었거나, 복잡한 코드를 작성하지 않도록 노력하십시오.