对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)

96掌门师兄 2013-04-09 03:41:47
加精
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

但是我觉得有些局部变量不一定要在函数开始的时候一次性定义。比如:

void Test()
{
..... //其他代码
if(false)
{
char szTmpBuf[512]; //

}
}
像szTmpBuf这样的。是否要在函数开始出一次性定义,只在if里定义,当条件不满足的时候,可以少512的内存并减少分配空间的CPU时间,且不是更好。

还有,如果我不一次性创建对象,如:
char szTmpBuf[512];

....//干点别的什么事情代码

int iSum = 0;

这样会不会比一次性定义在效率上低?求大牛!

另外,问一下,大家一般编码的时候,字符串数组,对象数组如何命名呢?


...全文
13925 137 打赏 收藏 转发到动态 举报
写回复
用AI写文章
137 条回复
切换为时间正序
请发表友善的回复…
发表回复
jenrya 2015-01-07
  • 打赏
  • 举报
回复
C语言什么时候可以变量随处定义了?C++不是有提前的说法吗?编译时会先把你到处乱定义的变量提前。
yamkou 2014-10-24
  • 打赏
  • 举报
回复
真相帝来了!! 这个是为了对早期风格的C代码做兼容的。现在国内大多数还是在使用C89那个不完善的编译器。C99的新功能都不建议使用,因为对于大型项目来说高而新的编程技巧是用来挑战可读性,挑战二次开发人员的效率的。
zcm_xh2008 2013-07-01
  • 打赏
  • 举报
回复
引用 楼主 xiaoxiaoyu85 的回复:
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。 但是我觉得有些局部变量不一定要在函数开始的时候一次性定义。比如: void Test() { ..... //其他代码 if(false) { char szTmpBuf[512]; // } } 像szTmpBuf这样的。是否要在函数开始出一次性定义,只在if里定义,当条件不满足的时候,可以少512的内存并减少分配空间的CPU时间,且不是更好。 还有,如果我不一次性创建对象,如: char szTmpBuf[512]; ....//干点别的什么事情代码 int iSum = 0; 这样会不会比一次性定义在效率上低?求大牛! 另外,问一下,大家一般编码的时候,字符串数组,对象数组如何命名呢?
我在HW从没听说HW的编码习惯是要把函数中用到的变量在函数开头一次性定义好,反而HW的编码规范文档中规定是局部变量的定义在用到的地方开始定义,便于阅读,当然有一组局部变量,而且都在不远就能用到的话,为了美观阅读可以全部放在一个地方定义在一起。。。当然这不是原话,大概意思而已。。。
就是那个党伟 2013-04-28
  • 打赏
  • 举报
回复
莫非不是二楼终结的节奏?
redeyerabbit 2013-04-22
  • 打赏
  • 举报
回复
各有优劣吧,我觉得,就像camelName 和 unix_name 及mfc的m_pXXX一样。很多C++大佬提倡使用时声明,这样带来的问题是有时候变量的定义无意识的掩盖了前面的定义,嗯,另外还有可能写出又臭又长的程序(指我自己,:-(,)反过来,在前面就定义,强迫你提前思考程序的结构,一家之言。
乐达小子 2013-04-17
  • 打赏
  • 举报
回复
做二次开发的时候还遇到过拼音命名
wjlsmail 2013-04-17
  • 打赏
  • 举报
回复
C 编译器的局限
wjlsmail 2013-04-17
  • 打赏
  • 举报
回复
C 编译器的局限
K-dash 2013-04-17
  • 打赏
  • 举报
回复
据说不用SVN还用CVS呢?
K-dash 2013-04-17
  • 打赏
  • 举报
回复
我同事是来自华为的,他说确实是如此,但基本上都是用得上的,少有三五个才是临时变量
天天天然 2013-04-17
  • 打赏
  • 举报
回复
我去年还在华为的时候怎么没这条规定,这是你们部门自己的规定吧。。
xiaocongzhi 2013-04-17
  • 打赏
  • 举报
回复
任何习惯都有利有弊
yjukh 2013-04-17
  • 打赏
  • 举报
回复
不管放哪儿,都是在栈上分配的,占的空间是一样的,只是放的位置不同,作用域不一样。 我更倾向于放在if下面,说明这个变量只在这里使用。
u010318793 2013-04-16
  • 打赏
  • 举报
回复
这样比较好啊,说明在编码的时候对整个算法非常胸有成竹。
小鸟向前飞 2013-04-16
  • 打赏
  • 举报
回复
各有各的好处吧 开头定义好 代码排版也清晰 在使用中定义 能节省内存提高效率 但是读代码可能会比较费劲 很多C++书上都建议用的时候再定义
yuandaopian2012 2013-04-16
  • 打赏
  • 举报
回复
但是我觉得有些局部变量不一定要在函数开始的时候一次性定义。
li_wei_ying0809 2013-04-16
  • 打赏
  • 举报
回复
华为C++规范不是这么说的
zhangsan_123_abc 2013-04-16
  • 打赏
  • 举报
回复
引用 98 楼 fjb2080 的回复:
国内喜欢搞教条主义
中国特色!
akmm88 2013-04-16
  • 打赏
  • 举报
回复
我一般用时才定义...
RedWolf1999 2013-04-15
  • 打赏
  • 举报
回复
不要盲目崇拜觉得华为的代码就应该好或不好,我的亲身亲历它们的代码滥的跟狗屎一样。
加载更多回复(117)

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧