在循环中初始化变量[重复]

2024-04-29

我试图弄清楚初始化某些变量时的最佳实践是什么...... 我的代码现在看起来像这样:

int nHexCount = 0;
int prevState = sc.state;

bool bOnlySpaces = true;
bool bIsValidLabel = true;
bool bIsHotstring = false;
bool bIsValidName = true;
bool bIsValidExpStart = false;                         

bool fInExpression = false;
bool fInStringBlock = (sc.state == SCE_AHKL_STRINGOPTS || sc.state == SCE_AHKL_STRINGBLOCK);

for (; sc.More(); sc.Forward()) {

    if (sc.atLineStart) {
        if (!fInStringBlock && sc.state != SCE_AHKL_COMMENTBLOCK)
            sc.SetState(SCE_AHKL_DEFAULT);

        // Reset Status
        prevState = sc.state;

        bOnlySpaces = true;
        bIsValidLabel = true;
        bIsHotstring = false;
        bIsValidName = true;
        bIsValidExpStart = false;

        fInExpression = false;
    }

...

因此,正如您所看到的,每次我的程序在我正在处理的编辑组件中找到新行时,大多数变量都会被重置......

问题是:

在 for 循环中声明和初始化所有这些变量是否是更好的编程实践,或者我应该像现在一样保留它?


您应该始终尽可能地缩小变量的范围。这将提高代码的可维护性,并减少出现错误的机会。

// bad
int i, j, k;
k = 0;
for (i = 0; i < X, ++i)
{
  j = foo(i);
  k += j;
} 

bar(k);

...对...

// better
int k=0; // needs scope outside loop
for (int i = 0; i < X, ++i)
{
  int j = foo(i);
  k += j;
} 

bar(k);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在循环中初始化变量[重复] 的相关文章

随机推荐

  • 与黄金链接器链接的二进制文件运行速度更快吗?

    使用 GEANT4 大型 Monte Carlo C 模拟框架 大量共享库 运行模拟代码 使用黄金链接器和基于标准 BFD 的链接器编译并链接 GEANT 和我的应用程序 看起来黄金跑得更快一点 1 47 vs 1 51 有人可以阐明造成差
  • Xcode9:修复范围内的所有内容始终处于禁用状态

    Xcode9 编辑器 修复范围内的所有内容始终处于禁用状态 我怎样才能启用它 在新的 Xcode 版本 9 2 9C40b 中进行了更新 效果非常好
  • 让 `npm install --save` 添加严格版本到 package.json

    当你跑步时npm install save somepackage 它通常会在 package json 中添加这样的内容 dependencies somepackage 2 1 0 因为版本前面带有插入符号 这意味着如果您稍后运行npm
  • 如何在knockout视图模型点击事件中访问$parent或$parents[]?

    我遇到了一种情况 我想通知祖父母或 parents 1 子视图模型中发生的点击事件 所以基本上我希望能够做到这一点 self parents 1 actionTaken 我认为这不起作用 因为绑定上下文与 viewModel 但我想听听是否
  • 是否可以对更高种类类型的类实例强制执行类型约束?

    我有一个这样定义的类型 newtype PrimeSet a P Integer deriving Eq 我还定义了一个将素数集转换为列表的函数 假设它的类型参数是Integral toList Integral a gt PrimeSet
  • JAXB 和 complexType 与其元素之一共享名称会生成不正确的代码

    我有这个 xsd 它有点糟糕 但我必须使用它来避免更改我正在编写的 servlet 的接口 请求 响应接口的 xsd 包含以下行
  • C 预处理器字符串化怪异

    我正在定义一个宏 该宏的计算结果为常量字符串 保存文件名和行号 用于记录目的 它工作正常 但我只是不明白为什么需要 2 个额外的宏 STRINGIFY and TOSTRING 当直觉简单地表明 FILE LINE include
  • 在 iOS 上的 PhoneGap 或 Cleaver (Cordova) 中加载远程 html

    我在我的本机 iOS 6 应用程序中使用 Cordova 2 4 组件 Cleaver 和嵌入式视图 到目前为止 我已经成功创建了项目结构 链接了 Cordova 库并设置了 Hello World 应用程序 该应用程序确实可以提供 设备就
  • 使用awk对字段进行排序和排列

    我现在正在尝试学习 awk 我想做一项特定的任务 我的问题与之前发布的问题范围相似 使用 awk 将列转置为行 https stackoverflow com questions 13634816 using awk to transpos
  • 如何将多个 .txt 文件读入 R? [复制]

    这个问题在这里已经有答案了 我正在使用 R 来可视化一些数据 所有这些数据都是 txt 格式 一个目录中有几百个文件 我想一次性将其全部加载到一个表中 有什么帮助吗 EDIT 列出文件不是问题 但我在从列表到内容的过程中遇到了困难 我已经尝
  • 我可以在 MySQL 中存储图像吗?

    这个问题在这里已经有答案了 可能的重复 MySQL 中的图像 https stackoverflow com questions 1665730 images in mysql 在 MySQL 中存储图像 https stackoverfl
  • 通过php在csv单元格中创建回车符

    我正在尝试动态生成一个 csv 文件 其中包含一些包含多行的单元格 例如 地址字段需要分组为单个 地址 单元格 而不是地址 城市 州等 一切进展顺利 但在过去的两天里 我尝试在代码中插入 r r n n chr 10 chr 13 以及回车
  • C# IAttachmentExecute

    我正在尝试使用I附件执行 http msdn microsoft com en us library bb776297 28VS 85 29 aspx我的 C 应用程序中的接口 使用 NET4和VS2010 MSDN 说它在Shdocvw
  • 如何在 VSCode 的 zen 模式下启用行号?

    有没有办法在 VSCode 的 zen 模式下启用行号 In your settings json插入行 zenMode hideLineNumbers false
  • SQL Server 存储过程中的可选参数

    我正在写一些存储过程 https en wikipedia org wiki Stored procedure在 SQL Server 2008 中 这里可能存在可选输入参数的概念吗 我想我总是可以传入 NULL 作为我不想使用的参数 检查
  • C#:保留类中构造函数的引用参数

    基本上我希望能够引用类实例内的变量 但我希望引用成为类变量 因此我不需要将其作为参数在类内部发送 code int num 0 myClass num print num output is 0 but i d like it to be
  • Bootstrap 轮播下一个和上一个功能不起作用

    使用最新版本并具有基本的轮播 我已经让它可以使用所有默认设置 但是当尝试添加或停止某些功能时 事情会中断或根本不起作用 我希望能够手动循环浏览图像 不希望它自动循环 我只想使用下一个和上一个按钮来循环 我在这里读过一些帖子 但解决方案不起作
  • 将闪亮应用程序部署到 Shinyapps.io 时出错

    我有一个闪亮的应用程序 它在server R file library shiny Creating the app library ggplot2 library plyr library reshape2 library scales
  • Python 3 urllib 与请求性能

    我正在使用 python 3 5 并且正在检查 urllib 模块与 requests 模块的性能 我用 python 编写了两个客户端 第一个使用 urllib 模块 第二个使用 request 模块 它们都生成二进制数据 我将其发送到基
  • 在循环中初始化变量[重复]

    这个问题在这里已经有答案了 我试图弄清楚初始化某些变量时的最佳实践是什么 我的代码现在看起来像这样 int nHexCount 0 int prevState sc state bool bOnlySpaces true bool bIsV