Javascript 干净代码:链接调用函数的函数
我有一些代码执行一系列步骤,例如获取一些数据,解析数据,然后向用户显示数据。这让我想知道实现这一点的正确方法。我在下面列出了两个选项。我认为第二种选择更糟糕,因为函数之间的联系更紧密。但是,如果函数只按照这个顺序使用一次,那么第二个函数不是更简单吗 备选案文1:Javascript 干净代码:链接调用函数的函数,javascript,organization,Javascript,Organization,我有一些代码执行一系列步骤,例如获取一些数据,解析数据,然后向用户显示数据。这让我想知道实现这一点的正确方法。我在下面列出了两个选项。我认为第二种选择更糟糕,因为函数之间的联系更紧密。但是,如果函数只按照这个顺序使用一次,那么第二个函数不是更简单吗 备选案文1: function run(){ let data = getData(); let parsedData = parseData(data); displayData(parsedData); } functi
function run(){
let data = getData();
let parsedData = parseData(data);
displayData(parsedData);
}
function getData(){
// Gets the data, then:
return data;
}
function parseData(data){
// Parses the data, then:
return parsedData;
}
function displayData(data){
// Displays data
}
run();
备选案文2:
function getData(){
// Get the data, then:
parseData(data);
}
function parseData(data){
// Parse the data, then:
displayData(parsedData)
}
function displayData(data){
// Display the data
}
getData();
对我来说,最优雅的解决方案是使用Promissions(您也可以使用async/await for client-server操作):
你的问题是基于意见的,这样的问题在stackoverflow上是离题的。话虽如此,在我看来,第一个选项更好,因为与第二个选项相比,该代码更容易测试,并且更容易遵循第一个选项中的代码流。在我看来,选项1更有意义<代码>解析数据应该只解析某个内容,而不是显示它…-再一次。。。在我看来:)绝对不要做选择2。有些函数说它们做一件事,但实际上它们也做了很多其他的事情。查找最小惊奇原则。我会通过“概念层次”来组织它们——一个名为[不管这个高层次的过程是什么,绝对不是“运行”]的函数,它又由几个低层次的、命名良好的函数组成,而这些函数又各自做甚至更低层次的事情。这似乎是共识。谢谢大家。
function getData(){
return Promise.resolve(1);
}
function parseData(data){
// Parses the data, then:
return Promise.resolve({one: data});
}
function displayData(data){
console.log(data);
}
getData()
.then(data => parseData(data))
.then(parsedData => displayData(parsedData))
.catch(err => console.error(err));