夜里无聊,来扯个蛋吧

 1 if (FlagOn(DesiredAccess, FULL_WRITE_FILE_DESIRED_ACCESS))
 2 {
 3   XXXXXX;
 4 }
 5
 6
 7
 8 if (DesiredAccess & FULL_WRITE_FILE_DESIRED_ACCESS)
 9 {
10   XXXXXX;
11 }

这两段代码,功能上没有任何区别,但是你喜欢哪种写法。

如果有缘人看到的话,可以给我留个言,但是一定要写下原因,咱们可以讨论一下。

我喜欢第二种写法。

原因,执行效率上,二者几乎没有任何区别,

但是前提是编译器没问题,而且FlagOn它必须是个宏,(事实上它确实是个宏,但是没有任何东西能保证一直或者说永远是这样,而且它的命名规则是函数型的)

(宏的标准命名规则是全大写,Windows下,习惯把API函数的命名写成驼峰式,所以一打眼这个东西的话,容易让人误解可能是个函数)

只要编译没问题,执行方面,它们的效率就是相同的,(这里是有条件的阿)

最差的情况下,如果编译出现问题,或者FlagOn不是宏的话,那么肯定是第二种写法执行速度更快。

好了,代码还有个可读性的问题。

这两个,哪个可读性更好呢,我认为还是第二个,

首先,我们分析这块代码的元素阿,

第一行,包括一个关键字,两个元素,加上一个宏,

第八行,包括一个关键字,两个元素,加上一个运算符,

差别就在宏的可读性和运算符的可读性,哪个更好了,

我个人认为,运算符的可读性更好,

因为一个符号,程序员看到它之后,条件反射地就会想到它的功能,甚至肌肉性地,根本不用经过大脑,就知道它是做什么的,

就好比, + - * / 四则运算,的运算符,只要上过几年小学的孩子,一般都不会用错,而且他也不需要考虑这运算符有什么用处,很自然,他就知道,

上了初中,高中的孩子,肯定不会把 + 当成 - ,这就是肌肉记忆。

(像 &~   |~ 这种复杂的组合运算符,目前不考虑,因为这本身不是难度很高的组合运算符计算)

而一个宏的识别难度,远不只几个运算符那种简单的量级而已,

首先,要么知道那个单词的意思,即便知道了单词的含义,还要去猜函数的含义,这是最好的情况,情况差一点的话,可能就要去看MSDN或者上网搜索了,

这些都解决了之后,大致可以知道这个宏的意思了之后,还要了解它的参数,这些都做到了之后,才能知道这里是要做什么,

有可能有人会说,对这个宏完全不了解的话,才会去查那么多乱七八糟的,如果知道它是做什么的,那么商量两步都可以省去了,

但是我想说,一个宏,几个字母,简单运算符,是1个字符,你看N个字母速度快,还是看1个字符速度快,

看了N个字母之后,还要反应一下组合起来它的含义,而看到运算符,基本上不需要反应时间,

最后,只要代码风格标准,运算符两边有空格,加上IDE代码高亮,我甚至可以一瞬间判断当前句的含义,

就是判断左边变量里面右边那些位是否存在,而,如果喜欢第一种写法,

乖乖,你从头读一下吧。

时间: 2024-10-12 09:52:21

夜里无聊,来扯个蛋吧的相关文章

Twitter裁员给初创企业的教训:步子迈大了,容易扯着蛋

Twitter刚发布的消息宣称已经完成8%的裁员目标,共336人.作为过去十年最具创造力的企业之一,Twitter的这次裁员除了热闹和伤感之外,还给我们带来了哪些教训呢? Twitter在下着一步愚蠢的臭棋?Twitter终将如那些专家此前所预言的那样会一败涂地?又或者说这将预示着Twitter正步入颓势,两旁虎视眈眈的竞争对手将开始对其地盘进行瓜分掠夺了呢? Twitter的教训 我认为以上都不对.我认为这次事件的教训是:该事件为风投行业的合理化敲响了一次警钟!作为一名风险投资人,我深知我们做

SEO高手在扯蛋?

真正的高手SEO你在扯蛋吗?当大家都很会扯的时候,高手扯得肯定比你疼,不是他们 蛋比较敏感,而是他们的确更用力. 当你说我是SEO时,高手肯定说现在我在做的是SEM. 当你说我是SEM时,高手肯定在说我现在在做 MKT. 你怒了:为什么你总走在我前面? 高手看着你无辜的眼神:因为你比我先说! 你说我做热词排名,高手说我在做长尾建设. 你说我在群发长尾链接,高手说我在做站内优化. 你在说我在做站内优化,高手说我在做整站架构. 你说我在做整站架构,高手说 我在做数据分析. 你说我在做数据分析,高手说

《新建文本文档》贾瑜

我的笔记本电脑出了点问题,苦笑不得.2010年花了6000元买的机器,重装了约7次系统,最后稳定在现在这个舆论口碑很差的VISTA系统.但我用了大概一年左右,再也没出过问题,虽然慢是慢了点,好在稳定,也就懒得换了.不过我最近发现了一个奇怪的现象——右键点击桌面,新建,文本文档.名为新建文本文档的文件,总会显示有1KB的占用空间,因为文档不是空白的,每个新建的文档,一打开就会写着“你好”两个字.起初我以为是电脑系统的彩蛋,于是找了计算机学院的师兄,他整了大半天也没弄清楚是怎么回事.因为也并不影响实

春节不打烊网友实测:京东物流谎言被戳破

春节物流不打烊成为各大电商快递公司彰显自身服务能力的市场展示手段,京东今年就为春节壕掷7600万元保证物流配送能力,但却被微博网友暴出京东配送员不友好的一幕. 送货员不愿送货,让消费者自提,消费者未能自提,结果配送员就以超出5公里为由强制退单而引起消费者的不满情绪,若在平时这也不算什么大事,但放在春节期间,特别是京东几次三番强调春节配送不打烊,问题的严重性就升级了.这让前几日集中宣传春节物流的京东脸上无光,而且近日有很多网友在微博上抱怨京东春节配送不给力,说好的春节不打烊并未能做到. 有一.两次

我的2014年总结-公司篇

昨天总结了下工作内容,但是其实感觉一年的内容根本无法用短短一篇文章就来讲述清楚,不过比起不总结.总结一下还是不错的. 今天准备把公司情况讲下,不管好坏.对错,总归会有借鉴之处. 我理解中的软件公司 我觉得我勉强可以算的上是创业吧,但是又感觉不像是创业,如果非要定位的话,我觉得我应该算是一半一半吧. 我觉得目前的软件公司可以有很多种分类,而我就占在产品的角度来叙述下吧. 我觉得从产品的角度考虑,软件公司分为两种:“做公众产品的公司”与“做业务系统的公司”两种公司. 所谓的“做公众产品的公司”是指类

Linux——Virtualenv和pip小探

转载自:http://mengzhuo.org/blog/virtualenv%E5%92%8Cpip%E5%B0%8F%E6%8E%A2.html 本文献给那些看着参差不齐的中文文档/教程,但还在坚持折腾以上两个工具的童鞋. 声明:本人也是菜鸟,真正的有用的概念解释,请参看官方文档,以下都是我的个人理解. virtualenv 这里是导言吗? 用过Python的同学,肯定会对Python及程序的版本之间经常更换的api感到痛苦不以.就拿我折腾的Django来说吧,公司服务器上跑的是Django

暑假集训总结

总结这一个暑假呐,就是被DP虐哭了的一个月,这TM就是一门玄学,没有一定的脑洞,怎么可能学好DP,用抽象的思维将一个大问题拆分成多个阶段决策问题,然后表示每个阶段的状态,再在每个状态之间进行决策的选择.题做多了之后才发现,DP的过程其实就是将状态你前面记录的过程记忆下来,然后后面你进行决策的时候以这个决策为依据进行决策. 初来的那几天 7.21就来学校,一个月的期末复习把以前学的知识忘了不少,来的几天先把以前的题做了一遍,把以前的知识点捡起来,以前做的急没来得及消化,现在又有了很多很深刻理解.话

iOS开发之MVVM在项目中的应用

今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦~). 由于本人项目经验有限,关于架构设计方面的东西理解有限,我个人对MVVM的理解主要是借鉴于之前的用过的MVC的Web框架~在学校的时候用过ThinkPHP框架,和SSH框架,都是MVC的架构模式,今天MVVM与传统的MVC可谓是极为相似,也可以说是兄弟关系,也就是一家人了. 说到架构设计和团队

忘记数据库

忘记数据库 前面写了这么多,很大程度上就是为了这一章做准备.面向对象或者领域驱动,最重要的一点就是要忘记数据库!我花了很长很长的时间,才理解了这一点,从而真正的迈向一个崭新的天地:而后,我又花了很长很长的时间,才勉强做到这一点:我希望,有一天,这将不再是一个问题,我不需要考虑这一点…… 为什么业务层这么薄 三层架构流行起来之后,我们很清楚的知道UI层负责页面交互并调用下一层,也知道DAL层就是和数据库打交道.但BLL层?什么才算是“业务逻辑”?有各种各样的解释,但这些不都是sql做的么?对于绝大