我对我刚才读到的最佳做法有疑问: https://github.com/ryanmcdermott/clean-code-javascript#remove-duplicate-code
问题在于变量赋值
let portfolio = employee.getGithubLink();
if (employee.type === 'manager') {
portfolio = employee.getMBAProjects();
}
我这样做只是为了实例化一次投资组合。
if (employee.type === 'manager') {
let portfolio = employee.getMBAProjects();
} else {
let portfolio = employee.getGithubLink();
}
我的问题是:为什么更好地实例化一个变量并覆盖它,而不是仅使用“else”语句对其进行一次实例化。
答案 0 :(得分:1)
我会考虑
const portfolio = (employee.type === 'manager') ? employee.getMBAProjects() : employee.getGithubLink();
作为选项。如果没有正当理由,你不应该覆盖/改变变量。
答案 1 :(得分:1)
首先,如果您使用{
定义变量,它只能在定义它的块范围内使用(在}
portfolio
内) 。因此,如果以您的方式执行,变量undefined
将是var
外部条件语句。在此选项中,您可以使用if (employee.type === 'manager') {
var portfolio = employee.getMBAProjects();
} else {
var portfolio = employee.getGithubLink();
}
关键字,它可以正常工作
var
但是现在谁使用else if
?
次要,我认为,这种方式让其他开发人员感到困惑。所有样式指南都来自开发人员(包括您)的代码的可读性和可理解性。
理解一个特定变量的实例化更容易理解。在上面的例子中,我看到两个实例(无论只有一个将被执行)。如果您的代码有长{{1}}链?
,该怎么办?第三,如果你在条件语句之外实例化变量,则需要少写。这很好。