NodeJS 设置常量变量的良好做法

jw5wzhpr  于 2023-10-17  发布在  Node.js
关注(0)|答案(2)|浏览(160)

我在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) ;
}
muk1a3rh

muk1a3rh1#

我想在@jfriend00的答案中再添加几个案例,当它可能有助于将此类URL存储到单独的常量中时:

  • 如果读者不清楚这个URL结构指向什么或它的用法,最好将它存储在一个具有自我描述名称的常量中(如const QUALTRICS_API_URL = "..."),以避免所谓的"magic strings"
  • 如果此URL结构在代码中的多个位置使用,则最好将其存储在常量中,以避免将来它们之间的潜在差异。
yjghlzjz

yjghlzjz2#

这里没有普遍的建议,因为它实际上取决于许多因素。
首先,最好避免在多个地方为这样的资源重复相同的字符串定义。因此,如果将它放在一个const单独的文件中允许您在多个模块之间共享定义,那么这通常是可取的。但是,有时将所有字符串收集到一个单独的文件中会使封装、模块化和封装维护的容易性变得复杂。所以,这都是一个权衡。人们只能通过理解跨许多模块的代码的总体布局和理解哪些模块可以在其他上下文中重用来提供关于如何进行这种权衡的意见。
如果这个URL结构很少(如果有的话)改变,也不会在其他地方使用,那么嵌入的模板字符串就更容易编码和阅读。不需要添加更多的代码行,只需使用单独的const声明和util.format()调用。模板字符串是最简单的结构,将其移到constants.ts只会增加复杂性。
如果此URL结构可能需要偶尔与其他相关URL一起沿着进行编辑,则将所有可能需要此类维护的URL收集到一个模块(如constants.ts)中可能会有显著的维护优势。如果需要修改域或API版本,那么将所有与API一起使用的URL放在一个地方(如constants.ts)会有很大的好处。
由于上面的两种结构是冲突的,你必须决定哪种折衷更有利于你的项目的需要。我尽量使我的代码尽可能简单,以满足需要,这导致我嵌入模板字符串,除非有一个明确的需要,以分离出所有的URL字符串(维护的原因)。

相关问题