在我的编程实践中,我经常遇到客户端和服务器端脚本之间的数据重复问题。 在这种情况下,我们可以在服务器端讨论cleint端的Javascript和PHP或C#(ASP.NET)。
让我们说,我有一个JavaScript代码,用于定义具有特定数据的常量(或数组或对象)。例如。它可以是引用应用业务规则的数据。这个数据也应该在后端使用,我必须在适当的脚本中定义这个常量。
在这一刻,当我们定义第二个变量时,我们违反了原则"不要重复自己"。现在,当我在前端更改此常量时,我必须在后端更改此常量。
以这种方式耦合的数据可能会增长,而且我的代码将来很难维护。
所以,接下来我的问题是:在客户端 - 服务器通信环境中是否存在遵循DRY原则的任何方法或良好实践?例如,将这种数据保存在.settings文件中并在前端和后端读取它是不错的做法?
答案 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以便于开发。