深圳网站建设及推广服务公司,贵州住建设局官方网站,中国电信企业邮箱21cn,pc端与手机端网站开发的区别点击蓝字关注我们因公众号更改推送规则#xff0c;请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络#xff0c;侵删C最佳实践:1. 工具2. 代码风格3. 安全性4. 可维护性#xff08;本文#xff09;5. 可移植性及多线程6. 性能7. 正确性和脚本可维护性避免使用编…点击蓝字关注我们因公众号更改推送规则请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络侵删C最佳实践:1. 工具2. 代码风格3. 安全性4. 可维护性本文5. 可移植性及多线程6. 性能7. 正确性和脚本可维护性避免使用编译宏宏在编译之前被预处理器所替换从而使得调试非常困难因为调试器无法知道源代码来自哪里。// Bad Idea
#define PI 3.14159;// Good Idea
namespace my_project {class Constants {public:// if the above macro would be expanded, then the following line would be:// static const double 3.14159 3.14159;// which leads to a compile-time error. Sometimes such errors are hard to understand.static constexpr double PI 3.14159;};
}避免使用布尔值作为函数参数在阅读代码时布尔值无法提供任何额外含义。可以创建一个名称更有意义的独立函数或者传递含义更明确的枚举值。参考 http://mortoray.com/2015/06/15/get-rid-of-those-boolean-function-parameters 了解更多信息。避免使用裸循环了解和理解现有C标准算法并付诸实践。参考cppreference[2]观看C Seasoning[3]将对[]的调用看作是一种潜在的代码坏味道表明没有在需要的地方使用合适的算法。永远不要使用有副作用的assert// Bad Idea
assert(set_value(something));// Better Idea
[[maybe_unused]] const auto success set_value(something);
assert(success);在release版本中assert()将会被删除从而造成set_value无法被调用。虽然第二个版本更丑但总比第一个错误版本好一点。正确使用“override”和“final”这些关键字使其他开发人员可以清楚知道虚函数可以被如何使用如果虚函数的签名发生了变化就可以捕获潜在错误并有可能向编译器提示可以执行哪些优化参考: How does the compiler benefit from Cs new final keyword?[4]。如果你年满18周岁以上又觉得学【C语言】太难想尝试其他编程语言那么我推荐你学Python现有价值499元Python零基础课程限时免费领取限10个名额▲扫描二维码-免费领取戳“阅读原文”我们一起进步