Javascript 干净代码:链接调用函数的函数

Javascript 干净代码:链接调用函数的函数,javascript,organization,Javascript,Organization,我有一些代码执行一系列步骤,例如获取一些数据,解析数据,然后向用户显示数据。这让我想知道实现这一点的正确方法。我在下面列出了两个选项。我认为第二种选择更糟糕,因为函数之间的联系更紧密。但是,如果函数只按照这个顺序使用一次,那么第二个函数不是更简单吗 备选案文1: function run(){ let data = getData(); let parsedData = parseData(data); displayData(parsedData); } functi

我有一些代码执行一系列步骤,例如获取一些数据,解析数据,然后向用户显示数据。这让我想知道实现这一点的正确方法。我在下面列出了两个选项。我认为第二种选择更糟糕,因为函数之间的联系更紧密。但是,如果函数只按照这个顺序使用一次,那么第二个函数不是更简单吗

备选案文1:

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));