强制使用牙套

2024-04-17

作为我不久前写的代码标准文档的一部分,我强制要求“您必须始终对循环和/或条件代码块使用大括号,即使(特别是)它们只有一行。”

Example:

// this is wrong
if (foo) 
    //bar
else 
    //baz
while (stuff)
    //things

// This is right.
if (foo) {
    // bar
} else {
    // baz
}
while (things) {
    // stuff
}

当你不加括号,然后有人将其注释掉时,你就有麻烦了。如果您不使用单行大括号,并且缩进在其他人的机器上显示不一样......您就有麻烦了。

那么问题来了:是否有充分的理由解释为什么这是一个错误或不合理的标准?关于它已经有一些讨论,但没有人能给我提供比“感觉丑陋”更好的反驳。


我能提供的最好的反驳论点是,空间占用的额外行会减少您一次可以看到的代码量,而您一次可以看到的代码量是影响易用性的一个重要因素。是为了发现错误。我同意你给出的包含大括号的原因,但是在 C++ 的许多年里,我只能想到一次我因此犯了一个错误,而且是在一个我没有充分理由跳过大括号的地方反正。不幸的是,我无法告诉您这些额外的代码行在实践中是否有帮助。

我可能更有偏见,因为我喜欢在相同缩进级别匹配大括号的对称性(以及将包含的语句隐式分组为一个执行块) - 这意味着添加大括号all时间给项目增加了很多行。

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

强制使用牙套 的相关文章

  • 有人发布过任何 C# 4 编码标准/指南/风格指南吗?

    我了解 C 2 和 C 3 的许多编码标准和指南 但正在寻找一些针对 C 4 编写的标准和指南 我正在发布 C 4 0 的新编码指南here http csharpguidelines codeplex com releases view
  • 是否可以将代码隐藏分成多个部分文件?

    我有一个带有 aspx cs 代码隐藏的 aspx Web 表单 隐藏的代码有近 2000 行长 而且已经到了轻松导航的唯一方法就是在各部分之间放置大量空格 缩小以便我可以看到代码的物理外观 并且然后放大我要编辑的地方 换句话说 这是一个很
  • JavaScript:扩展 Array.prototype 有什么危险?

    谷歌 JavaScript 风格指南建议不要延长Array prototype https google github io styleguide jsguide html disallowed features modifying bui
  • 将 Python 代码转换为 PEP8 兼容的工具

    我知道有一些工具可以验证您的 Python 代码是否符合 PEP8 例如两者都有在线服务 http pep8online com and 一个Python模块 https github com jcrocholl pep8 但是 我找不到可
  • 为什么标准C++库全部使用小写?

    只是好奇为什么 C 标准库使用全部小写和下划线而不是camelCase or PascalCase命名约定 就我个人而言 我发现在输入代码时后者更容易处理 但是是否有某种合法的理由使用前者 主要原因 为了保持与现有代码的兼容性 因为他们也用
  • C 中的三重指针:这是风格问题吗?

    我觉得 C 中的三重指针被视为 坏 对我来说 有时使用它们是有意义的 从基础开始 单指针有两个目的 创建数组 并允许函数更改其内容 通过引用传递 char a a malloc or void foo char c means I m go
  • 多次迭代

    有没有一种更简单 更简洁的方法来编写这样的代码 1 10 each do i 1 10 each do j 1 10 each do k 1 10 each do l puts i j k l end end end end 理想情况下我能
  • 惯用使用 std::auto_ptr 还是只使用shared_ptr?

    现在shared ptr是在 tr1 中 你认为使用应该会发生什么std auto ptr 它们都有不同的用例 但所有用例auto ptr可以用以下方法解决shared ptr 也 你会放弃吗auto ptr或者在您想明确表示在任何给定点只
  • SQL Server 2005:“保护”存储过程免受 MS Access 使用的 FMTONLY 模式影响

    我们拥有的一些存储过程包含条件逻辑 如下所示 Create Procedure dbo DoSomething Some Parameters As If Some Condition Begin Set SomeVariable Some
  • 主题中的文本外观

    我想将主题中的文本外观设置为 TextAppearnance Large 这是我在 styles xml 中所做的事情 我的应用程序在清单中指向这个主题 问题 我的文字仍然显示很小 问题 我在尝试在活动中使用预定义的 TextAppeara
  • 在 .NET 中可以将数组或列表作为属性返回吗?

    我正在阅读 MSDN 上的一些文档 了解有关某些内容是否应该作为属性或方法实现的注意事项 我特别遇到了一条规则 对此我有疑问 如果 操作返回一个数组 请使用方法 而不是属性 页面在这里 在属性和方法之间进行选择 https msdn mic
  • x 或 y:可接受的习语,还是混淆?

    我必须从可能为 None 的变量中提取值 并考虑一些默认值 我首先写了这段代码 if self maxTiles is None maxX maxY 2 2 else maxX maxY self maxTiles 然后我意识到我可以将其缩
  • Checkstyle 规则防止调用某些方法和构造函数

    是否可以使用 Checkstyle 来禁止使用某些使用系统相关默认值 区域设置 字符集等 的构造函数或方法 我更喜欢强制执行一项政策 程序员应该明确了解系统相关的值 所以我认为以下物品是危险的 all the constructors of
  • 函数式编程是否需要新的命名约定?

    我最近开始使用 Haskell 学习函数式编程 并在 Haskell 官方 wiki 上发现了这篇文章 如何阅读哈斯克尔 http www haskell org haskellwiki How to read Haskell What t
  • 使用循环计算 Python 字典中元素的有效方法

    我有一个值列表 我希望在循环期间计算每个类的元素数量 即 1 2 3 4 5 mylist 1 1 1 1 1 1 2 3 2 2 2 2 3 3 4 5 5 5 5 mydict dict for index in mylist mydi
  • 为了清楚起见,是否应该在返回类型上使用无用的类型限定符?

    当我们的头文件中有原型时 我们的静态分析工具会抱怨 返回类型上有无用的类型限定符 例如 const int foo 我们这样定义它是因为该函数返回一个永远不会改变的常量 认为 API 看起来更清晰const到位 为了清楚起见 我觉得这类似于
  • 可选回调的 JavaScript 样式

    我有一些函数偶尔 并非总是 会收到回调并运行它 检查回调是否已定义 函数是一种好的风格还是有更好的方法 Example function save callback do stuff if typeof callback undefined
  • 您是否将信息添加到每个 .hpp/.cpp 文件的顶部? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 创建新的 C 头文件 源文件时 您会在顶部添加哪些信息 例如 您是否添加日期 您的姓名 文件描述等 您是否使用结构化格式来存储此信息 e g F
  • 如何让 Win32 使用 Windows XP 样式字体

    我正在使用纯 C 和 WinAPI 编写 Win32 应用程序 不允许使用 MFC 或 C 为了让控件使用适当的样式进行绘制 我使用了清单 如相应的 MSDN 文章中所述 一切都很好 当我更改系统样式时 我的应用程序也会更改样式 但使用的字
  • Objective-C 中是否有命名初始化方法的约定?

    在可以通过不同的 init 方法初始化的 Objective C 类中 将所有初始化程序共用的初始化代码收集到一个从其他 init 方法 有时也从从 Nib 唤醒 是否有关于如何命名该方法的约定 初始化器 初始化公共 根据 Apple 的说

随机推荐

  • Gradle 发出错误“无法创建类型为‘AppPlugin’的插件”

    我正在尝试使用 gradle 创建一个简单的 android 项目 我在一台装有 Debian GNU Linux 7 wheezy 的计算机上工作 我遵循了中的建议Gradle 插件用户指南 Android 工具项目网站 http too
  • 如何将 Twitter 小部件集成到 Reactjs 中?

    我想将 Twitter 小部件添加到 React 中 但我不知道从哪里开始或如何做 我对 React JS 很陌生 下面是 HTML 版本的代码 div class Twitter a class twitter timeline href
  • 如何在 Meteor 中缓存数据?

    感谢大家 最近我想在meteor上建立一个小型cms 但有一些问题 1 缓存 页面缓存 数据缓存等 例如 当人们搜索某篇文章时 在服务器端 Meteor publist articles function keyword return Ar
  • chrome.storage 在 chrome 扩展中未定义

    我正在开发一个 Google Chrome 扩展程序 并且已经为此工作了一段时间 所以它已经安装了一段时间 我更新了清单文件以包含 存储 权限并重新加载扩展 但是 当我在控制台中尝试时 chrome storage is undefined
  • Microsoft Bot 在 WebChat 中显示不必要的重复消息?

    当用户第一次访问我的聊天室时 他们会收到欢迎消息 并立即被要求提供他们的名字 一旦用户输入他们的名字 就会出现欢迎消息 并再次显示输入名字的文本提示 只有在他们第二次输入名字后 机器人才会继续处理下一个有关姓氏的问题 此外 当用户最终在第一
  • 在 Java JFrame 上添加图像 - Netbeans

    我在用着NetBeans 7 1用 Java 编写代码 我已经创建了一个JFrame充满了一些labels textbox and buttons 我该如何导入一些图像 JPG PNG etc 从我的电脑到同一个JFrame 在框架的特定位
  • 如何以 const 形式返回指向指针列表的私有指针?

    我有一个指向指针列表的指针 作为私有变量 我还有一个 getter 它返回指向列表的指针 我需要保护它免受更改 我找不到如何使用reinterpret cast 或const cast 对此 class typeA shared ptr
  • 实现字典的 Applicative 实例(Map、关联数组)

    为关联数组实现函子实例 本质上是映射操作 似乎很简单 例如 参见Functor定义 1 然而 Applicative实例未定义 地图不是应用程序有一个很好的理论理由吗 它们需要什么额外的限制才能成为应用程序 1 https hackage
  • 如果 B 列中的值 = 特定文本,则将特定文本插入到 A 列中的值中

    简单地说 如果 B 列中的任何单元格包含thisvalue然后附加到 A 列中的相邻单元格sometext 这是怎么做到的 一个简单的 if 语句 例如 IF ISNUMBER SEARCH thisvalue B1 sometext 编辑
  • 多个 NSEntityDescription 声明 NSManagedObject 子类

    我正在创建一个允许我使用核心数据的框架 在框架的测试目标中 我配置了一个名为的数据模型MockModel xcdatamodeld 它包含一个名为MockManaged有一个单一的Date财产 为了测试我的逻辑 我正在创建一个内存存储 当我
  • 为什么必须对存储在堆中的函数的局部变量调用delete?

    假设您有以下函数 void doSomething int data new int 100 为什么这会产生内存泄漏呢 由于我无法在函数外部访问此变量 为什么编译器不在每次调用此函数结束时自行调用delete 为什么这会产生内存泄漏呢 因为
  • 核心数据迁移非常慢

    我正在尝试执行核心数据迁移 一切正常 只是迁移本身需要 10 多秒的时间 我正在使用 xcmappingmodel 在两个模型版本之间进行映射 效果很好 除了所需的时间长度之外 在下面的代码中 开始迁移 和 完成迁移 日志之间有 10 秒
  • 如何使用 make 打印目标的所有先决条件并构建规则

    一个大的项目通常有一个复杂的Makefile系统 有许多变量定义和目标先决条件依赖项分散在不同的 Makefile 中 有什么方便的方法来打印目标的所有先决条件和构建规则吗 具体来说 有两个问题 问题1 假设我有四个 Makefile 生成
  • 设置并验证 Python MySQL 连接中使用的 SSL/TLS 版本

    如何告诉 Python MySQL 连接器使用哪种 SSL TLS 协议 特定的 例如 TLS1 2 或最低的 如何检查已建立的连接使用哪种协议 我有一个应用程序使用mysql connector python 8 0 18 我连接这样的东
  • 将 CMake 变量从 GUI 导出到命令行

    是否可以将 CMake GUI 中设置的所有变量值导出到单个命令行字符串 以便可以从外部工具快速使用它 所以输出会是这样的 cmake DVar1 ON DVar2 foo 你可以从 Tools gt Show My Changes
  • Corda 真的需要公证人才能达成唯一性共识吗?

    科达共识简介 https docs corda net releases release V2 0 key concepts consensus html说 唯一性共识是由公证人提供的 我们是说 如果没有公证人 A 有可能说服 B 将一笔交
  • 我如何通过查询从 Firestore 获取单个文档(我正在使用 Ionic 4 )

    早上好 我在 firestore 中有数据库如下 collections documents fields 123 news1 title some data news2 content some data 例如我想获取我的 ionc4 应
  • Java FXML 从绝对路径加载(动态)

    我想从绝对路径或 jar 系统外部的路径加载 fxml 文件 背景 它将是一个简单的插件系统 在插件文件夹中查找所有 fxml 文件 后来的 jar 文件 并将其自动包含在 TabPane 中 String fxmlpath C plugi
  • ColdFusion 参数化查询

    我运行一个查询来填充我试图参数化的 CFChart
  • 强制使用牙套

    作为我不久前写的代码标准文档的一部分 我强制要求 您必须始终对循环和 或条件代码块使用大括号 即使 特别是 它们只有一行 Example this is wrong if foo bar else baz while stuff thing