`
javatar
  • 浏览: 1704710 次
  • 性别: Icon_minigender_1
  • 来自: 杭州699号
社区版块
存档分类
最新评论

[摘]变量使用事项

阅读更多
摘自:《代码大全》

变量使用事项
1、“变量”在这里同时代表对象和内置数据类型。
2、要养成良好的创建变量的方法和习惯。
(1)对支持隐式变量声明的语言,在未声明变量时,编译器会自动声明变量,但这种做法不好。
(2)对支持隐式变量声明的语言,建议关闭隐式声明、声明全部变量、遵循某种命名规则、检查变量名。
3、变量初始化
(1)在声明变量的时候初始化。
(2)在靠近变量第一次使用的位置初始化。即就近原则,把相关的操作放在一起。
(3)理想情况下,在靠近第一次使用变量的位置声明和定义该变量。声明指定了变量的类型,定义为变量指定特定的取值,每个变量都应该在声明的同时被定义。
(4)在可能的情况下使用final或者const。final和const关键字在定义常量、输入参数以及任何初始化后其值不再发生改变的局部变量时非常有用。
(5)特别注意计数器和累加器。注意在下一次使用这些变量之前重置其值。
(6)在类的构造函数里初始化该类的数据成员。如果在构造函数里分配了内存,就应该在析构函数中释放。
(7)检查是否需要重新初始化。如果的确需要重新初始化,要确保初始化语句位于那些重复执行的代码内部。
(8)一次性初始化具名常量;用可执行代码来初始化变量。若想用变量来摸拟具名常量,则在程序开始处对常量做一次初始化即可。对于真正的变量,则应在靠近它们使用位置用可执行代码对其初始化。
(9)使用编译器设置来自动初始化所有变量。确保记下所使用的编译器设置。
(10)利用编译器的警告信息。
(11)检查输入参数的合法性。赋值前确保数值合理。
(12)使用内存访问检查工具来检查错误的指针。
(13)在程序开始时初始化工作内存。
4、变量的作用域
作用域或者可见性指的是变量在程序内的可见和可引用的范围。
(1)使变量引用局部化。好的做法是把对一个变量的引用局部化,即把引用点尽可能集中在一起,提高程序的可读性。(跨度)
(2)尽可能缩短变量的“存活”时间,即一个变量存在期间所跨越的语句的总数,开始于引用它的第一条语句,结束于引用它的最后一条语句。可以减少初始化错误的可能,会使代码更具可读性,也会使把相关的代码片断重构为单独的子程序会非常容易了。(生存时间)
5、减小作用域的一般原则
(1)在循环开始之前再去初始化该循环里使用的变量,而不是在该循环所属的子程序的开始处初始化这些变量。
(2)直到变量即将被使用时再为其赋值。让变量的赋值位置越明显越好。
(3)把相关语句放在一起。
(4)把相关语句组提取成单独的子程序。
(5)开始时采用最严格的可见性,然后根据需要扩展变量的作用域。在对变量的作用域进行选择时,应该倾向于选择该变量所能具有的最小的作用域:首选将变量局限于某个特定的循环,然后是局限于某个子程序,其次成为类的private变量,protected变量,再其次对包(package)可见,最后在不得已的情况下再把它作为全局变量。
6、变量的持续性
(1)在程序中加入调试代码或者断言来检查那些关键变量的合理取值。如果变量取值变得不合理,就发出警告信息通知去寻找是否有不正确的初始化。
(2)准备舍弃变量时给它们赋上“不合理的数值”。
(3)编写代码时要假设数据并没有持续性。
(4)养成在使用所有数据之前声明和初始化的习惯。
7、变量的绑定时间
即变量和它的值绑定在一起的时间,采取越晚的绑定时间会越有利。变量与数值绑定时间的情况:
(1)编码时(使用数值硬编码)
(2)编译时(使用具名常量)
(3)加载时(从外部数据源中读取数据)
(4)对象实例化时(如每次窗体创建时读取数据)
(5)即时(如每次窗体重绘时读取数据)
一般而言,绑定时间越早灵活性越差,但复杂度也会越低。但希望获得灵活性越强,则支持这种灵活性的代码就越复杂,出错几率也会越高。按照需要引入足够的灵活性来满足软件需求。
8、数据类型与控制结构
(1)序列型数据对应程序中的顺序语句。序列型数据是由一些按照特定顺序使用的数据组成的。若在一行中写有五条语句,每条语句都负责处理一项不同的数据,则它们就是顺序语句。
(2)选择型数据对应为程序中的if和case语句。选择型数据指的是一组在任一特定时刻有且仅有一项被使用的数据。相应的程序语句必须做出实际的选择。
(3)迭代型数据对应为程序中的for、repeat、while等循环结构。迭代型数据是需要反复进行操作的同类型的数据,通常保存为容器中的元素、文件中的记录或者数组中的元素。迭代型数据与负责读取数据的迭代型代码(即循环)相对应。
在使用过程中,可能结合了序列型、选择型和迭代型数据,可以把这几种简单的构造块组合起来描述更复杂的数据类型。
9、为变量指定单一用途
(1)每个变量只用于单一用途。
(2)避免让代码具有隐含含义。
(3)确保使用了所有已声明的变量。检查代码以确认使用了所有声明过的变量的习惯。
分享到:
评论

相关推荐

    WINCC组态中结构变量的使用

    ### 使用结构变量组态画面模板 在实际工业场景中,诸如多个电机或传感器的参数展示与控制,经常需要展示和控制相同类型的参数集,只是数值不同。面对这种情况,传统的做法是为每个设备单独创建画面,这不仅工作量...

    labview功能性全局变量的详细使用

    本篇将详细介绍LabVIEW功能性全局变量的使用方法及其优势。 1. **全局变量的概念** 全局变量是一种在程序的不同部分都能访问的变量,与局部变量相比,它们在整个程序的生命周期内保持其值。在LabVIEW中,全局变量...

    使用变量前缀的画面窗口

    "使用变量前缀的画面窗口"是WINCC中的一个重要概念,旨在帮助用户更好地管理和组织项目中的变量。下面将详细阐述这一知识点。 首先,变量前缀在WINCC中起到了标识和分类的作用。当项目中包含大量变量时,为每个变量...

    ODI中变量的使用

    【ODI中变量的使用】 在Oracle Data Integrator (ODI)中,变量是一个至关重要的概念,它允许我们在数据集成过程中动态地管理信息,从而提高了灵活性和效率。ODI的变量能够存储各种类型的数据,并在不同场景下进行...

    UG环境变量设置 使用方法

    "UG环境变量设置 使用方法" UG 环境变量设置是指在 UG 软件中对环境变量的设置和使用方法。本文将详细地介绍 UG 环境变量设置的使用方法和相关知识点。 一、UG 环境变量设置的重要性 UG 环境变量设置对 UG 软件的...

    C++中类使用全局变量

    6. **封装**:如果一个变量需要在多个类之间共享,考虑使用静态成员变量或使用指针或引用传递,而不是全局变量。 总之,虽然全局变量在某些情况下可以简化代码,但过度依赖全局变量会导致代码难以理解和维护。在...

    sipp变量使用

    在SIP回拨测试场景中,SIPP变量的使用显得尤为重要,尤其是在处理A路监听和B路挂机操作的同步问题上。通过变量,我们可以有效地从接收到的消息中提取关键信息,并在后续的脚本中使用这些信息,以确保通信流程的正确...

    kettle8 模拟表输入查询表名,然后在另一个表输入中使用变量使用

    在Kettle8中,模拟表输入查询表名并使用变量是一项常见的数据处理任务,它涉及到工作流中的动态数据源选择和参数化。Kettle8,也称为Pentaho Data Integration (PDI),是一款强大的ETL(提取、转换、加载)工具,...

    如何使用结构变量组态WINCC画面模板

    本文将详细介绍如何在WinCC V7.0 SP1中使用结构变量来组态画面模板,并提供两种主要方法:使用变量前缀的画面窗口和使用动态向导的画面模板。 首先,需要了解结构变量的基本概念。在WinCC中,结构变量是一种数据...

    QT中pro文件使用的系统变量的说明

    QT 中 Pro 文件使用的系统变量的说明 在 Qt 中,Pro 文件是用于生成 Makefile 的配置文件。Pro 文件中的系统变量是 qmake 用来生成 Makefile 的关键。下面是 Qt 中 Pro 文件中使用的系统变量的说明: TEMPLATE ...

    和利时网络变量说明

    本文档主要针对MACSV5.2.4版本中的网络变量组态方法及其注意事项进行了详细介绍。网络变量是控制器之间进行数据交互的重要手段,通过合理配置可以实现不同控制器之间的数据同步与通信。 #### 二、组态方法 ##### ...

    QT 使用全局变量的方法 - 郭小郭的专栏 - CSDN博客1

    QT 使用全局变量的方法 在QT编程中,全局变量的使用有时是必要的,特别是在需要在不同类或函数之间共享数据的情况下。然而,全局变量的使用应该谨慎,因为它们可能破坏封装性和增加代码的复杂性。以下是两种在QT中...

    在C/C++项目中使用全局变量的方法

    ### 在C/C++项目中使用全局变量的方法 #### 概述 在开发C/C++项目时,有时需要在多个源文件之间共享数据或状态信息。全局变量作为一种简单且直观的数据共享方式,在某些场景下非常实用。然而,不当的使用全局变量...

    C# 公有变量 私有变量 静态变量

    在C#编程语言中,变量的访问修饰符和类型对代码的组织和...在实践中,你可能会遇到更多复杂的场景,如属性(Properties)的使用,以及如何通过getter和setter方法来控制变量的访问,这些都是在C#中管理变量的重要补充。

    Oracle脚本变量使用示例

    了解如何在Oracle脚本中使用变量是提升效率的关键。本篇将深入讲解Oracle脚本中的变量使用,通过实例来帮助你更好地理解和应用。 1. **变量声明** 在Oracle中,变量在PL/SQL块内进行声明。基本格式如下: ```sql ...

    static静态变量使用@Value注入方式.md

    ### static静态变量使用@Value注入方式 #### 一、引言 在Java开发中,特别是基于Spring框架的应用程序中,开发者经常会遇到需要为类中的成员变量注入外部配置值的情况。Spring框架提供了多种注入机制,其中`@Value...

    定义全局变量 变量 全局

    在MFC(Microsoft Foundation Classes)框架中,全局变量和函数的使用与标准C++有所不同,因为MFC工程通常由多个文件组成,需要一种方法来在这些文件之间共享数据和功能。这里将介绍两种在MFC工程中定义全局变量和...

    使用脚本设置全局环境变量

    另外,提供的`使用脚本设置全局环境变量.docx`文档可能包含了更详细的步骤和示例,包括如何在不同操作系统下编写和执行脚本,以及如何验证环境变量是否成功设置。可能还涵盖了如何处理特殊字符、空格以及如何在脚本...

    全局变量的使用

    当你在一个源文件中定义了一个全局变量,而在其他源文件中想要使用这个变量时,由于编译器默认每个源文件都是独立的,所以它不知道这个变量的存在,这时就需要使用`extern`来告诉编译器这个变量是在其他地方定义的。...

Global site tag (gtag.js) - Google Analytics