Kirgudu 1 204 Опубликовано 26 Января 2015 @Andrey07071977, @Max Warlock, @power-cat, считайте, что я ничего на этот раз не видел. Предупреждение первое и последнее.Все посты с междусобойчиком (в том числе ответами) - в топку. Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 204 Опубликовано 2 Июля 2015 @*Shoker*, @svarog2741, Меня немного смущает другое. Вы пишете, например, так: if (!GameID() == eGameIDSingle || OnClient()) Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так: if (GameID() != eGameIDSingle || OnClient()) Или цель уменьшить читабельность кода? И да, не сваливаемся в личную переписку! 2 Инструмент Поделиться этим сообщением Ссылка на сообщение
Kirgudu 1 204 Опубликовано 3 Июля 2015 Ещё немного оффтопа, но написать его должен, иначе вы такого в движке наворотите, коллеги, что мама не горюй. Мой первоначальный вопрос: if (!GameID() == eGameIDSingle || OnClient())Зачем такие сложности? Не проще ли вместо инвертирования первого из аргументов сравнения проверить их на «не равно»? Вот так: if (GameID() != eGameIDSingle || OnClient())Или цель уменьшить читабельность кода? Ответ: Тут скорее кто как привык, тот так и делает.Так вот, это крайне порочная практика. Во-первых, читабельность кода - не пустой звук. Ладно, если пишете исключительно для себя, там хоть сотней последовательных «if» условия пишите (видел я где-то тут на днях подобный «шедевр») - только вам с этим кодом потом и разбираться. А если потом потребуется чья-то помощь? А если - не дай Бог - разрабатываете или будете дорабатывать в команде? Будете менять «привычки» в зависимости от обстоятельств? А во-вторых, давайте посмотрим на выражение, за которое я зацепился. if (!GameID() == eGameIDSingle || OnClient())Логический оператор «!» - это отрицание, инвертирование, которое может применяться к логическим выражениям и булевым переменным, имеющим только два возможных состояния, true или false, ложь или истина. Хорошо, что тут, по всей видимости (сам в движке не ковырялся), функция GameID() возвращает именно булевый результат, поэтому ошибку вы не получаете. Но что будет, если в аналогичной ситуации один из сравниваемых аргументов будет представлять собой, скажем, число или строку? Число тоже попытаетесь инвертировать «как привыкли»? И что в таком случае будет результатом? Вопрос риторический. И я уж не говорю о более сложных случаях. Стоит научиться писать код правильно, а не «как привыкли». Хотя бы не для себя, а ради тех, кто потом пойдёт по вашим стопам. 2 2 Инструмент Поделиться этим сообщением Ссылка на сообщение