哪个设计更好?将此逻辑放在前端还是后端?

时间:2019-06-04 19:51:54

标签: oop

我们有一个名为copy(fileName)的API,基本上它可以将文件从源复制到目标,并且由于源和目标位于同一位置,因此我们不需要指定它。

现在,我们将文件系统划分为不同的位置,例如ABCD。我们始终会复制到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复制(fileName,source),并将source作为可选的param / empty字符串传递,要么具有2个单独的函数,例如copyFrom(fileName,source)和checkAndCopy(fileName);
  2. 在前端创建一个新函数checkAndCopy,在后端创建另一个新函数copy(文件名,源),让前端决定要调用哪个。

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

1 个答案:

答案 0 :(得分:2)

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