Tag: 编码风格

如何处理条件初始化,这是一个好习惯吗?

我试图在几种可能的做法之间做出决定。 比方说,我的函数有许多if()块,它们处理数据,这对它们来说是唯一的。 我应该声明并初始化块内的本地(用于块)数据吗? 这是否具有运行时性能成本(由于堆栈中的运行时分配)? 或者我应该在函数入口处声明和/或初始化所有变量,以便在一个可能更快的操作块中完成? 或者我应该在不同的函数中分隔if()块,即使它们只有几行而且在程序中只使用了一行? 或者我是否正在开发另一种更清洁的选择? 这个问题是否以当前的一般forms回答?

需要为函数添加前缀(void)

我最近遇到了一个相当不寻常的编码约定,其中对返回“void”的函数的调用以(void)为前缀。 例如 (void) MyFunction(); 它与函数调用有什么不同: MyFunction(); 它有没有任何优势,或者它是另一个不必要但有某种编码约定?

为什么一些有经验的程序员会在变量之前写出比较值?

可能重复: 如何检查等于? (0 == i)或(i == 0) 为什么在C#中经常会看到“null!= variable”而不是“variable!= null”? 我一直在看一个奇怪的教程以及一些DirectX代码,并注意到许多有经验的C ++程序员用以下方式编写表达式: ( == ) 而不是我的传统智慧似乎更喜欢: ( == ) 例如if (NULL == ptr)而不是if (ptr == NULL) 。 我更喜欢第二种选择,如果没有其他原因选择前者,我的理由是变量似乎是表达式的“接收”端。 但我怀疑前者用于避免通过使用=而不是==无意中将常量的值赋给变量。 这是对的吗?

为什么“typedef struct foo foo;”被认为有害?

在C vs C ++中的typedef和struct命名空间中 ,其中一条注释似乎暗示暴露某些struct foo比使用typedef更好… typedef struct foo foo; …然后在整个API中使用foo而不是struct foo 。 后一种变体有任何缺点吗?

你更喜欢“if(var)”还是“if(var!= 0)”?

我已经用C语言编程了几十年了。 在某个地方,我决定不再想写: if (var) // in C if ($var) # in Perl 当我的意思是: if (var != 0) if (defined $var and $var ne ”) 我认为部分原因是我有一个强类型的大脑,在我看来,“if”需要一个布尔表达式。 或者也许是因为我使用Perl这么多,Perl中的真相和虚假就是这样一个雷区。 或者也许只是因为这些天,我主要是一名Java程序员。 你有什么偏好?为什么?

do-while-false循环是常见的吗?

前一阵子我改变了我处理c风格错误的方式。 我发现很多代码看起来像这样: int errorCode = 0; errorCode = doSomething(); if (errorCode == 0) { errorCode = doSomethingElse(); } … if (errorCode == 0) { errorCode = doSomethingElseNew(); } 但最近我一直这样写: int errorCode = 0; do { if (doSomething() != 0) break; if (doSomethingElse() != 0) break; … if (doSomethingElseNew() != 0) break; } while(false); 我已经看到很多代码在出现错误后没有执行任何内容,但它始终以第一种方式编写。 有没有其他人使用这种风格,如果你不这样做,为什么? […]

无限循环 – 顶部还是底部?

本着问题的精神, 你的循环测试是在顶部还是底部? : 你使用哪种风格进行无限循环,为什么? 而(真){} do {} while(true); for(;;){} label:… goto label;