zoukankan      html  css  js  c++  java
  • 《代码大全2》阅读笔记05Chapter 10 General Issues in Using Variables

    Chapter 10 General Issues in Using Variables
     使用变量的一般事项

     
    10.1 Data Literacy 数据认知
    10.2 Making Variable Declarations Easy
     轻松掌握变量定义

    ·Implicit Declarations 隐式声明
    1. 有些语言是支持隐式声明。例如VB中使用一个未声明的变量时,编译器会自动为你声明改变量。
    2. 隐式变量声明对于任何一个语言来说都是最具危险性的特性之一。
    3. 关闭隐式声明,例如VB中Option Explicit。
    4. 声明全部的变量
    5. 遵循某种命名规则
    6. 检查变量名


    10.3 Guidelines for Initializing Variables
     变量初始化原则

    不恰当的变量初始化所导致的一系列问题都源于变量的默认初始值与你的预期不同。会有以下问题:
    1. 从未对变量赋值。他的值只是程序启动时变量所处内存区域的值。
    2. 变量值已经过期了。变量在某一个地方曾经被赋值,但该值已经不再有效。
    3. 变量的一部分被赋值,而另一部分没有。
    以下给出一些避免产生初始化错误的建议:
    1. 在声明的时候初始化。
    2. 在靠近变量第一次使用的位置初始化它。VB等一些语言不支持在声明的同时进行初始化。
    3. 在理想情况下,在靠近第一次使用变量的位置和定义改变量。
    4. 在可能的情况下使用final或者const
    5. 特别注意计数器和累加器
    6. 在类的构造函数里初始化该类的数据成员
    7. 检查是否需要重新初始化
    8. 一次性初始化具名变量;用可执行代码来初始化变量。
    9. 使用编译器设置来自动初始化所有变量
    10. 利用编译器的警告信息
    11. 检查输入参数的合法性
    12. 使用内存访问检查工具来检查错误的指针
    13. 在程序开始的时候初始化工作内存

    10.4 Scope 作用域
    “作用域”可以看做是一种衡量变量的知名度的方法。
    作用域或者可见性(Visibility)是指 变量在程序内的可见和可引用的范围。
    ·Localized References to Variables
     使变量引用局部化
    那些介于同一变量多个引用点之间的代码可称为“攻击窗口(window of vulnerability)”。可能会有新代码加到这种窗口中,不当

    地修改了这个变量,或者阅读代码的人可能会忘记改变量应有的值。一般而言,把一个变量的引用局部化,即把引用点尽可能集中在

    一起总是一种很好的办法。
    衡量一个变量的不同引用点的靠近程度的一种方法是计算改变量的“跨度span”。
    ·Keep Variables “Live” for as Short a Time as Possible
     尽量可能缩短变量的“存活”时间
    存活时间Live Time,即一个变量存在期间所跨越的语句总数。
    如果你用跨度和生存时间的概念来考察全局变量,就会发现全局变量的跨度和生存时间都很长----这也是要避免使用全局变量的好理

    由之一。
    ·General Guildelines for Minimizing Scope
     减少作用域的一般原则
    1. 在循环开始的时候在去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始初始化这些变量。
    2. 直到变量即将被使用时再为其赋值。
    3. 把相关的语句放到一起
    4. 把相关的语句提取成单独的子程序
    5. 开始时采用最严格的可见性,然后根据需要扩展变量的作用域。
    ·Comments on Minimizing Scope
     有关缩小变量作用域的说明


    10.5 Persistence 持续性


    10.6 Binding Time 绑定时间


    10.7 Relationship Between Data Types and Control Structures

     数据类型和控制结构之间的关系
    三种类型的数据和相应控制结构之间的关系
    1. 序列类型数据翻译为程序中的顺序语句
    2. 选择型数据翻译为程序中的If和Case语句。
    3. 迭代型数据翻译成程序中的for,while, repeat等循环结构

    10.8 Using Each Variable for Exactly One Purpose
     为变量指定单一用途
    1. 每一个变量只用于单一用途
    2. 避免让代码具有隐含含义
    3. 确保使用了所有已经声明的变量

    Key Points 要点
    1. 数据初始化过程很容易出错,所以请用本章描述的初始化方法来避免由于非预期的初始值而造成的错误。
    2. 最小化每个变量的作用域。把同一变量的引用点集中在一起。把变量限定在子程序或类的范围之内。避免使用全局数据。
    3. 把使用相同变量的语句尽可能集中在一起。
    4. 早期绑定会减低灵活性,但有助于减少复杂度。晚期绑定可以增加灵活性,同时增加复杂度。
    5. 把每一个变量用于唯一的用途。

    Desire has no rest.
  • 相关阅读:
    [HNOI2008]玩具装箱TOY
    [洛谷P3628] [APIO2010]特别行动队
    [洛谷P2698] [USACO12MAR]花盆Flowerpot
    [SCOI2010]股票交易
    [洛谷P3957] 跳房子
    [洛谷P1822] 魔法指纹
    [NOI2003] 文本编辑器
    平衡树小结
    C++异常处理
    常用颜色的RGB值
  • 原文地址:https://www.cnblogs.com/samcn/p/1413970.html
Copyright © 2011-2022 走看看