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

对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

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

void Test()
{
    ..... //其他代码
    if(false)
    {
       char szTmpBuf[512]; //
       
    }
}
像szTmpBuf这样的。是否要在函数开始出一次性定义,只在if里定义,当条件不满足的时候,可以少512的内存并减少分配空间的CPU时间,且不是更好。

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

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

int iSum = 0;

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

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



------解决思路----------------------
哎,无奈用的C,必须在开始定义好...
------解决思路----------------------
引用:
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

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

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

不管有没有进入if语句,这512个字节都会在栈上分配。
------解决思路----------------------
呵呵,对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)解决方法
------解决思路----------------------
命名就和char szTmpBuf[512];差不多

做二次开发的时候还遇到过拼音命名的对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)解决方法
------解决思路----------------------
记得effctive c++上提到不要过早定义变量,使用的时候才去定义
------解决思路----------------------
对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)解决方法估计编写华为编程规范的人是搞C的。C就是要开始就定义好。我们老大对我使用时定义变量也是不看好。哎~
------解决思路----------------------
引用:
引用:
命名就和char szTmpBuf[512];差不多

做二次开发的时候还遇到过拼音命名的
呵呵,那是囧的很。。。

但是数组。。。。不是最好要区别一下吗? 有的加了ar有的用g ,g_不是全局变量的吗?那不就二义性了。。。


真的,不知道是那时候没插件还是咋的,全都顶格写...
------解决思路----------------------
引用:
引用:引用:
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

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

void Test()
{
    ..... //其他代码
    if(false)
    {
   ……

编译器没法去优化这段代码。
------解决思路----------------------
这个无绝对吧.
我认识第一种写法好的。看起来舒服/易维护。这是我的风格.
------解决思路----------------------
引用:
记得effctive c++上提到不要过早定义变量,使用的时候才去定义

像szTmpBuf这样的。是否要在函数开始出一次性定义,只在if里定义,

尤其是你的命名还不能让人一下明白意图
------解决思路----------------------
引用:
引用:引用:
引用:引用:
在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

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

void ……

这个与编译器有关。在函数开始时就分配,可以加快函数执行速度。我觉得vs会这么做。
------解决思路----------------------
引用:
引用:引用:
引用:引用:
引用:引用:
在华为的编码习惯中,说一个函数中使用到的变量,要一次……

不能肯定。问你boss

一次性写在函数开始,我觉得没必要,影响代码逻辑。
------解决思路----------------------
普通C语言的语法要求必须要在函数开始处定义完该函数所有的变量,但现在C++就不再要求了,所以关于效率应该和编绎器有关,而不是在哪定义变量
------解决思路----------------------
引用:
引用:引用:
引用:引用:
引用:引用:
在华为的编码习惯中,说一个函数中使用到的变量,要一次……


数组不管嵌套在几个 {  中定义,其在栈上的空间都是一进入函数就确定分配了的

也不存在优化之说,编译器在编译期就已经计算好每个函数局部变量的占用的空间大小,进入函数的代码总是是push EBP ; mov EBP,ESP; sub ESP,大点儿的数组无非sub ESP减得多点,仅此而已
------解决思路----------------------
为了C代码兼容性吧?
------解决思路----------------------
楼主不懂汇编,可以理解.对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)解决方法
------解决思路----------------------
一般使用英文进行命名,要是拼音的话不一定你会想到那个拼音所代表的的词。。。最可恶的是意向词,什么  左定义  写个zd  ,这要我怎么想---
------解决思路----------------------
C 中是不支持随用随声明的,老编译器都不支持。现在好多新的才可以了。
------解决思路----------------------
   华为用C多吧,所以要求在开始定义好。C++一般是用时再定义,这样代码清晰,利于维护,至于这方面效率,一般可以忽略不计的。
------解决思路----------------------
对华为的编码规范很无语……
------解决思路----------------------
按自己的风格(或公司统一的风格)写就好了,不必纠结于这点效率(估计这两者效率没什么区别),把自己的代码写好才是关键的呢。

------解决思路----------------------
sadgas点噶发挥第三方工具和认同
------解决思路----------------------
引用:
那么,大家一般编码的时候,字符串数组,对象数组如何命名呢?

拼音和英语结合。
------解决思路----------------------
还有一个好处:
那就是 goto. 

全部在开头定义变量后, goto可以满天飞,都不怕跳过了变量
------解决思路----------------------
如果C的话没问题,C++的话就不合适了。

写在开头那么类类型的局部变量都会构造+析构一次的

随用随声名的话,提前return是不会构造+析构下面没执行到的对象的。
------解决思路----------------------
看看讨论意见。
------解决思路----------------------
看不懂这些代码……
------解决思路----------------------
引用:
引用:在华为的编码习惯中,说一个函数中使用到的变量,要一次性在函数开头定义好。

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

void Test()
{
    ..... //其他代码
    if(false)
    {
       char szTmpBuf[512]; //
 ……
似乎不是这样。曾用过IAR的编译器,从生成的MAP文件看,不同的优化等级,会导致函数使用的栈深度不同。所以我感觉是否一次性分配出来和优化等级有关。
------解决思路----------------------
jiu kan kan 
------解决思路----------------------
你们难道没想过代码的可读性吗?把变量全部定义在函数开头的部分,是不是在阅读代码的时候,会方便一点呢??我猜的。。。
------解决思路----------------------
因为华为大部分的业务都是C作为开发语言的。
你应该也属于那些部门下。所以你的leader才会这么要求你的吧。

C和C++的习惯和书写规范是不大一样的。不能从其他语言的角度去评论这样写的好坏。
------解决思路----------------------
引用:
你们难道没想过代码的可读性吗?把变量全部定义在函数开头的部分,是不是在阅读代码的时候,会方便一点呢??我猜的。。。


    兄弟,反了吧。变量全部定义在函数开头的部分,反而不利于阅读代码,因为你随用随定义可以在你的眼睛所及范围就能看到变量定义。如果都在函数开头的部分定义变量,你得翻到前面才能看到变量定义。当前现在IDE的智能提示都很强大,但还是不如立即看到变量定义方便。
     
------解决思路----------------------
路过看看~~
------解决思路----------------------
对华为编码习惯中变量的定义风格的疑问(码农们来讨论一下吧)解决方法
------解决思路----------------------
刚开始,还不太懂
------解决思路----------------------
引用:
普通C语言的语法要求必须要在函数开始处定义完该函数所有的变量,但现在C++就不再要求了,所以关于效率应该和编绎器有关,而不是在哪定义变量


+1
------解决思路----------------------
c就是要求变量在开头都定义好,遵循下标准也没啥坏处