我应该用我自己的类型封装 id 字段吗?
Should I encapsulate id field with my own type?
考虑以下片段:
class User {
String id;
...other fields
}
class Id extends String {
}
class User {
Id id;
...other fields
}
我应该使用哪一个?我从未见过有人使用他们自己的 Id 类型。现在我在想:这样做有什么弊端吗?
这种技术称为微打字,有时也称为微型打字。它往往使您的代码更具表现力,从而更安全、更易读。
然而,它也创建了另一层间接:代码的 reader 必须了解 Id
是什么才能完全理解它。她可能已经知道 String
是什么了。
一般来说,我强烈推荐微打字。可能在某些情况下它可能做得过头了,但到目前为止我还没有找到。所以不用担心。
关于您的具体实现:在某些语言中,例如 Java,不可能从标准 类 中派生,例如 String
。在 C++ 等其他语言中,这是可能的,但不推荐。因此我宁愿使用组合而不是继承:
class Id {
private String id;
...
}
考虑以下片段:
class User {
String id;
...other fields
}
class Id extends String {
}
class User {
Id id;
...other fields
}
我应该使用哪一个?我从未见过有人使用他们自己的 Id 类型。现在我在想:这样做有什么弊端吗?
这种技术称为微打字,有时也称为微型打字。它往往使您的代码更具表现力,从而更安全、更易读。
然而,它也创建了另一层间接:代码的 reader 必须了解 Id
是什么才能完全理解它。她可能已经知道 String
是什么了。
一般来说,我强烈推荐微打字。可能在某些情况下它可能做得过头了,但到目前为止我还没有找到。所以不用担心。
关于您的具体实现:在某些语言中,例如 Java,不可能从标准 类 中派生,例如 String
。在 C++ 等其他语言中,这是可能的,但不推荐。因此我宁愿使用组合而不是继承:
class Id {
private String id;
...
}