qwb0614

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  187 随笔 :: 0 文章 :: 0 评论 :: 2048 阅读

第十章 变量

 

 隐式声明可能带来错误。

  应该尽量避免隐式声明(问题:python中无法避免隐式声明);遵循良好的命名规则并经常检查。

 

 变量初始化策略
 在声明时初始化。

 第一次使用时初始化。

 理想情况下,在第一次使用时生命并初始化变量。

 可能情况下使用final和const。

 特别注意计数器、累加器。

 在类的构造函数中初始化其成员。

 检查是否需要重新初始化。

 由编译器初始化所有变量。

 注意编译器的警告信息。

 如果用输入数据初始化变量,记得检查输入信息合法性。

 使用内存访问工具检查指针是否错误。

 程序开始时将工作内存初始化为特定值,已检查可能的错误。

 

“攻击窗口”:两次引用同一变量中间的间隔期间,变量可能被修改。

  为了减少“攻击窗口”,尽量使变量局部化;减小变量引用之间的跨度;减少变量存活时间,理想的存活时间为第一次引用到最后一次引用。

 减小变量作用域的一般原则:

 循环变量应该在循环开始中再定义,即for(int i=0; …; …)而非一开始就定义一个i。

 将相关联的、涉及同一些变量的代码放在一起。必要的话,抽出来作为一个子程序。

 采用最严格的可见性,需要的话再进行拓展。

 

 变量的持续性:有些时候变量已经“死亡”,但引用时仍然返回原值,使人误以为没有错误。

  应该:

 用调试代码或断言检查错误的变量取值。

 抛弃变量时设定其为不合理的值,如delete指针后将指针设为null。

 编写代码时假定其无持续性。

 养成使用变量前声明并初始化变量的习惯。

 

 绑定时间:在编写时绑定(硬编码)不灵活、难拓展。应该晚绑定。

 晚绑定时间:

 在编译时绑定:如宏定义、const、具名常量。

 加载时:从外部数据源读取数据。

 对象实例化时。

 调用函数时。

 

 数据结构和处理数据的控制结构可以一一对应。顺序数据,如若干个不同数据,对应顺序结构。选择数据结构对应选择结构。迭代式数据结构,如容器、文件,对应循环结构。

 

 一个变量只应有一个功能,避免隐含含义。

 

posted on   嘎嘎鸭1  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示