今天被同事发现一个编程错误,一个局部变量,因为将其指针传递了太多层,里面已经搞不清,把它当成堆的变量进行cache,幸好他眼尖,避免了这一严重的bug。
不过今后应该如何避免这一问题呢。我首先想到的是,以后如果是栈上的变量向下传,就传引用,如果是堆上的变量向下传,就传指针。不过这一想法还不行,因为有时候是在一个framework里做,或者和别人的代码一起协作,人家的代码可能并不会按这个规范来。后来,我想起之前在《软件随想录》里看到的关于匈牙利命名法的文章,完全可以这样用嘛,如果是一定要向下传栈上变量的指针,就把它命名为localXXX之类的,看着就一目了然了。
分享到:
相关推荐
为了分清变量的作用域,命名中对全局变量、局部变量和参数应该有所区别,所以我们需要对匈牙利表示法做一些补充,以适应Win32汇编的特殊情况,下面的补充方法是笔者提出的,读者可以参考使用: ● 全局变量的定义...
类型名称和方法名称使用PascalCasing书写方法参数和局部变量使用camelCasing书写禁止使用匈牙利标记法或者在标识符前面增加类型标识禁止使用大写标识常量或者只读型变量避免使用缩写。例外情况:常用名称的缩写,如...
12.13 复习匈牙利命名法 12.14 函数重载 12.15 函数指针 12.16 运算符重载 12.16.l 运算符和函数调用的重载 12.16.2 编写自己的重载运算符 12.17 从结构到模板 12.17.l template关键字 12.17.2 模板...
2 可以把变量保存在局部程序块中吗? 1. 3 什么时候用一条switch语句比用多条if语句更好? 1. 4 switch语句必须包含default分支吗? 1. 5 switch语句的最后—个分支可以不要break语句吗? 1. 6 除了在for语句中...
FreeMarker对空值的处理非常严格,FreeMarker的变量必须有值,没有被赋值的变量就会抛出异常,因为FreeMarker未赋值 的变量强制出错可以杜绝很多潜在的错误,如缺失潜在的变量命名,或者其他变量错误.这里所说的空值,...
1.2 可以把变量保存在局部程序块中吗? 9 1.3 什么时候用一条switch语句比用多条if语句更好? 9 1.4 switch语句必须包含default分支吗? 10 1.5 switch语句的最后一个分支可以不要break语句吗? 11 1.6 除了在for...
1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...
1.3.2 命名空间 10 1.3.3 C#语法格式要点 10 1.3.4 变量 12 1.3.5 类型推断 12 1.3.6 变量的作用域 13 1.3.7 常量 16 1.3.8 流程控制 16 1.3.9 字符串常见操作 21 1.3.10 几个常用的数学函数 27 1.4 .NET的面向对象...
命名空间 1.30如何判断哪些标识符可以使用,哪些被保留了? 初始化 1.31 对于没有显式初始化的变量的初始值可以作怎样的假定?如果一个全局变量初始值为“零”,它可否作为空指针或浮点零? 1.32 下面的代码为...
1.23 能否声明和传入数组大小一致的局部数组,或者由其他参数指定大小的参数数组? 13 1.24 我在一个文件中定义了一个extern数组,然后在另一个文件中使用,为什么sizeof取不到数组的大小? 13 声明问题 14 ...