使用 "isSomething" 的最佳方式是什么?

what's the best way to use "isSomething"?

大家好,

我没有问题,我只是想知道在 OOP 范例中实现 isSomthing 的最佳方式是什么?


举个例子:我们想知道用户是否被暂时(比如 10 分钟)禁止。以下是两个选项:


  1. 正在 User class 中实施 isTempBanned() 方法。然后每当我们想检查用户是否被禁止时,我们只需调用这个方法。无需更改代码的其他部分。


  1. 为用户 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 ....
    }
}