代码之家  ›  专栏  ›  技术社区  ›  M314

是否有避免使用编程语言类型的实践的名称?

  •  1
  • M314  · 技术社区  · 7 年前

    我试图说服同事停止编写像这样的代码(Java中的例子):

    class Person {
        Long id;
        String name;
        String surname;
    }
    

    然后写这样的代码:

    class Person {
        PersonId id;
        PersonName name;
        PersonSurname surname;
    }
    

    基本上,我希望避免过度使用字符串、long,并使用与域对应的专用类型。这不是一个新的概念、方法或实践(无论您如何称呼它),所以它可能已经有了一个名称。可能有很多人已经写过这种方法的利弊,但我找不到任何利弊,因为我不知道该寻找什么。

    1 回复  |  直到 7 年前
        1
  •  4
  •   Nghia Bui    7 年前

    是的,那个练习的名字是 Avoiding Primitive Obsession .

    根据这个 article :

    气味:原始的困扰是使用原始的数据类型来表示领域的想法。例如,我们使用一个字符串来表示一条消息,使用一个整数来表示一笔钱,或者使用结构/字典/哈希来表示一个特定的对象。

    修复方法:通常,我们引入一个ValueObject来代替原始数据。

    工具:一些语言使你更容易或更难做到这一点。

    在C语言和Java语言中,创建一个简单的字符串或int的几百个小类型是很痛苦的。例如,你会有很多这样的类:

    class PersonName {
        public String value;
        public PersonName(String value) {
            this.value = value;
        }
    }
    

    但在 ML languages 与f_一样,创建简单的包装类型也很简单:

    type PersonName = PersonName of string
    

    关于这个主题的一些好文章:

    推荐文章