假设我们有这样的代码(js):
/**
* @param {String} type Could be only 'high' or 'low'
* @return {String}
*/
function getSome(type) {
if (type == 'high') {
return 'This is high';
} else if (type == 'low') {
return 'This is low';
}
}
如果此变体优于此(我不包括注释;它们是相同的)?:
function getSome(type) {
if (type == 'high') {
return 'This is high';
} else {
return 'This is low';
}
}
我多次遇到类似的情况。通常我没有考虑最好的变体,并写了第一个。但现在我想决定将来使用哪种变体。
最后一个问题。如果我需要在else
中检查变量的相等性,如果变量只有两个值且第一个值在if
语句中给出?我也想知道使用函数注释如何影响答案。
答案 0 :(得分:9)
如果只有as_prob = udf(lambda x: DenseVector([1 - x, x]), VectorUDT())
df.withColumn("prediction", as_prob(df["prediction"]))
和high
值有效,请考虑第三种选择:
low
快速失败。这可以帮助您更快地发现错误。
答案 1 :(得分:2)
为什么不使用对象作为两个值的分组。对于未知类型,函数返回undefined或任何其他默认值。
function getSome(type) {
return { high: 'This is high', low: 'This is low'}[type];
}
默认
function getSome(type) {
return { high: 'This is high', low: 'This is low'}[type] || 'type not known.';
}
答案 2 :(得分:0)
使用switch
运算符会更方便,特别是如果您有更多可能的值:
function getSome(type) {
switch(type){
case 'hight':
return 'This is a high';
break;
case 'low':
return 'This is a low';
break;
case 'third':
return 'This is a third';
break;
default:
throw new Error(type + ' is invalid.');
break;
}
}