硬编码的字符串是否可以接受?

2023-11-30

如同硬编码文字是否可以接受?,但我在这里特别想到“神奇的字符串”。

在一个大型项目中,我们有一个配置选项表,如下所示:

Name         Value
----         -----
FOO_ENABLED  Y
BAR_ENABLED  N
...

(数百个)。

常见的做法是调用通用函数来测试选项,如下所示:

if (config_options.value('FOO_ENABLED') == 'Y') ...

(当然,可能需要在系统代码的许多地方检查相同的选项。)

添加新选项时,我正在考虑添加一个函数来隐藏“魔术字符串”,如下所示:

if (config_options.foo_enabled()) ...

然而,同事们认为我太过分了,并反对这样做,他们更喜欢硬编码,因为:

  • 这就是我们通常做的
  • 调试代码时可以更轻松地查看发生了什么

问题是,我能明白他们的观点!实际上,我们永远不会出于任何原因重命名选项,因此我能想到的函数的唯一优点是编译器会捕获任何拼写错误,例如 fo_enabled(),但不会捕获“FO_ENABLED”。

你怎么认为?我是否错过了任何其他优点/缺点?


如果我在代码中使用一次字符串,我通常不会担心将其设置为常量。

如果我在代码中使用一个字符串两次,我会consider使其成为常数。

如果我在代码中使用一个字符串三次,我几乎肯定会将其设为常量。

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

硬编码的字符串是否可以接受? 的相关文章

  • 有效地将相似的数字分组在一起[重复]

    这个问题在这里已经有答案了 可能的重复 一维数数组聚类 https stackoverflow com questions 11513484 1d number array clustering 我有一个数字数组 例如 1 20 300 4
  • 如何使PHP库松耦合? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 无扫描器解析器生成器

    序幕 尽管解析器 上下文无关语法 识别的语言集严格大于扫描器 常规语法 识别的语言集 但大多数解析器生成器都需要扫描器 请不要试图解释其背后的原因 我很了解它们 我见过解析器 不需要像这样的扫描仪 Elkhound http scottmc
  • 编程语言语法中尾随逗号的历史

    许多编程语言允许在其语法中在列表中的最后一项后面使用尾随逗号 据说这样做是为了简化自动代码生成 这是可以理解的 作为示例 以下是 Java 中完全合法的数组初始化 JLS 10 6 数组初始值设定项 http java sun com do
  • 如何通用地减少子集平均值的计算?

    Edit 由于似乎没有人阅读此链接的原始问题 因此让我在这里介绍一下它的概要 正如其他人所问的 最初的问题是 给定大量值 总和将超过数据类型的值Double那么如何计算这些值的平均值呢 有几个答案说要按集合计算 比如取50个和50个数字 计
  • “单词的正则表达式”(语义替换)-任何示例语法和库吗?

    我正在寻找在给定过程语言的情况下对单词而不是字符进行正则表达式样式转换的常用技术的语法示例 例如 为了追踪复制 人们可能想要创建一份具有相似含义但具有不同单词选择的文档 我希望能够简洁地定义这些可以应用于文本流的可能的转换 例如 快速地no
  • TSQL - 生成文字浮点值

    我理解比较浮点数时遇到的许多问题 并对它们在这种情况下的使用感到遗憾 但我不是表格作者 只有一个小障碍需要克服 有人决定使用浮点数 就像您期望使用 GUID 一样 我需要检索具有特定浮点值的所有记录 sp help MyTable Colu
  • 什么是拉姆达?

    有人可以很好地描述什么是 Lambda 吗 我们为它们设置了一个标签 它们涉及 C 问题的秘密 但我还没有找到一个很好的定义和解释来解释它们是什么 闭包 lambda 和匿名函数不一定是同一件事 匿名函数是任何没有 或者至少不需要 自己名称
  • 面向对象编程语言中的引用默认情况下是否应该不可为空? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 在矩阵/位图中查找质量簇

    这是此处发布的问题的延续 在 2D 位图上查找质心 https stackoverflow com questions 408358 finding the center of mass on a 2d bitmap正如给出的例子 它讨论了
  • C++ 字符串文字比较

    我是一个 c 新手 只是老派的 c 我儿子为此寻求帮助 但我无法解释 如果他问我 如何比较字符串 我会告诉他使用 strcmp 但这并不是让我困惑的地方 这是他问的 int main cout lt lt A lt Z 将打印 1 int
  • 与随机数生成算法相关的种子是什么?为什么经常使用计算机时间来创建该种子?

    我读到了seeds用于初始化随机数生成器 但似乎种子的随机性对于从生成器获得良好的随机性并不重要 所以我想了解什么是seed实际上 为什么这么称呼呢 最后为什么time在计算机系统中是用来生成这样的种子的 伪随机数生成器生成数字序列 它不是
  • 关于使用My作为类名前缀的意见

    就我个人而言 我从来不喜欢MyObject类的命名 我猜现状会同意 但我想看看争论的另一面 以及它是否有任何有效性 我的 已被我使用 请使用其他内容
  • 从关系数据库中“区分”对象

    我们的 win32 应用程序根据 MySQL 关系数据库中多个表中的数据组装对象 对于这样的对象 多个修订版本存储在数据库中 当存储某些内容的多个修订版本时 迟早您会问自己这样的问题 您是否可以想象两个修订版本之间的差异 所以我的问题是 比
  • 有人还在使用客户端服务器架构吗[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我编写软件已有几十年了 现在一切都是网络 在网络出现之前 我们拥有的客户端服务器应用程序基本上是直接与数据库对话的胖客户端应用程序 它
  • 线性问题和非线性问题之间的区别?点积和核技巧的本质

    核技巧将非线性问题映射为线性问题 我的问题是 1 线性问题和非线性问题的主要区别是什么 这两类问题的差异背后的直觉是什么 核技巧如何帮助在非线性问题上使用线性分类器 2 为什么点积在这两种情况下如此重要 Thanks 当人们说到分类问题的线
  • 承诺的反面是什么?

    承诺代表将来可能可用 或无法实现 的值 我正在寻找的是一种数据类型 它表示将来可能变得不可用的可用值 可能是由于错误 Promise a b TransitionFromTo
  • 安全网络登录示例/教程[关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 为 Web 应用程序创建登录表单的方法有很多种 但大多数方法都存在这样或那样的缺陷 密码以明文形式传输
  • 将 RGB 转换为灰度/强度

    当从 RGB 转换为灰度时 据说应该对 R G 和 B 通道应用特定的权重 这些权重是 0 2989 0 5870 0 1140 据说这是因为人类对这三种颜色的感知 感受不同 有时也有人说这些是用于计算 NTSC 信号的值 但是 我在网上没
  • 字符串文字仍然以双斜杠结尾? [复制]

    这个问题在这里已经有答案了 我有一小段代码 public static void Write string filename string time DateTime Now ToString hh mm tt int date int P

随机推荐

  • 文件上传进度

    我需要在我的网页中实现文件上传进度 我的页面中有五个文件上传控件 我想分别显示每个文件上传的上传进度 我有什么办法可以做到这一点 谢谢 穆图拉曼 这是我的项目 所以你可以使用它http managemedia codeplex com 没有
  • 在 PyQt5 中打开多个窗口时遇到问题

    我正在使用 PyQt5 设计器制作一个小应用程序 我主要与设计师合作 而不是从头开始构建 所以这可能是一个愚蠢的问题 基本上我有一个主菜单和一个 创建 按钮 单击该按钮将打开我一直在处理的其他 pyqt5 py 文件 也在设计器中创建 到目
  • 如何使用jmxtrans监控Kafka代理?

    卡夫卡 0 8 1 1 kafka 2 8 0 0 8 1 1 tgz 我正在使用 jmxtrans 对 Kafka 实例 在 docker 中运行 进行 JMX 监控 不幸的是 kafka 指标没有被返回 我尝试了一些方法来调试它 并知道
  • gnuplot - 如何提取 pm3d 插值数据?

    我正在尝试平滑 gnuplot 图中的一些稀疏数据 格式 x y z 我需要使用绘图plot和with image选项 因为生成的文件pm3d map非常大 我喜欢什么pm3d map是我可以平滑我的数据interpolate以这样的方式插
  • 使用 javascript/ajax/jquery 强制下载 pdf 链接

    假设我们有一个 pdf 链接 http manuals info apple com en iphone user guide pdf 只是举例 让你知道该文件不在我的服务器上 我只有链接 现在我必须在我的网站上提供一个按钮来下载该文件 我
  • 使用 aurelia-fetch-client 发布“x-www-form-urlencoded”内容

    问题很简单 如何发帖x www form urlencoded对 Aurelia Fetch 客户端满意吗 我需要将帖子发送到一个使用 OWIN 和 Katana 进行身份验证的简单 ASP NET Web API 服务器 我已经尝试过的一
  • 使用 AWS Glue 时如何在 postgres 中将字符串保存为 JSONB 类型

    我正在寻找如何在 postgresql 中将字符串编写为 jsonb 类型的解决方案 所以DynamicFrame有一个字符串列来保存json数据 当尝试保存到 postgres 时 DataSink0 glueContext write
  • Facebook 点赞框不起作用

    我的一位客户在 Facebook 上点赞框时遇到了问题 我和一个朋友根本不明白我们做错了什么 并且已经盯着这个问题近三天了 这是我们从developers facebook com 获得的代码 div div
  • 从网络下载文件,然后使用保存文件对话框保存?

    如何下载文件 然后将其保存到我想要的位置 我正在使用 Windows 窗体 Web 应用程序 我知道我可以使用以下代码下载它 WebClient wClient new WebClient wClient DownloadFile WebL
  • Numpy.argsort - 看不出出了什么问题

    我正在尝试使用 argsort 函数对 numpy 数组进行排序 不幸的是 这不起作用 我不明白为什么 代码是 import numpy as np distance np array 38 26 33 01 32 33 30 77 37
  • 未展平结果时 NEST 上出现内部错误

    我正在尝试分组并将重复字段返回到新表中 SELECT url NEST label AS labels FROM mytable GROUP EACH BY url 当我选中 展平结果 复选框时 它就起作用了 当我取消选中该框时 我收到 错
  • 文本差异算法

    我需要一种算法 可以比较两个文本文件并突出显示它们的差异 并且 甚至更好 可以以有意义的方式计算它们的差异 就像两个相似的文件应该具有比两个不相似的文件更高的相似性分数 并带有 相似 一词 在正常术语中定义 听起来很容易实现 但事实并非如此
  • 如何删除htaccess中的url参数[关闭]

    Closed 这个问题是无关 目前不接受答案 我有一个 codigniter 网站 不喜欢添加 url 参数 例如 mysite com page value 很好 但是 mysite com page value url paramete
  • 我正在尝试将音乐添加到我用 JS 和 jQuery 编写的虚拟游览应用程序中 到目前为止 我的代码 如下所示 在 Chrome FF IE9 和 Opera 中运行良好 但在 Safari 5 1 7 这是 Windows 机器上最新的版本
  • 如何捕获Enter键按下的情况? [复制]

    这个问题在这里已经有答案了 在我的 HTML 页面中 我有一个文本框供用户输入关键字进行搜索 当他们单击搜索按钮时 JavaScript 函数将生成一个 URL 并在新窗口中运行 当用户用鼠标单击搜索按钮时 JavaScript 函数工作正
  • 将滚动面板的垂直滚动条移至左侧

    使用 JavaFX 我想将滚动面板的垂直滚动条移动到组件的左侧 而不是默认的右侧 我尝试使用 CSS 中的 fx alignment 来做到这一点 但不起作用 scroll pane scroll bar vertical fx align
  • 大全景平移视频

    从全景图像创建视频的最有效方法是什么 例如 其大小为 5000 width x 600 height px 我创建了这个 GIF 图像来更好地解释事情 想象一下视频位于红色边框内 因此视频可能会从左向右平移 移动作物是在 ffmpeg 中实
  • WPF XAML 设计器显示绑定属性名称而不是属性值

    我的一个 XAML 文件在 XAML 设计器中显示了一种奇怪的行为 但不是在运行时 public class MyDesignTimeViewModel public MyDesignTimeViewModel MyText abc MyI
  • WPF 矩形颜色绑定

    我正在尝试编写矩形网格 它确实会改变其对象的颜色 private void Window Loaded object sender RoutedEventArgs e for int i 0 i lt size i main grid Co
  • 硬编码的字符串是否可以接受?

    如同硬编码文字是否可以接受 但我在这里特别想到 神奇的字符串 在一个大型项目中 我们有一个配置选项表 如下所示 Name Value FOO ENABLED Y BAR ENABLED N 数百个 常见的做法是调用通用函数来测试选项 如下所