Comments 7
if ( .... || SceneSNO.Id == 183556 || SceneSNO.Id == 183557 || SceneSNO.Id == 183502 || SceneSNO.Id == 183505 || SceneSNO.Id == 183557 || SceneSNO.Id == 183519 || .... )
Интересно, а окажись оно в массиве (не в set), то оно бы тоже задетектило дубликат?
А не подскажете конкретнее случай про который вы пишете?
Если вы про подобное сравнение одного и того же элемента массива с дублирующимся числовым литералом, то да, анализатор подобное поймает.
Самый первый вариант. Логичным рефакторингом было бы забить эти значения в массив и поменять проверку на какой-нибудь array.contains(SceneSNO.Id)
. Во избежание можно и в сет, но интересен кейс именно с массивом.
Нет, в таком случае анализатор не будет выдавать предупреждение, т.к. иметь в массиве одинаковые элементы является нормальной ситуацией. Здесь же одно из подвыражений явно ошибочно, т.к. если бы первое подвыражение было true, то до второго даже не дошли бы.
логичнее смотрится Enum на int'ах. Дополнительно можно и специфичные флаги в элементах размещать
в targets не будут добавлены новые объекты, ведь метод Concat не изменяет какое-либо из исходных перечислений, а создаёт новое.
Неплохо было бы указать тип targets, так как иначе у него может быть совершенно любая реализация метода Concat.
Здесь ещё несколько ошибок на тему паттернов программирования:
Лапшевидный код с огромным количеством magic-number'ов.
Имена вида
EngagedWithGoblinTime очень похожи на артефакт автозамены после рефакторинга. Например, в коде одного из крупных российских стартапов через несколько лет активного кодинга была найдена булевская переменная с именем UnableToAlreadyEnableOrDisable, которая надолго стала местным мемом. Скорее всего, в результате одного массового переименования кто-то заменил простое "UnableTo…" на "UnableToAlready…", а ещё кто-то в результате другого — некое действие "…DoSomething" на "…EnableOrDisable". После чего игра в «угадай, что хотел сказать автор» стала по-настоящему весёлым занятием.
В целом, пп. 1 и 2 скорее всего из-за реверс-инжиниринга оригинального кода, т.е. оригинальная архитектура проекта в значительной мере потеряна, что печально.
Но за сервер всё равно спасибо!
Кошмар нефалема. Исследуем ошибки в коде эмулятора сервера Diablo 3