- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
public function set flip(value:Boolean):void {
if (this.object.flip != value) {
this.object.flip = value;
this.clearCells();
var cell:Cell = this.cell;
}
}
public function get cell():Cell {
if (!this._cell) {
createCell();
}
return this._cell;
}
по мне, проверка вообще должна быть внутри метода - мало ли, в другом месте забудем проверить.
defensive programming вообще рулит.
как там в AS дела обстоят с assert'ами? это просто шикарно
if (this.object.flip != value) {
this.object.flip = value;
}
А что тут смущает?
А проблема передергивания в данном месте в том что после удаления данных происходит обращение к ним, случайно аснхронное, и они воскресают)
пишем и в дебаг режиме получаем ошибку выполнения, если условие не выполнено, а в продакшн ассерты не компилятся, что нам дает возможность проверять корректность входных данных\результата без ущерба в производительности, в одну строку и немедленно, без дополнительных усилий тестирования.
> А что тут смущает?
а зачем делать проверку, если результат в любом случае value?
Затем чтобы не дергать лишний раз, это нормальная практика. Может там на сеттер эвент генерится об обновлении данных.
у нас в жабе вообще ресурсы ограничены - превысил лимит памяти - и все посыпалось. особенно мало ресурсов на андроиде
А это сеттер и есть.
Но, конечно, бойлерплейта много и нужно не забыть привязать настройку к дебаг/релиз переключателю и т.д.
В Хексе можно было бы лучше сделать, т.как макросы + условная компиляция на уровне.
В исходниках популярных продуктов ассерты проверяют тривиальные вещи типа assert(2 * 2 == 4). Как я понял, делается это для проверки гипотез, а именно для того, чтобы убедиться, что фрагмент кода компилируется и работает именно так, как ожидает разработчик.
Почему не в отдельном файле? Ассерт прямо на месте позволяет протестировать выражение в готовом окружении с инициализированными объектами. Почему ассерты не удаляют после выпуска модуля? Чтобы можно было ещё раз протестировать при рекомпиляции другой версией компилятора.
Таким образом, ассерт полезен для статического анализа, а не для отладки и не для контроля.
Ну и можно в результате включать и выключать throw ошибок, и для совсем финального продакшена выкусывать логи.
оставайтесь на линии, ваше присваивание очень важно для нас
НУЖНО БОЛЬШЕ ЫНТЫРПРАЙЗА