По моему субъективному мнению в переводе на человеческий:
Koka имеет в виду, что вместо банального выражения "Если идет дождь" не стоит писать "Если дождь идет это правда".
Trill же привел пример кода наших западных друзей, которые вместо выражения "Если идет дождь, возьми зонт, иначе – не бери", написали конструкцию "Если идет дождь это правда, возьми зонт, иначе, если идет дождь это ложь, не бери зонт".
Господин же lefty, иронично подметил, что раз уж отрицание выражения "идет дождь" не очевидно (для германских авторов), то следует "на всякий случай" еще дописать одно "иначе", а то вдруг кроме "идет дождь это правда" и "идет дождь это ложь" есть еще варианты.
Лектор:
- Грудная клетка человека представляет из себя яйцо, перевернутое вверх ногами, подрезанное снизу и слегка подвинутое в передне-заднем направлении.
Студент:
- А как это???
Лектор:
- Ну вы себе что - грудную клетку не представляете?
Студент:
- Теперь уже не представляю.....
Ну тип, у тебя есть переменная у которой ты ОЖИДАЕШЬ значения или true, или false. Но эта-же переменная может быть и null, и другого формата типа даты, строки, цифры и хуй знает чем ещё. Может она вообще пока даже не была задана. Вот на такие случаи и можно добавить завершающий else, тип когда "всё пошло не по плану и на всякий чтоб программа не встала вывести "всё хуйня"."
Может так четче видно? "!" всякие можно и проглядеть. Условие в елсе нужно, если кода много, чтобы видеть сразу, какие условия в ветке выполняются.
В нормальных местах, правда, для этих целей используют комментарии.
Чуть минус не влепил за такой кодстайл. Подозреваю, что это переехало из кодстайла к другому языку. Ну и еще говорят, лучше безобразно, но однообразно. С чем я, отчасти, даже согласен.
Это C# и там строгая типизация, как и в яве. Там нет никаких undefined, типы значений, например bool может быть строго true/false. Ссылочный тип может не иметь значения, то есть там будет null. Через System.Nullable можно обернуть тим значения в ссылочный тип, который в свою очередь уже может принимать значение null. Зачем? В моей рабочей БД (MS SQL) сейчас в табличках 529 филдов стипом Bit (а не Bit NOT NULL), которые могут иметь три значения true/false/null. И в синтаксисе у тебя уже не выйдет полноценно юзать синтаксический сахар воокруг такой мудреной булки, и так же тебе приходится учитывать уже не два, а три возможных состояния такой переменной. Тебе приходится делать выражения вроде .Where(hope => hope != true). Это целиком легально.
null это вполне себе значение и состояние в базе данных - от тебя в любой момент могут потребовать логику, опирающуюся на факт что значение этому полю еще не было присвоено.
Чтобы null не был "вполне себе значением и состоянием" можно указать not null для конкретного поля, для для bit-а логично. Ну, а если это уже никак не поменять по соображениям какого-то межгалактического порядка (что у индусов бывает с завидной регулярностью), то можно использовать COALESCE. Если нельзя, то можно написать и так if (!(hope ?? false)) например. Или сделать свою обертку по аналогии с isNullOrEmpty. Или выставить default. Или привязать к модели с предустановленными значениями. Или... да, короче, решений много.
лучше один раз COALESCE при вычитке из базы в объект, чем if в 10 местах, где этот объект используется. Ну, если логика позволяет привести к true/false, конечно.
Ну как бы котлин тоже не с динамической типизацией язык. Просто Nullable объявляются примерно так же:
var a : boolean?
И там конструкция где сначала проверяешь на null, а потом уже работаешь как с обычным bool более чем легальна.
Я как бы потому и скинул этот пример, пытаясь обьяснить, что писать в VS if (x == false) это не обязательно преступление и может быть вполне обосновано ситуацией, или даже тупо привычкой везде работать с nullable.
Короткая запись "if (!x)" - это сахар и не более, не всегда и не вео всех случаях уместный и писать как то иначе - это не признак некомпетентности.
На прошлой работе платформа работала на форке VB. В общем компилятор не отлавливал некоторые синтаксические ошибки (сам раз 12-15 ловил) и код (причем мог вообще в любом другом месте) работал, но крайне безумно.
В частности могло произойти так, что в
If x=0 then
A
Else
B
не исполнялось ни А ни B, а код шел дальше не выпадая ни в какую ошибку.
Лол, немножко эзотерического BrightScript в тредик:
isTrue = value = true
Как наиболее простой способ проверить что value не invalid(внутренний тип, а-ля null в нормальном ЯП) и равно true(да, не очепятка, присвоение и сравнение - один символ "равно"). Пиздец удобно...
все решает контекст задачи и язык) если это не строго типизированый язык, и у тебя например что-то по умолчанию true (например let asd = true), тебе приходит обект в котором asd опциональный параметр и его не передали - он undefined при проверке if(!params.asd){asd=params.asd} условие выполнится, но по факту не должно и может поломать биз. логику. Потому будем надеяться что мем про c# или с++ )
хоть и немного из другой области, но
select CAST(@IDChair ASCII varchar) в MSSQL заебал неимоверно.
Кто-нить знает как автоподстановку этого говна по нажатию пробела отключить?
Ivan Radziankou
@Veterrr
V
Удивительно, как люди могут паниковать по поводу неминуемой смерти от коронавируса и планировать следующий спринт на проекте ОДНОВРЕМЕННО.
Translate Tweet
12:28 • 3/12/20 • Twitter Web App
8 Likes
Q Q ¥ Д
Varjat (tfvarjat • 27m Replying to @Veterrr
He понимаю в ч
Отличный комментарий!