- 主题:所在的公司编码规范极不习惯
既然是规范,那我觉得定义true=0,false=-1,比要求true==xxx的问题要严重的多。
这么搞就是蓄意挖坑。
【 在 l0JQKA (-)__(-) 的大作中提到: 】
: 这几条严格来说都没问题,不知道喷的人什么心态。楼主的语言是C,古老编译器
上,不这么写很容易编译通过但运行出错。
: 尤其是第四条,C里面根本就没有boolean,谁知道true/false定义成什么,我就见
过true=0,false=-1的。
: 另外,1、2点,不管什么语言,我都会这么写,方便阅读的思维。因为!变量,很
容易让人想到变量是个bool值。人类的自然语言自然思维就是如果(变量 不等于
空)这样,而不是如果(非 变量)
--
FROM 101.81.86.*
你说的确实是现状。
但这个现状一般也说明了这个团队很弱鸡。
所以有没有道理不重要了,这点小规范只能解决弱鸡团队能犯的错误中的0.1%。
【 在 chiefmajia (马甲之王) 的大作中提到: 】
: 想什么现代编译器呢,
: 很多嵌入式系统用的都是陈年编译器
: 别老觉得人家一定蠢,肯定有其中的道理。
--
修改:lvsoft FROM 101.81.86.*
FROM 101.81.86.*
没有这个规范,但有广泛接受的习惯,这个就是事实上的规范。
你没特殊的理由,就别用偏离大众习惯的定义。
【 在 l0JQKA (-)__(-) 的大作中提到: 】
: 布尔值代表真假,没有一个规范,必须得要求真为1假为0。
--
FROM 101.81.86.*
正确的方式只有一种,错误有很多种,所以这不是boolean。
比如xxxcmp,小于0等于0大于0刚好分别对应对比的三个结果,这是符合直觉的定
义,完全没问题。到不如说,不用0那用啥更合适呢?
errno这里也类似。因为0和非零的概率是不等的。大部分情况下都是正常退出,小
部分是很多种错误中的一种。那么直觉上也是用0表示正常,非零表示具体的错误更
好。因为0比非零值地位要更特殊一点,不然你一样找不出更符合直觉的表达方式。
所以这些例子并不会造成反直觉,不算是挖坑。但明明是boolean的场合,给你来个
if(xxx==true)和if(xxx)的逻辑刚好相反,这个就是埋雷了。
【 在 ArchLinux (a lightweight and flexible distribution) 的大作中提到:
】
: 这样的坑其实很多。UNIX类系统里面程序正常退出返回值就是0,非0就是异常退
出。strcmp, memcmp 比较的内容相等时返回0. 还有LLVM里面有好些函数没出错的
时候也是return false. 不过这几种情况基本上都是正确的方式只有一种,错误有
很多种。
--
修改:lvsoft FROM 101.81.86.*
FROM 101.81.86.*
对,true=-1都比那个定义好。
【 在 adoal (阿豆) 的大作中提到: 】
: 在我印象中见过的各种实现里要么true=1 false=0
: 要么true=-1(二进制全1) false=0
: true=0 false=-1就很奇怪了
--
FROM 101.81.86.*
多人协作的基础,是要尽量降低歧义,减少出错的概率。
代码规范是服务于此的目的,定义false=0也是一样的目的。
并不是说你有了代码规范所以就足够了,可以随便搞了。因为是人就有可能出错,而
且有一万种出错的姿势。区区几条规范根本就cover不住的。
【 在 l0JQKA (-)__(-) 的大作中提到: 】
: 所谓的代码规范不就是为了防止小部分偏离大众习惯的吗,也因此后来的语言大都
引入了布尔型,但是c是改不过来了,java编程规范里就正好相反,推荐if 变量或if
!变量
: :
--
修改:lvsoft FROM 223.104.212.*
FROM 101.81.86.*