Каков наилучший способ использовать «isSomething»? - PullRequest
0 голосов
/ 26 марта 2020

Привет, ребята,

У меня нет проблем, мне просто интересно, как лучше всего реализовать isSomthing в OOP парадигме?

Возьмите этот пример: мы хотим знать, был ли пользователь временно (например, 10 минут) забанен. Вот два варианта:

  1. Реализация метода isTempBanned() в классе User. Затем, когда мы хотим проверить, забанен ли пользователь, мы просто вызываем этот метод. никаких изменений в других частях кода не требуется.

Добавление свойства isTempBanned в класс User. Затем, когда состояние бана пользователя меняется, мы соответствующим образом обновляем это свойство. Тогда, когда нам нужно знать, мы просто используем это свойство.

Можете ли вы объяснить плюсы и минусы каждого способа? с этих точек зрения:

  • производительность
  • обслуживание кода
  • чистый код
  • удобочитаемость
  • и * c ...

Имейте в виду, что лучшего способа не существует. Я просто спрашиваю, когда мне следует использовать первый метод, а когда - второй.


Ответы [ 2 ]

1 голос
/ 26 марта 2020

В конечном итоге вы должны использовать оба из них!

на основе принципа инкапсуляции, думайте о своем примере как о сценарии получения / установки, чтобы сохранить как можно меньше ошибок, метод получения - это метод User.isBanned, метод установки это метод 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 ....
    }
}
0 голосов
/ 26 марта 2020

isSomthing обычно используется для логического значения. независимо от того, какой тип данных вы используете. все различия являются методами и свойствами. Я предлагаю вам прочитать это:

Свойства и методы

...