4-变量与数据类型(使用变量的一般问题)

来源:互联网 发布:三菱gxworks2软件下载 编辑:程序博客网 时间:2024/06/04 19:13

4-变量与数据类型(使用变量的一般问题)

4.1 数据认知 Data Literacy

image

代码大全8.1

4.2 轻松掌握数据定义 Making Variable Declarations Easy

  • 关闭隐式声明 比如在VB中可以用Option Explicit语句来强迫程序员在使用变量之前做出声明
  • 声明全部的变量 这样做虽然不会捕捉到所有错误,但至少能发现其中的一部分
  • 遵循某种命名规则

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

4.3.1 常见问题

  • 从未对变量赋值. 它的值只是程序启动时变量所处内存区域的值.
  • 变量的值已过期. 变量在某个地方曾经被赋值,但该值已经不再有效.
  • 变量的一部分被赋值,而另一部分没有.

4.3.2 变量初始化原则

  • 在声明变量的时候初始化:在声明变量的同时初始化是一种非常方便的防御式编程方法.
float studentGrades{MAX_STUDENTS}={0.0}
  • 在靠近变量第一次使用的位置初始化它

image

  • 特别注意计数器和累加器
  • 在类的构造函数里初始化数据成员
  • 检查是否需要重新初始化
  • 一次性初始化具名常量,用可执行代码初始化变量.
  • 使用编译器设计来自动初始化所有变量
  • 利用编译器的警告信息
  • 检查输入参数的合法性
  • 使用内存访问工具检查错误的指针
  • 在程序开始时初始化工作内存

4.4 作用域 Scope

4.4.1 使变量引用局部化–减小跨度

  • 把引用点尽可能集中在一起
  • Its always a good idea to localize references tovariables by keeping them close together,缩小windowof vulnerability(攻击窗口)
  • When you keep references to variables close together,you enable the person reading your code to focus onone section at a time.
  • If the references are far apart, you force the reader toump around in the program

4.4.2 尽可能缩短变量的存活时间

与跨度不同的是,存活时间不受第一次和最后一次引用变量之间变量使用次数的影响

image

4.4.3 缩短存活时间的好处

  • 减小攻击窗口
  • 使你对代码有更清楚的认识
  • 减少了初始化错误的可能
  • 使代码更具有可读性
  • 有益于把一个大的程序拆分成小程序

4.4.4 测量变量的生存空间

image
image

4.4.5 减小作用域的一般原则

  • 循环开始之前再去初始化该循环里使用的变量,而不是在该循环锁属的子程序的开始处初始化这些变量.
  • 直到变量即将被使用时再为其赋值
  • 把相关语句放在一起

image
image
- 把相关语句组成提取成单独的子程序
- 开始时使用最严格的可见性,然后根据需要阔真变量的作用域(使作用域最小化)

4.4.6 使作用域最小化的说明

  • 方便性和智力可管理性两种理念之间的区别,归根结底来源侧重于写程序还是读程序之间的区别.
  • 使作用域最大化有利于写程序
  • 是作用域最小化有利于读程序

4.5 持续性 Persistence(数据生命周期)

4.5.1 多种形态

  • 特定代码段或者子程序的生命周期:for循环里声明的变量
  • 只要你允许它就会持续下去:new delete
  • 程序的生命期:全局变量
  • 永远持续:数据库

4.5.2 好的实践

  • 用调试代码或者断言来检查那些变量的合理取值
  • 准备抛弃变量时,给他们附上不合理的数值:如删除一个指针后,把它赋为null
  • 编写代码时要假设数据并没有持续性
  • 养成使用数据之前声明并且初始化的条件

4.6 绑定时间 Binding Time

  • 编码时–使用神秘数值
  • 编译时–使用具名常量
  • 加载时–从注册表,java属性文件等外部数据源中读取数据
  • 对象实例化时–例如在每次窗体创建的时候读取数据
  • 即时–每次窗体重绘的时候读取数据

image
image

4.7 变量类型和控制结构之间的关系 Relationship Between Data Types & Control Structures

image

  1. 序列型数据翻译为程序中的顺序语句
  2. 选择型数据翻译为程序中的ifelse语句
  3. 迭代型数据翻译成程序中的循环语句

4.8 为变量指定单一用途 Using Each Variable for Exactly One Purpose

使用其用途各建立不同那个变量

image

4.9 核对表

image
image

0 0
原创粉丝点击