Я унаследовал некоторый код, который использует ключевое слово ref экстенсивно и без необходимости. Исходный разработчик, по-видимому, боялся, что объекты будут клонированы как примитивные типы, если ref не был использован и не стал исследовать проблему до написания 50k + строк кода.
Это, в сочетании с другими методами плохого кодирования, создало некоторые ситуации, которые абсурдно опасны на поверхности. Например:
Customer person = NextInLine();
//person is Alice
person.DataBackend.ChangeAddress(ref person, newAddress);
//person could now be Bob, Eve, or null
Не могли бы вы представить, как ходить в магазин, чтобы изменить свой адрес, и выйти как совершенно другой человек?
Страшно, но на практике использование ref в этом приложении кажется безвредным излишним. У меня возникли проблемы с обоснованием того, сколько времени потребуется, чтобы очистить его. Чтобы помочь продать идею, я задаю следующий вопрос:
Как иначе ненужное использование ref может быть разрушительным?
Я особенно забочусь об обслуживании. Предпочтительные варианты ответов предпочтительнее.
Вы также можете утверждать, что очистка не требуется.