我应该用自己的类型封装id字段吗?

时间:2017-06-04 21:54:48

标签: types language-agnostic

考虑以下片段:

class User {
  String id;

  ...other fields
}
class Id extends String {

}

class User {
  Id id;

  ...other fields
}

我应该使用哪一个?我从来没有见过使用自己的Id类型的人。现在我在想:这样做有什么缺点吗?

1 个答案:

答案 0 :(得分:3)

这种技术称为微型打字,有时候是微型打字。它往往使您的代码更具表现力,从而更安全,更易读。 然而,它还创建了另一层间接:代码的读者必须了解Id完全理解它的内容。她可能已经知道String是什么了。

一般来说,我强烈建议使用微型打样。可能有些情况可能会过度但我到目前为止还没找到。所以别担心。

关于您的具体实现:在某些语言(如Java)中,无法从String等标准类派生。在其他语言如C ++中,它是可能的但不推荐。因此,我宁愿使用组合而不是继承:

class Id {
    private String id;
    ...
}