在C++中,展示最佳實踐通常涉及以下幾個方面:代碼風格、效率、可維護性、錯誤處理和文檔化。下面是一個簡單的C++程序示例,展示了這些最佳實踐:
#include <iostream>
#include <vector>
#include <stdexcept>
// 最佳實踐1: 使用有意義的命名
class Circle {
public:
Circle(double radius) : radius_(radius) {}
// 最佳實踐2: 使用范圍for循環簡化迭代
void printArea() const {
std::cout << "Area: " << 3.14159 * radius_ * radius_ << std::endl;
}
private:
double radius_; // 最佳實踐3: 使用私有成員變量,并通過公共方法訪問
};
// 最佳實踐4: 使用異常處理錯誤情況
double calculateArea(const std::vector<double>& radii) {
if (radii.empty()) {
throw std::invalid_argument("Radii vector cannot be empty.");
}
double totalArea = 0.0;
for (const double& radius : radii) {
if (radius <= 0) {
throw std::invalid_argument("Radius must be positive.");
}
totalArea += 3.14159 * radius * radius;
}
return totalArea;
}
int main() {
try {
// 最佳實踐5: 使用std::vector代替原生數組
std::vector<double> radii = {5.0, 10.0, 15.0};
// 最佳實踐6: 使用const引用傳遞大型對象以節省內存和提高性能
const std::vector<double>& constRadii = radii;
// 最佳實踐7: 使用智能指針管理動態分配的內存(本例中未使用,但為示例完整性提及)
// std::unique_ptr<std::vector<double>> smartRadii(new std::vector<double>(radii));
Circle circle(5.0);
circle.printArea();
double total = calculateArea(constRadii);
std::cout << "Total area: " << total << std::endl;
} catch (const std::invalid_argument& e) {
// 最佳實踐8: 使用std::cerr輸出錯誤信息
std::cerr << "Error: " << e.what() << std::endl;
return 1;
}
return 0;
}
這個示例展示了以下最佳實踐:
Circle
、radius_
)。for (const double& radius : radii)
)。private: double radius_;
和public: double getRadius() const { return radius_; }
)。throw std::invalid_argument("Radii vector cannot be empty.");
)。std::vector
代替原生數組。const
引用傳遞大型對象以節省內存和提高性能。std::cerr
輸出錯誤信息。