Design patterns 避免使用编程语言类型的做法有没有名字?
我试图说服同事停止编写这样的代码(java示例): 并编写如下代码:Design patterns 避免使用编程语言类型的做法有没有名字?,design-patterns,Design Patterns,我试图说服同事停止编写这样的代码(java示例): 并编写如下代码: class Person { PersonId id; PersonName name; PersonSurname surname; } class PersonName { public String value; public PersonName(String value) { this.value = value; } } 基本上,我希望避免过度使用
class Person {
PersonId id;
PersonName name;
PersonSurname surname;
}
class PersonName {
public String value;
public PersonName(String value) {
this.value = value;
}
}
基本上,我希望避免过度使用字符串、long,并使用与域对应的专用类型。这不是一个新的概念、方法或实践(不管你怎么称呼它),所以它可能已经有了一个名字。可能有很多人已经写过这种方法的利弊,但我找不到任何人,因为我不知道该找什么 是的,这种做法的名称是
避免原始困扰
据此:
气味:原始困扰是使用原始数据类型来表示领域想法。例如,我们使用字符串表示消息,使用整数表示金额,或使用Struct/Dictionary/Hash表示特定对象
修复方法:通常,我们引入ValueObject来代替原始数据
工具:有些语言让你更容易或更难做到这一点
在像C#和Java这样的语言中,仅仅包装一个简单的字符串或int就可以创建数百个小类型,这可能是一件痛苦的事情。例如,您将有很多这样的类:
class Person {
PersonId id;
PersonName name;
PersonSurname surname;
}
class PersonName {
public String value;
public PersonName(String value) {
this.value = value;
}
}
但在类似F#的情况下,创建简单的包装器类型非常简单:
type PersonName = PersonName of string
关于这个主题的一些好文章:
避免原始的困扰
据此:
气味:原始困扰是使用原始数据类型来表示领域想法。例如,我们使用字符串表示消息,使用整数表示金额,或使用Struct/Dictionary/Hash表示特定对象
修复方法:通常,我们引入ValueObject来代替原始数据
工具:有些语言让你更容易或更难做到这一点
在像C#和Java这样的语言中,仅仅包装一个简单的字符串或int就可以创建数百个小类型,这可能是一件痛苦的事情。例如,您将有很多这样的类:
class Person {
PersonId id;
PersonName name;
PersonSurname surname;
}
class PersonName {
public String value;
public PersonName(String value) {
this.value = value;
}
}
但在类似F#的情况下,创建简单的包装器类型非常简单:
type PersonName = PersonName of string
关于这个主题的一些好文章:
Person
对象,而不是它的单个字段,我就不会称之为string-typed编程。它通常被称为string-typed编程。我个人认为第一个示例很好。只要传递的是Person
对象,而不是它的单个字段,我就不会调用这种严格类型的编程。