2017-06-04 54 views
0

考虑如下片段:我应该用自己的类型封装id字段吗?

class User { 
    String id; 

    ...other fields 
} 
class Id extends String { 

} 

class User { 
    Id id; 

    ...other fields 
} 

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

回答

3

这种技术被称为microtyping,有时微小打字。它往往会使你的代码更具表现力,从而更安全和更具可读性。但是它也会创建另一个间接层:代码的读者必须知道Id是完全理解它的。她可能已经知道String是什么。

一般我强烈建议微型化。可能有些地方可能会过度使用,但到目前为止还没有发现。所以不要担心。

关于您的特定实现:在某些语言(如Java)中,不可能从String等标准类派生。在其他语言如C++中可能但不推荐。所以我宁愿用构图代替继承:

class Id { 
    private String id; 
    ... 
} 
相关问题