我有一段代码,其中我调用了一个带有字符串值参数的函数。字符串值使用索引从字符串数组中获取。
if (validateRejectionCategory(rejectionData[0])) {
......
}
在这种情况下,0 仍然被认为是一个幻数吗?我应该将 0 抽象为像 REJECTION_CATEOGRY_POSITION
这样的变量吗?函数名称是否不够清楚,该值将是拒绝类别?
请让我知道你的想法。
一般来说,将每个数值提取到常量是一个坏习惯。你必须像生活中的所有事情一样保持平衡。在这里很明显,您要验证rejectionData
的第一个元素。0
、1
、2
的大多数用途都不是魔法,而是在算法中使用。
你通常需要提取在代码上下文中不容易解释的数值。
例如,如果您的代码在某个类似主文件中看起来像这样:
app.modalTimeooutSeconds = 3.0
将其重写为
let timeoutSeconds = 3.0
app.modalTimeoutSeconds = timeoutSeconds
除非您希望存储常量的配置文件,否则您可能没有足够的常量来支持具有这样的文件。
一切都取决于上下文,没有好的答案。