首页 > 解决方案 > 哪个设计更好?把这个逻辑放在前端还是后端?

问题描述

我们有一个名为 的 API copy(fileName),基本上它将文件从源复制到目标,因为源和目标在同一个地方,所以我们不需要指定它。

现在我们将文件系统拆分到不同的位置,比如A, B, C, D。我们总是复制到D,但文件可能来自ABC。所以我们需要一些逻辑,比如:

function checkAndCopy(fileName) {
    if (fileExistInA) copy from A to D
    else if (fileExistInB) copy from B to D
    else if (fileExistInC) copy from C to D
}

我想把这个函数放在后端 原因是后端的变化应该封装在 API 中,这样调用者就不需要担心实现细节。

但是我们的后端团队不想维护它,他们只想提供 copyFrom(fileName, source) 的最终版本。所以如果前端不知道源,我建议他们将源作为可选参数或空字符串。一旦我们进行前端更改,我们将始终发送源并从 copyFrom(fileName, source) 中删除空字符串/可选参数逻辑。

后端人员认为使用可选参数或故意传递空字符串是一个糟糕的设计,即使他们知道这是暂时的也不想要它。

那么哪个设计更好呢?

  1. 将此逻辑放在后端,要么有一个 API 副本(文件名,源)并将源作为可选参数/空字符串传递,要么有 2 个单独的函数,例如 copyFrom(fileName, source) 和 checkAndCopy(fileName);
  2. 在前端创建一个新函数 checkAndCopy,在后端创建另一个新函数 copy(fileName, source) 并让前端决定调用哪个函数。

请注意我的问题不是关于如何编写函数,而是将这些函数放在哪里。

标签: oop

解决方案


您应该像 copy(source, target)在 API 中那样进行原子调用。复制功能本身不应与特定目录相关。它的用例是复制,而不是确定目标目录。


推荐阅读