(начало)
3) Исправление кода (fix)
Показывает окно ввода текста с инструкцией "Find errors in the code", которую можно отредактировать. Только после подтверждения в окошке создает новый чат, где сначала идет системная инструкция "Modify code", потом выделенный фрагмент кода, потом пользовательская инструкция.
Как и в предыдущих инструментах тут снова только текстовый ответ в рамках чата, который при необходимости нужно самостоятельно копипастить в модуль. В чате над предложенным кодом есть иконка вставки этого кода по текущей позиции курсора. Если сбилось выделение, то дорабатываемую функцию нужно заново выделить, а еще лучше удалить. Но вероятно это может быть полезно для блоков, которые нужно вставить в несколько разных модулей.
Измененный или добавленный код никак не выделен комментариями или цветовым оформлением - предполагается, что программист должен самостоятельно глазами выискивать, что изменилось. Для анализа я просто заменил свою процедуру на предложенную и посмотрел на различия в гите, но такое решение явно не для "ежедневного использования".
В своем ответе Напарник пытается угадать, где могли быть ошибки - т.е. он предполагает, что у нему обращаются только при наличии проблемы, которую как-то нужно решить. Вариант "тут ошибок нет" не предусмотрен и потому при применении на рабочих функциях ведет себя неадекватно.
В своем примере я попросил проанализировать функцию создания чека на возврат в рабочем месте кассира. Эта функция вызывается уже после возврата денег по эквайрингу и печати фискального чека - нужно просто записать результаты в документ. Что делает эта функция очевидно из ее названия, места ее вызова и ее кода - никаких подводных камней.
В предложенном коде изначально предложило выбрасывать необрабатываемое исключение, если статус во входящих параметрах не заполнен. Нет. Согласно логики работы допускается запись "черновика", с которым продолжат работу позже (например, закончилась бумага в фискальном принтере и за нею нужно сходить в подсобку, а покупателя попросили прийти через 5 минут, но все данные уже введены и их не хотят вводить повторно).
Далее был запрос данных из документов продажи и Напарник предлагает код выхода из процедуры, если такие данные не найдены. Но не всегда все данные базы доступны! Если продажа была в другом магазине единой сети, то правила разрешают делать возврат товара в удобном месте (только деньги на карту через эквайринг так не вернут, но могут выдать кешем или банковским переводом). Т.е. даже если данные по продажам отсутствуют, все равно нужно разрешить на усмотрение кассира оформить возврат.
Далее в массиве структур с данными продажи Напарник предлагает свойства таблиц платежей, серийных номеров и контрольных знаков сравнивать с Неопределено прежде чем начать с ними работать. Если бы Напарнику был доступен контекст проекта, то он бы знал, что эти свойства существуют и заполнены как минимум пустыми массивами. И почему сравнение с Неопределено, если по стандартам нужно использовать метод Свойство()?
И в самом финале Напарник предложил записывать документ в Попытке, чтобы спрятать проблему записи - странное поведение с учетом того, что ранее в этом же ответе выбрасывание исключения "наверх" для него было нормальной практикой.
Прихожу к выводу, что не рекомендую этот инструмент для ежедневной работы. Но в случае "необъяснимых ошибок" может оказаться полезным для брейншторма.
Post #300
112
- 👍 5