Комментарии 4
Ну, по правде говоря, для поиска ошибки совсем не нужно подробно разбираться в коде. Вы ведь уже установили, что проявление ошибки - поменянные местами поля, а весь код сделан на ёрках (предпочитаю вместо неуклюжего "кортеж" такой перевод-кальку слова "tuple": ведь по-русски все эти латинские "quintuple, sextuple, septuple, octuple", откуда и пошло общее наименование tuple, переводится как "пятёрка, шестёрка, семёрка, восьмёрка", так что логичное общее название для них по-русски - "ёрка"), и в них эти перепутанные поля идут почти везде в фиксированном порядке. Потому логично поискать ёрку, где они перечислены наоборот: "int Answered, int Activated"(лучше искать по регулярке, с \s* вмсето пробела, чтобы отсутствующие или лишние пробелы не мешали).
Кстати, полагаю, что эта идея достаточно очевидна для настоящих программистов, кому не привыкать работать с плохим кодом. Даже мне, хотя я и не настоящий программист, она пришла в голову практически сразу. Впрочем, на объёме кода, который вы оставили в статье, искать несложно и глазами.
PS А простой класс с обычнми полями со стильно-модно-молодёжной точки зрения хуже: его надо объявлять и т.д. То есть простой класс с обычными полями требует много "бойлерплейта", то есть - много лишних нажатий на кнопки. А современные разработчики бойлерплейт не любят (и я их понимаю - я тоже ленивый). И разработчики C# следуюют тенденции по уменьшению количества нажатий на кнопки - , чтобы разработчики, особенно - стильно-модно-молодёжные - этим языком пользовались как можно шире, а не воротили от него нос.
А простой класс с обычнми полями со стильно-модно-молодёжной точки зрения хуже: его надо объявлять и т.д.
Ну тогда сам C# не стильный-модный-молодёжный :). Хотя, справедливости ради, тут есть краткий синтаксис объявления record-ов, так что проблема всё ещё решаемая, да и кодогенерация в отдельных случаях поможет. Но в случае, если мы сознательно не хотим использовать один из базовых инструментов C# - статическую типизацию - то проще сразу перейти на языки, где её и нет.
Пробовали ради интереса для поиска ошибки в GPTобразное послать для анализа?
В chatgpt заносить корпоративный код идея сомнительная, чего-то ещё настолько же годного не знаю (но буду рад, если подскажете :) ).
Впрочем, есть определённый опыт сравнения анализатора и chatgpt в том числе на опенсорсных проектах - писали об этом статью. И в том числе по личному опыту это дело довольно нестабильное: то угадал, но не нашёл, то указал не туда.
Рефакторим легаси при помощи ООП