- 1
assertTrue(!reportDto.getOrder());
Нашли или выдавили из себя код, который нельзя назвать нормальным, на который без улыбки не взглянешь? Не торопитесь его удалять или рефакторить, — запостите его на говнокод.ру, посмеёмся вместе!
+76
assertTrue(!reportDto.getOrder());
Фантазия индусов неиссякаема. Перед написанием кода читать Упанишады до просветления.
Я позитивный?
Это очевидно даже без знания того факта, что
> Я тоже не люблю писать assertFalse
Некоторым, к сожалению, нет.
Равно как и моя иррациональность.
С названием согласен. Хотя может используется какой-нить фреймворк, которому необходимо именование get/set? А is просто не поддерживается?
Order - заказ, т.е. существительное. Поскольку я знаю контекст, могу сказать, что здесь должно быть прилагательное "заказан".
selffix
> полиморфизм на что?
поясните мысль.
alexoy? :)
например, есть абстрактный класс - мебель. для него объявлены методы изСтол()/изДиван() ...
хотя, конечно, это у меня тоже вызывает подозрение :)
Стол и диван - реализации, а методы могут быть, к примеру:
isSleepable()
isVisibleInTheDark()
isLovedByMyCat()
etc...
Бывают ситуации, когда это намного удобнее, чем городить отдельные классы.
Не встречал в языках с поддержкой ООП ситуаций, где это было бы удобнее. Ваш пример мне ничего не говорит. Ещё дедушка Бьярне завещал нам не использовать меток типа там, где возможно наследование.
в Clojure иногда есть смысл использовать их для мултиметодов, но это отдельная песня, так как мультиметоды нужны довольно редко
Мысли вслух: поскольку у современных аппаратов довольно много функций, наверняка есть набор операций, которые вы хотите совершать с устройством. По мне так типы девайсов тут вообще особо не нужны, достаточно одного Device. В енум помещаем возможные типы операций, в Device помещаем методы
isSupportedOperation(OperationType t): boolean
executeOperation(OperationType t, Array[Object] args): void
getSupportedOperations(): Array[OperationType]
и объявляем два инстанса Device: phone и notebook, для которых определяем набор возможных операций.
Модель можно и нужно менять в зависимости от задачи, но любой код, содержащий логику обработки меток типа, вызывает у меня подозрения.
Проблема с методами isXXX в том, что нужно будет менять ваш класс Device после добавления нового типа девайса. Если типов много, этот класс очень быстро превратиться в жуткое мясо, а код - в вермишель.
Метод isXXX по большей части как шорткат для type == Type.XXX. Например, для нескольких наиболее часто используемых все-таки лучше сделать шорткаты.
isСуществительное имеет право на жизнь, но только в специфических ситуациях.
> isDirectory()/isFile().
Да, я держал в уме эти методы. Есть мнение, что такое API выглядит кривоватым. Мне больше нравится, как это сделано в Python: модуль os.path умеет определять по заданному, является ли объект файлом или каталогом, а api класса File направлено на ввод-вывод в стиле юникса.
правильная эмфаза