本文件可能會有進一步修訂。
隨著專案的發展,程式碼庫會顯著增加,其規模取決於專案的目標與類型。不一致的程式碼庫會危及可讀性與可維護性,進而影響個人或團隊的生產力。
對於僅供一次性使用的程式碼庫,程式設計標準或許並非必要。然而,遵循程式設計風格指南是避免程式碼庫不一致,並防止陷入除錯地獄的必要條件。
所謂的「乾淨代碼」並不存在,這只是一個童話故事,因為對**「乾淨代碼」** 的認知取決於個人或團隊的主觀判斷。本文件的目標是避免編寫難以閱讀的代碼,並避免盲目遵循「乾淨代碼」。
(混淆且深度嵌套的程式碼簡化範例)
#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);
}
}
(而非直接採用現成指南)。
網路上已有許多文獻詳盡的 C++ 程式設計風格指南與規範,例如 Google 風格指南與 Unreal 編碼標準。 儘管這些資源唾手可得,但理解規則背後的理由仍具有無可估量的價值。
C++ Coding Standards | Pope's Dev Docs