例如,假设您正在用Java编写应用程序。
您的应用程序与使用Python编写的API服务器进行通信。
Python服务器与SQL数据库进行通信。
您还拥有一个用JavaScript编写的应用程序网站。
使用4种不同的语言,很容易以4次不同的时间重复基本相同的数据结构。
例如,User
类型可能看起来像这样(伪代码):
type User {
integer id;
string name;
timestamp birthday;
}
项目的每个部分都需要某种形式的表示User
。Java和Python部分将需要两个不同的class
声明。数据库将需要一个User
表声明。前端站点也需要代表一个站点User
。
重复此类型4次确实违反了“ 请勿重复自己”原则。还有一个问题是,如果User
更改了类型,则需要在项目的每个不同部分中重复这些更改。
我知道Google的protobuf库为该问题提供了一种解决方案,您可以使用特殊的语法编写数据结构,然后该库以多种不同的编程语言为您生成结构声明。但这仍然没有解决必须为您的类型重复验证逻辑的问题。
是否有人对此有任何建议或链接到书籍/博客文章?
Repeating this type 4 different times really breaks the Don't-Repeat-Yourself principle
。不,不是。您有4个不同的系统执行不同的操作。您将DRY调得太远了。根据我的经验,您想要做的可重用性是邪恶的种子,因为引入了紧密的耦合。这甚至比User
用4种不同的语言重复4次更为糟糕。在分布式环境中,耦合是一个问题。不是DRY。