使用Node.js模块导入在命名约定和语义之间进行选择

时间:2017-07-07 02:06:32

标签: javascript node.js import module naming-conventions

在Node.js中导入模块时,在导入类时使用大小写是非常常见的(并且极大地有助于提高可读性)和导入其他任何内容时的驼峰大小写:

let Transform = require('stream').Transform;
let util = require('util');
let fs = require('fs');

然而,导入的模块确实应该是常量,因为允许导入模块中的函数或类的值改变是没有意义的:

const Transform = require('stream').Transform;
const util = require('util');
const fs = require('fs');

但命名约定会规定常量应始终使用全部大写和下划线:

const PI = 3.14159265358979;
const AVOGADRO_NUMBER = 6.02214086e23;

因此存在冲突:在命名导入的模块时使用所有大写和下划线通常会在语义上造成混淆,但是不使导入的模块,类或函数成为常量在语义上是不合逻辑的。

因此,任何导入的模块都应使用全部大写和下划线,牺牲一些可读性以及导入模块填充哪个角色(函数/变量或类)的知识:

const RIEMANN_ZETA = require('riemann-zeta');
let nonTrivialZero = RIEMANN_ZETA(s);

或者导入的模块应该使用camelCase或基于角色的大写,牺牲了常量状态和符号之间的一致性:

const riemannZeta = require('riemann-zeta');
let nonTrivialZero = riemannZeta(s);

或者导入的模块应该作为非常量导入,维护所有命名约定,但在导入后牺牲模块的逻辑使用为不可变:

let riemannZeta = require('riemann-zeta');
let nonTrivialZero = riemannZeta(s);

哪个最有意义?

0 个答案:

没有答案