问题标签 [hard-coding]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
language-agnostic - 硬编码文字是否可以接受?
我目前正在处理的代码库中充斥着硬编码值。
我将所有硬编码值视为代码异味,并尝试在可能的情况下消除它们……但是有些情况我不确定。
以下是我能想到的两个示例,这让我想知道最佳实践是什么:
在第一种情况下,最好的办法是创建一个允许我执行 MyHelper.Yes 和 MyHelper.No 或者在配置文件中执行类似操作的类(尽管它不太可能改变,谁知道是否有可能曾经是它的使用区分大小写的情况)。
在第二种情况下,除非数学定律发生变化,否则通过除以 100 找到百分比不太可能改变……但我仍然想知道是否有更好的方法。
谁能建议一种适当的方法来处理这种硬编码?任何人都可以想到硬编码可以接受的任何地方吗?
language-agnostic - 硬编码的字符串是否可以接受?
类似于硬编码文字是否可以接受?,但我在这里特别考虑“魔术字符串”。
在一个大型项目中,我们有一个配置选项表,如下所示:
(数百个)。
通常的做法是调用通用函数来测试这样的选项:
(当然,同样的选项可能需要在系统代码中的很多地方进行检查。)
添加新选项时,我正在考虑添加一个函数来隐藏“魔术字符串”,如下所示:
然而,同事们认为我过分了,反对这样做,更喜欢硬编码,因为:
- 这就是我们通常所做的
- 它使调试代码时更容易看到发生了什么
麻烦的是,我能看出他们的意思!实际上,我们永远不会出于任何原因重命名选项,所以我能想到的函数的唯一优势是编译器会捕捉到任何像 fo_enabled() 这样的错字,但不会捕捉到“FO_ENABLED”。
你怎么看?我是否错过了任何其他优点/缺点?
c# - 如何在不对 html 进行硬编码的情况下创建 html 报告?
我目前正在重构一个控制台应用程序,其主要职责是根据存储在数据库中的值生成报告。
到目前为止,我创建报告的方式如下:
(以上只是一个示例......对格式感到抱歉......我试图格式化它,所以它不需要水平滚动......)
我真的不喜欢我这样做的方式。它现在可以工作并且可以完成工作......但我只是认为它不可维护......特别是如果报告在需要创建的 html 方面变得更加复杂。更糟糕的是,我团队中的其他开发人员肯定会为他们的应用程序复制和粘贴我的代码,这些应用程序会生成 html 报告,并且可能会造成可怕的混乱。(我已经看到了这样的恐怖!想象一下一个报表函数,它有数百行硬编码的 sql 来检索报表的详细信息......这足以让一个成年人哭泣!)
然而,虽然我根本不喜欢这个......我只是想不出另一种方法来做到这一点。
当然必须有办法做到这一点......我很确定。不久前,我在 aspx 页面中生成表格时也在做同样的事情,直到有人向我展示了我可以将对象绑定到控件并让 .NET 负责呈现。它把可怕的代码,类似于上面的代码,变成了两三行优雅的代码。
有谁知道在不硬编码 html 的情况下为该报告创建 html 的类似方法?
coding-style - 你对硬编码的态度是什么?
我的是这样的:
硬编码才是王道!我所有的问题都消失了。只需一一编码即可。问题又回来了,会扼杀你的一天。
我绝对讨厌它,但事实是“商务人士”倾向于喜欢它,因为获得他们想要的东西需要更少的时间。作为一名特别是在企业环境中工作的软件开发人员,大多数人会说:“是的,何必麻烦,只需硬编码即可”。你对硬编码的态度是什么?
hibernate - 如何避免 HQL、Hibernate 中的硬编码字段名称?
假设我有以下 HQL:
如果我想重构并将MyEntity
's 的成员变量的名称更改为其他名称aField
,我还必须更改 Strings 中整个代码中的所有匹配项。如果我忘记更改一个 hql 字符串,代码就会中断。
我怎样才能避免这种情况发生?
abstraction - 如果数据由 1 个应用程序使用,则使用数据库表而不是硬编码简单的数据列表的好处
一段时间以来,许多人告诉我,美国各州(和地区)的列表应该存储在数据库表中,并为使用该信息的应用程序缓存。他们给我的唯一原因是促进正常化,因为“这是我们一直这样做的方式”。
现在,如果由于应用程序的范围在国际范围内扩大(比如说包括加拿大各省)而经常更改列表,我可以理解将列表抽象为一个数据表,该数据表也将指示国家标识符。但是,如果列表几乎被锁定并且仅在应用程序的 1 个屏幕上使用,是否值得进行查询和缓存?存储 SMALLINT 外键是否比 CHAR(2) 好得多?它总是实用的吗?
只是在思考我在与我合作过的公司中看到的这种趋势。
database - 如何动态引用另一个数据库用户?
我有一个案例需要引用另一个数据库用户。在引用它时,我必须在视图中硬编码数据库用户名。
有没有办法动态地或基于数据库设置从视图中引用该数据库用户(eg001t3)?
definition - “硬编码”是什么意思?
我的任务要求我访问一个test.txt
文档,因此文件名必须硬编码到我的 C 盘。我不知道硬编码是什么意思。有人可以帮我吗?
sql-server - SQL Server:避免在跨数据库视图中对数据库名称进行硬编码
因此,假设您在同一台服务器上有两个 SQL Server 数据库,它们在它们的视图、函数和存储过程中引用彼此的表。
你知道,像这样的事情:
(我知道跨数据库视图不是很好的做法,但可以说你坚持使用它)
有没有什么好的技术可以避免“硬编码”数据库名称?
(因此,如果您需要偶尔重新指向不同的数据库——也许是为了测试——你不需要编辑大量的视图、fns、sps)
我对 SQL 2005 或 SQL 2008 解决方案感兴趣。干杯。
.net - 如何避免硬编码字符串
这是一个关于最佳编码实践的问题。我想知道关于如何最好地避免在 .NET 应用程序中硬编码字符串和值的共识。到目前为止,我在以前工作过的地方看到了什么:
- 使用资源 .resx 文件
- 将这些值和字符串存储在 App.config 或 web.config 中
制作一个静态类 ApplicationStrings 并在其中声明所有字符串和值:
/li>
但是,不是第三种方法,只是另一种硬编码吗?开这样的课有意义吗?好处是所有字符串都在一个地方,但这真的避免了硬编码吗?
此外,如果您针对这种情况养成了其他习惯,请随时发布。