C++最佳实践 | 可维护性

点击蓝字

92341c084ee8fba4de5182737884acc2.png

关注我们

因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享

来源于网络,侵删

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 C++'s new final keyword?[4])。

097c23cb9a3244cbbff2de5ee9cdcf84.gif

如果你年满18周岁以上,又觉得学【C语言】太难?想尝试其他编程语言,那么我推荐你学Python,现有价值499元Python零基础课程限时免费领取,限10个名额!
▲扫描二维码-免费领取

戳“阅读原文”我们一起进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/337162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

springboot启动自动关闭_App自动化测试用例格式和App的启动与关闭

【一】基本的用例格式这里使用unittest测试框架来编写用例。注:unittest可以提供用例的组织和管理、预期结果验证、批量化运行、产生测试报告等功能。新建一个calculator的python package,新建一个calculator_test.py,导入以下包。按照标准的…

C++最佳实践 | 可移植性及多线程

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删C最佳实践:1. 工具2. 代码风格3. 安全性4. 可维护性5. 可移植性及多线程(本文)6. 性能7. 正确性和脚本可移植性明确使用的…

eap aka_使用API​​密钥(aka身份验证令牌)部署到Maven Central

eap aka如何在不使用未加密本地密码的情况下与Maven Central / Nexus通信(尤其是使用Gradle,但不仅限于此)。 基本原理 不幸的是,Gradle(和许多其他构建工具)没有提供任何机制来本地加密密码(或…

万维网发布服务 w3svc 已停止 除非万维_万维网和互联网的区别

常见的一个误解是,人们认为互联网(Internet,也叫因特网)和万维网(World Wide Web)是同样的事物。一些词语如“互联网”、“万维网”,“网”和“网络”经常可以交替使用。但是,从技术的角度来说,“互联网”和“万维网”是两个独立的…

C/C++项目开发:通讯录管理系统源码,C语言链表实现

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删hello,各位小伙伴们大家好!你们今天有敲代码嘛?如果有熟悉的小伙伴看到我,就知道又可以来学习源码…

javafx窗体程序_JavaFX真实世界应用程序:欧洲电视网广播联盟

javafx窗体程序我荣幸地与今年在德累斯顿Saxonia 系统公司工作的Alexander Casall一起在JavaOne上展示了多个JavaFX Real-World应用程序。 在准备本次演讲时,我们向客户和合作伙伴发送了一份调查表,并向他们询问了一些与他们的项目,他们的应用…

spring 数据库 链接db2_Druid,Java语言中最好的数据库连接池

Druid是Java语言中最好的数据库连接池,这话不是我说的,是Druid官方文档自己这样描述的,这是何等的自信!连接池的作用,跟线程池的作用大同小异,都是为了减少频繁的创建销毁连接IO,提升性能。drui…

编程知识:既然已经有数组了,为什么还要链表?

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删对于不少开发者而言,链表(linked list)这种数据结构既熟悉又陌生,熟悉是因为它确实是非常基础的数据结构,陌生…

jcache_随机JCache内容:多个提供程序和JMX Bean

jcacheJCache(JSR 107)是用于缓存的Java标准…足够了。 没有更多介绍性的东西。 这是一则速成文章,内容涉及 多个JCache提供程序配置,以及 功能:通过JMX Mbeans的JCache统计信息 管理多个JCache提供程序 如果您只使…

python webbrowser点击_用 Python 实现手机自动答题,这下百万答题游戏谁也玩不过我!...

引言如果谈到这几年手机上各平台最常见的引流福利,必然是答题赢大奖系列小游戏了。像什么头号英雄,百万玩家之类的,充斥在我们生活中,同时也成为了我们生活中常见的娱乐方式。但是有时候就会想,能不能实现手机自动答题…

程序员的年终总结,各种版本各种残

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删朱自清版这几天心里颇不宁静了,眼看上线的日子越来越临近,而项目Bug之多,密密的交叉着,却无从改起…

securecrt哪个版本好用_电脑跑分测试软件哪个好?好用的电脑跑分软件推荐

想要直观的了解自己电脑状况,那么一款好用的电脑跑分软件无疑是必不可少的,毕竟他能够将测试结果用跑分的形式计算出来。那么,电脑跑分软件哪个比较好呢?下面是小编分享的好用的电脑跑分软件推荐,游戏玩家们可不要错过…

C语言,单片机绕不过的坎,你对C语言内存分配了解多少呢

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删一、static在C语言里面可以用来修饰变量,也可以用来修饰函数。1、 先看用来修饰变量的时候。变量在C语言里面可分为存在全局数据区、…

内存 增量数据持久_内存中数据模型和大数据持久性

内存 增量数据持久ORM框架在需要与关系数据库进行交互时可以帮助开发人员。 对于关系数据库,有许多出色的ORM框架,例如Hibernate和Apache OpenJPA,其中一些确实很棒。 如今,大数据正在涌现,越来越多的人开发在大数据上…

自学编程的6个技巧总结

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删有一天,我的一个在学编程的朋友问我:“我想快速学习编程,你有什么好的推荐吗?”我曾在上大学的时…

C语言如何知自身函数的实际地址与大小

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删事情的起因大概是这样……在很久很久以前,我最早用的是MASM(Win32ASM)写程序,从平台兼容性、开发…

xtext_使用Xtext为Eclipse和IntelliJ开发DSL

xtext在这篇文章中,我们将看到如何开发一种简单的语言。 我们的目标是: 语言的解析器 IntelliJ的编辑器 。 编辑器应具有语法突出显示,验证和自动完成功能 我们还将免费提供Eclipse和Web编辑器的编辑器 ,但请包含您的兴奋之处&…

sed 插入多行_Linux三剑客之sed

sed命令用法小记版本:CentOS7▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼ ▼好久没更新文章了,项目的事情太多,总得给自己的懒惰找个借口,哈哈~话不多说进入正题创建测试数据[aliscaspark02 a]$ cat data#test the sedThis is the header l…

分享一些超级炫酷的C语言小技巧

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删C语言常常让人觉得它所能表达的东西非常有限。它不具有类似第一级函数和模式匹配这样的高级功能。但是C非常简单,并且仍然有一些非常…

C++编程新手容易犯的 10 种编程错误

点击蓝字关注我们因公众号更改推送规则,请点“在看”并加“星标”第一时间获取精彩技术分享来源于网络,侵删公司每年都会有一定的人员流动,相应地也会招一些应届生补充进来,指导应届生已经成为老员工的必修课了。平日里会我们会经…