Windows客户端C/C++编程规范“建议”——表达式和运算
4 表达式和运算
4.1 比较操作中将常量设置为左值
等级: 【推荐】说明:编写代码时,如果将常量设置为右值。可能因马虎将“==”写成“=”导致逻辑错误。这种场景下,编译器是不会报错的,代码检查也比较容易被忽视。
例子:

std::string::size_type index = str.find("a");
if ( index = std::string::npos){
}
上例中写法可以执行,但是逻辑是错的。如下编写,可以借助编译器检查出问题: 
std::string::size_type index = str.find("a");
if ( std::string::npos = index ){
}
4.2 除法操作要判断除数是否为0
等级: 【必须】4.3 乘法或加法运算需考虑结果溢出场景
等级: 【必须】4.4 不使用复杂的复合结构
等级: 【推荐】说明:比如不要多次嵌套使用“:?”运算符。复杂的复合结构将使代码不易阅读和理解。
4.5 不要在条件表达式中赋值
等级: 【推荐】说明:避免出现==、=和!=等在条件表达式中出现,可以避免手误,也可以提高增加代码可读性。
4.6 对浮点数不要做相等或不等比较
等级: 【推荐】说明:浮点数运算中经常产生误差,=和!=操作可能会返回期望相反结果。
4.7 尽可能使用sizeof(变量)而非sizeof(类型名)
等级: 【要求】说明:这样方便代码的维护,将不至于之后修改变量类型后,sizeof计算出错。注意:对象指针使用sizeof后得出的是指针大小,而非对象大小
4.8 尽量避免使用位运算
等级: 【要求】说明:除非对内存使用和效率非常高的情况下,尽量避免使用位运算。这可以使用提高代码的可读性。
4.9 offsetof宏
等级: 【必须】说明:不要自己估算结构体中成员变量偏移,而使用offsetof宏进行计算。
(转载请指明出于breaksoftware的csdn博客)
相关文章:
GitHub标星1.5w+,从此我只用这款全能高速下载工具
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Rocky0429来源 | Python空间(ID:Devtogether )大家好,我是 Rocky0429,一个喜欢在网上收集各种资源的蒟蒻...网上资源眼花缭乱,下载的方…

CSS text-transform 属性
定义 text-transform 对元素中的字母进行控制。 继承性:Yes 说明 这个属性会改变元素中的字母大小写,而不论源文档中文本的大小写。如果值为 capitalize,则要对某些字母大写,但是并没有明确定义如何确定哪些字母要大写,…

SeaJS基本开发原则
SeaJS基本开发原则 在讨论SeaJS的具体使用前,先介绍一下SeaJS的模块化理念和开发原则。使用SeaJS开发JavaScript的基本原则就是:一切皆为模块。引入SeaJS后,编写JavaScript代码就变成了编写一个又一个模块,SeaJS中模块的概念有点类…

SMS主站点配置详细图解:Sms2003系列之二
SMS主站点配置在上一篇文章中,我们介绍了如何进行SMS2003+SP2的部署。本文中,我们将介绍如何进行SMS主站点的配置。在SMS中,站点(site)定义并包含了所有SMS管理的对象。当我们第一次安装SMS时,实际安装的是一个SMS站点…
2019,不可错过的NLP“高光时刻”
作者 | Elvis译者 | 凯隐、夕颜出品 | AI科技大本营(ID: rgznai100)【导读】对自然语音处理(NLP)领域而言,2019年是令人印象深刻的一年,本文将回顾2019年NLP和机器学习领域的重要事件。内容 主要集中于 NLP…

Windows客户端C/C++编程规范“建议”——结构
5 结构 5.1 不要使用goto 等级: 【必须】说明:在大型项目中,goto的滥用会导致灾难性后果。因为我们程序中一般不存在从一个函数体内部跳转到另一个函数体内部的场景,所以我们可以将跳转控制在函数内部,从而避免灾难。…

WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享...
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/chinahuyong/article/details/47395633 WinForm容器内控件批量效验是否允许为空?设置是否只读?设置是否可用等方法分享 在WinForm程序中,我…
“不会Linux,怎么当程序员?”骨灰级程序员:干啥都不行。
说起优秀程序员的必备技能,我想大家都可以说很多,比如:数据结构、算法、数学、编程语言等等。但是,你可能会忽略了每一个程序员都应该掌握的技能:Linux。想一想,我们日常学习、求职、工作场景的中ÿ…

与空连接相关的几条命令
1)建立空连接:net use \\IP\ipc$ "" /user:"" (一定要注意:这一行命令中包含了3个空格) 2)建立非空连接:net use \\IP\ipc$ "密码" /user:"用户名" (同样有3个空格)3)映射默认共享:net use z: \\IP\c$ "密码" /u…

Windows客户端C/C++编程规范“建议”——宏
6 宏 6.1 减少宏的使用 等级: 【建议】说明:宏的使用,将使得调试变得麻烦。所以在设计和使用宏的时候,请确保宏的逻辑是阅读者不会去关心细节的行为。6.2 宏定义中字母需大写 等级: 【必须】说明:为了醒目…

Struts2中通配符的使用
1、准备工作 新建一个JavaWeb项目HelloWord,导入Struts2的.jar包,在Web.xml下配置Struts2的监听,在src下添加Struts2的配置文件struts.xml;将该项目部署到服务器(Tomcat)上,运行检查项目是否部署成功和其他错误&#x…
关于Spark NLP学习,你需要掌握的LightPipeline(附代码)| CSDN博文精选
作者 | Veysel Kocaman, Data Scientist & ML Researcher ANKIT CHOUDHARY翻译 | 赵春光校对 | 申利彬来源 | 数据派THU(*点击阅读原文,查看作者更多精彩文章)【导读】Pipeline具体来说是一个多阶段的序列,每个阶段由一个Transformer或者…

网络编程--ftp客户端的实现(c#版)
.net2.0对ftp有了一个很好的封装,但是确容易让人忽略ftp的真正内部实现,下面是我实现的ftp客户端的功能,其主要步骤是这样的:1、创建一个FtpWebRequest对象,指向ftp服务器的uri 2、设置ftp的执行方法(上传,下载等) 3、给FtpWebReq…

Windows客户端C/C++编程规范“建议”——文件
7 文件 7.1 正确使用#include 等级:【推荐】 说明:#include <>和#include “”导致编译器在搜索文件时,搜索的路径顺序不同。所以需要正确使用#include,以避免包含错了头文件。 语法形式操作带引号的形式预处理器按以下…
让你的网站支持 Emoji
SegmentFault有用户提出要支持Emoji表情输入,就研究了一下: 要记得备份数据库。 首先Mysql数据库在5.5.3之后开始支持utf8mb4字符集,所以mysql版本是5.5.3+的都可以设置让数据库存储Emoji表情,如果你的应用有移动端的&…

Windows客户端C/C++编程规范“建议”——变量和常量
8 变量和常量 8.1 尽量不要使用全局变量 等级: 【要求】说明:全局变量的滥用和goto的滥用一样,都是一种灾难。它将使得逻辑变得难以调试和控制。8.2 不涉及外部使用的全局变量需要使用static关键字修饰 等级: 【要求】说明&#…
机器学习模型五花八门不知道怎么选?这份指南告诉你
作者 | LAVANYA译者 | 陆离编辑 | 夕颜出品 | AI科技大本营(ID: rgznai100)【导读】在本文中,我们将探讨不同的机器学习模型,以及每个模型合理的使用场景。一般来说,基于树形结构的模型在Kaggle竞赛中是表现最好的&…

WinAPI: FlattenPath、WidenPath
不管什么曲线命令, 到来路径中都会变成 Bezier 线; 也就是说路径中只有直线和 Bezier 线.FlattenPath 和 WidenPath 都能够把路径中的 Bezier 线转换为近似的直线; 不同的是: 用 WidenPath 转换后貌似加宽了线, 其实它是转换成了一个包围路径的新路径(类似区域).本例效果图:代码…

Android - 小的特点 - 使用最新版本ShareSDK手册分享(分享自己定义的接口)
前太实用Share SDK很快分享,但官员demo快捷共享接口已被设置死,该公司的产品还设计了自己的份额接口,这需要我手动共享。 读了一堆公文,最终写出来,行,废话,进入主题。 之前没实用过ShareSDK分享…
结合Flink,国内自研,大规模实时动态认知图谱平台——AbutionGraph |博文精选
作者 | Raini出品 | 北京图特摩斯科技 (www.thutmose.cn)(*点击阅读原文,查看作者更多精彩文章)Flink:目前最受关注的大数据技术,最活跃 Apache 项目之一。AbutionGraph:北京图特摩斯科技自研的…

Windows客户端C/C++编程规范“建议”——风格
9 风格 9.1 优先使用匈牙利命名法 等级: 【推荐】说明:该方法由微软总设计师设计。Windows上编程最好遵从该标准。详细介绍见:http://zh.wikipedia.org/wiki/%E5%8C%88%E7%89%99%E5%88%A9%E5%91%BD%E5%90%8D%E6%B3%959.2 变量名结合使用匈牙…

使用GIF(仅限Delphi2007)
-----------uses GIFImg; procedure TForm1.FormCreate(Sender: TObject); begin // 先在窗体上放一个 TImage 组件:Image1; Image1.Picture.LoadFromFile(C:\Example.gif); // AnimationSpeed 设定动画速度,值越大,速度越快…

使用Depth Texture
使用Depth Textures: 可以将depth信息渲染到一张texture,有些效果的制作会需要scene depth信息,此时depth texture就可以派上用场了。 Depth Texture在不同平台上有不同的实现,并且原生的支持也不一样。 UnityCG.cgin…

Exchage 2007 Client Application Functions(2) -- 如何收取邮件
上一篇介绍的Exchange2007客户端程序中怎么发送邮件。现在,我来简单介绍一下怎么收取邮件。来看代码:publicHashtable GetAllMails(DateTime StartDate, DateTime EndDate) { try { if (null this.m_esb) …

VC开发Windows客户端软件之旅——前言
从第一次拖着行李入京找活,至今已工作若干年了。这些年一直追逐自己的梦想,跑过三个城市,换了三份工作,认识了很多业内的朋友。和朋友们闲聊时,发现很多人都已经不再做客户端软件了。有的转去做管理,有的转…
代替Mask R-CNN,BlendMask欲做实例预测任务的新基准?
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Hao Chen、Kunyang Sun、Zhi Tian、Chunhua Shen、Yongming Huang、Youliang Yan译者 | 刘畅编辑 | Jane出品 | AI科技大本营(ID:rgznai100)【导读】实例分割是…

如何让ie 7 支持box-shadow
box-shadow是一个很好用并且也常用的css 3属性,但是,如果我们要保证它能在ie 8及更低的版本下运行的话,需要借助一些其他的插件或文件。在这里我主要讲一下,如何用PIE.htc来解决ie 7不支持box-shadow。 代码如下: <…
拥有AI「变声术」,秒杀了多年苦练的模仿艺能
「免费学习 60 节公开课:投票页面,点击讲师头像」作者 | Daniel Chen,爱奇艺资深研发工程师 出品 | AI科技大本营(ID:rgznai100)【导读】什么是Voice Conversion(VC)?它有…
服务器架设笔记——编译Apache及其插件
之前一直从事Windows上的客户端软件开发,经常会处理和服务器交互相关的业务。由于希望成为一个全栈式的工程师,我对Linux上服务器相关的开发也越来越感兴趣。趁着年底自由的时间比较多,我可以对这块做些技术研究。虽然这些知识很基础也很老&a…

Silverlight 2中多语言支持实现(上)
引言 最近项目要在Silverlight 2应用程序中实现本地化,原以为这个过程非常简单,却没想到实现的时候一波三折,好在结果还算不错。需求是这样的,用户第一次访问的时候,默认为英文,当用户选择一种显示语言后&a…