前端和后端之间的DRY原则

时间:2015-04-14 03:06:30

标签: oop dry

在我的编程实践中,我经常遇到客户端和服务器端脚本之间的数据重复问题。 在这种情况下,我们可以在服务器端讨论cleint端的Javascript和PHP或C#(ASP.NET)。

让我们说,我有一个JavaScript代码,用于定义具有特定数据的常量(或数组或对象)。例如。它可以是引用应用业务规则的数据。这个数据也应该在后端使用,我必须在适当的脚本中定义这个常量。

在这一刻,当我们定义第二个变量时,我们违反了原则"不要重复自己"。现在,当我在前端更改此常量时,我​​必须在后端更改此常量。

以这种方式耦合的数据可能会增长,而且我的代码将来很难维护。

所以,接下来我的问题是:在客户端 - 服务器通信环境中是否存在遵循DRY原则的任何方法或良好实践?例如,将这种数据保存在.settings文件中并在前端和后端读取它是不错的做法?

2 个答案:

答案 0 :(得分:0)

DRY主体适用于逻辑中的重复,并不一定意味着不在前端和bakend中使用相同的变量。如果适用这种情况,那么使用视图模型和DTO会使DRY主体失效。您需要将UI的关注点与其他图层分开。您的用户界面可能会发生变化,但您的业务逻辑不应该分散在一起,因为重复的代码可能会使可维护性成为噩梦。看看automapper并理解对象映射的概念,这可能会消除您的困惑。

答案 1 :(得分:0)

基于维基百科,DRY表示为

  

每一条知识都必须有一个单一的,明确的,   系统内的权威表示

因此,您在不同图层中的重复知识会违反DRY。

定义了这些常量后,许多地方可能会成为一个很大的问题。当您想要配置常量时,更糟糕的是。幸运的是,您可以通过从服务器设置javascript变量来解决问题。

例如在php:

var constants = <?php echo JSONConstants($constants); ?>;
console.log(constants.companyName);

您只需确保在加载javascript的任何业务逻辑脚本之前执行脚本。此外,您需要处理哪些常量(并在一些不错的结构中构建它),这些常量将被传递给javascript以便于开发。