使用 "isSomething" 的最佳方式是什么?
what's the best way to use "isSomething"?
大家好,
我没有问题,我只是想知道在 OOP 范例中实现 isSomthing
的最佳方式是什么?
举个例子:我们想知道用户是否被暂时(比如 10 分钟)禁止。以下是两个选项:
- 正在
User
class 中实施 isTempBanned()
方法。然后每当我们想检查用户是否被禁止时,我们只需调用这个方法。无需更改代码的其他部分。
- 为用户 class 添加 isTempBanned 属性。然后,每当用户的禁令状态发生变化时,我们都会相应地更新此 属性。那么当我们需要知道的时候,我们就用这个属性。
您能解释一下每种方式的优缺点吗?从这些观点来看:
- 性能
- 代码可维护性
- 干净的代码
- 可读性
- 等...
请记住,没有更好的方法。我只是想知道什么时候应该使用第一种方法,什么时候使用第二种方法。
isSomthing 通常用于布尔值。无论您使用什么数据类型。所有差异都是方法和 属性 差异。
我建议你阅读这篇文章:
Properties vs Methods
最终你必须同时使用它们!
基于封装原则,将您的示例视为一个 getter/setter 场景,以尽可能减少错误,
getter是User.isBanned方法,setter是User.banUser方法。
class User{
banned_until : Date = null
isBanned(){
if(this.banned_until){
return this.banned_until.valueOf() > new Date().valueOf();
}
return false;
}
banUser(){
this.banned_until = new Date() ///any date in future ....
}
}
大家好,
我没有问题,我只是想知道在 OOP 范例中实现 isSomthing
的最佳方式是什么?
举个例子:我们想知道用户是否被暂时(比如 10 分钟)禁止。以下是两个选项:
- 正在
User
class 中实施isTempBanned()
方法。然后每当我们想检查用户是否被禁止时,我们只需调用这个方法。无需更改代码的其他部分。
- 为用户 class 添加 isTempBanned 属性。然后,每当用户的禁令状态发生变化时,我们都会相应地更新此 属性。那么当我们需要知道的时候,我们就用这个属性。
您能解释一下每种方式的优缺点吗?从这些观点来看:
- 性能
- 代码可维护性
- 干净的代码
- 可读性
- 等...
请记住,没有更好的方法。我只是想知道什么时候应该使用第一种方法,什么时候使用第二种方法。
isSomthing 通常用于布尔值。无论您使用什么数据类型。所有差异都是方法和 属性 差异。 我建议你阅读这篇文章:
Properties vs Methods
最终你必须同时使用它们!
基于封装原则,将您的示例视为一个 getter/setter 场景,以尽可能减少错误, getter是User.isBanned方法,setter是User.banUser方法。
class User{
banned_until : Date = null
isBanned(){
if(this.banned_until){
return this.banned_until.valueOf() > new Date().valueOf();
}
return false;
}
banUser(){
this.banned_until = new Date() ///any date in future ....
}
}