我在NodeJS应用程序中有一个简单的代码,它使用以下假设的URL发送请求
private getApiUrl(): string {
return `https://${domainExample}.host-example.com/API/version/example/${exampleValue}`;
}
创建一个名为Constant.ts
的单独文件并将此url作为常量是否是一个更好的做法?或者是否仍然可以接受将此URL放在字符串文字中。
Constant.ts
export const BASE_URL = 'https://%s.qualtrics.com/API/v3/imported-data-projects/%s'
// assume these files are separate
private getApiUrl(): string {
return util.format(BASE_URL, domainExample, exampleValue) ;
}
2条答案
按热度按时间muk1a3rh1#
我想在@jfriend00的答案中再添加几个案例,当它可能有助于将此类URL存储到单独的常量中时:
const QUALTRICS_API_URL = "..."
),以避免所谓的"magic strings"。yjghlzjz2#
这里没有普遍的建议,因为它实际上取决于许多因素。
首先,最好避免在多个地方为这样的资源重复相同的字符串定义。因此,如果将它放在一个
const
单独的文件中允许您在多个模块之间共享定义,那么这通常是可取的。但是,有时将所有字符串收集到一个单独的文件中会使封装、模块化和封装维护的容易性变得复杂。所以,这都是一个权衡。人们只能通过理解跨许多模块的代码的总体布局和理解哪些模块可以在其他上下文中重用来提供关于如何进行这种权衡的意见。如果这个URL结构很少(如果有的话)改变,也不会在其他地方使用,那么嵌入的模板字符串就更容易编码和阅读。不需要添加更多的代码行,只需使用单独的
const
声明和util.format()
调用。模板字符串是最简单的结构,将其移到constants.ts
只会增加复杂性。如果此URL结构可能需要偶尔与其他相关URL一起沿着进行编辑,则将所有可能需要此类维护的URL收集到一个模块(如
constants.ts
)中可能会有显著的维护优势。如果需要修改域或API版本,那么将所有与API一起使用的URL放在一个地方(如constants.ts
)会有很大的好处。由于上面的两种结构是冲突的,你必须决定哪种折衷更有利于你的项目的需要。我尽量使我的代码尽可能简单,以满足需要,这导致我嵌入模板字符串,除非有一个明确的需要,以分离出所有的URL字符串(维护的原因)。