Информация об изменениях

Сообщение Re[42]: Новости C#12 от 23.11.2023 14:19

Изменено 23.11.2023 14:20 Serginio1

Re[42]: Новости C#12
Здравствуйте, ·, Вы писали:

·>Здравствуйте, Serginio1, Вы писали:


S>>·>Ну добавь лог-стейтмент в это одно место.

S>>Мне жалко тратить время. Я лучше потрачу на создание автомата.
·>Ты потратишь на порядки больше времени на отладку этого автомата и ещё потом на отладку отладочного кода.
Ну вот Игорь уже написал автомат. Нужно просто пройтись по коду обнаружить методы помеченные определенных комментарием.
Получить реальный метод и по нему создать новый с такими же параметрами ну и логирование параметров. Если рука набита это недолго.
А думаю, что нугеты сделают и MS или кто другой.

S>>>> Зачем если есть алгоритм создания обертки? Это проще, чем писать метод с параметрами и запихивать эти параметры в логи

S>>·>Можно просто написать код, который делает что надо в нужном месте.
S>>·>Ты предлагаешь писать генератор, который генерит этот же код, комментарий чтобы отметить вместо вставки, и код, который это всё связывает?
S>> Да это проще чем на каждый чих писать обертки. Проще написать генератор кода по комментарию.
·>В современных редакторах есть разные макросы и шаблоны. Это всё автоматизируется. Вставится нужный кусочек кода, который можно тут же поглядеть и подправить если не совсем подходит. Это не проблема которая должна решаться в компиляторе.
То есть ту работу которую сделает компилятор автоматически предлагаешь в рукопашную создавать, а потом и убирать код?
Спасибо!

S>>Суть обертки это тот же AOP вывести в лог значения параметров и результат.

S>>И таких мест может быть множество. Можно и все вызовы в методе обернуть.
S>>И его нужно сделать один раз, а использовать потом постоянно. И наверняка уже кто то напишет генератор.
·>Потом тебе надо будет бороться со сценариями которые я упомянул тут
Автор: ·
Дата: 23.11 14:54
.

·>Потом тебе надо будет бороться с некоторыми значениями, которые надо как-то по особенному логгировать. Скажем, параметром передаётся огромная коллекция и выводить её в лог устанешь, да и не надо. А массив надо, ВНЕЗАПНО окажется, выводить надо через String.Join. И ещё 100500 частных случаев.
·>Потом тебе надо будет придумывать как через этот комментарий протащить небольшой кусочек логики (ну там не весь HugeRequest param залоггировать, а только param.Id).
·>Потом ты нахрен плюнешь и пожалеешь о потраченном времени.

Ты тут придумываешь. Я тебе написал, нужны входные параметры и состояние объекта, что бы воспроизвести ошибку

S>>·>Эти твои проблемы решаются гораздо проще и надёжнее, без магии. Поэтому надо резать Оккамом.

S>> С InterceptsLocation намного ускоряется создание кода для отладки.
·>Ты просто дальше носа не видишь.
Угу, только ты выискиваешь проблемы, там где их нет!
S>> Кроме того InterceptsLocation хорошь при AOT когда нужно выкосить рефлекшн, динамическую компиляцию итд.
S>>В зависимости от опции компилятора, мы можем использовать разные версии
·>Не дай боже потом такой код придётся как шаред-компонент выложить. Будешь выклдадывать несколько бинарных версий с разными комбинациями ключей компилятора.
Так я так и делаю. Для отладки определенных вещей я делаю специальные сборки и отдаю клиенты.
Конечно не выкладываю, а по договоренности отдаю клиентам, что бы локализовать ошибку.
InterceptsLocation позволяет без изменения кода генерить нужные сборки.
Re[42]: Новости C#12
Здравствуйте, ·, Вы писали:


S>>·>Ну добавь лог-стейтмент в это одно место.

S>>Мне жалко тратить время. Я лучше потрачу на создание автомата.
·>Ты потратишь на порядки больше времени на отладку этого автомата и ещё потом на отладку отладочного кода.
Ну вот Игорь уже написал автомат. Нужно просто пройтись по коду обнаружить методы помеченные определенных комментарием.
Получить реальный метод и по нему создать новый с такими же параметрами ну и логирование параметров. Если рука набита это недолго.
А думаю, что нугеты сделают и MS или кто другой.

S>>>> Зачем если есть алгоритм создания обертки? Это проще, чем писать метод с параметрами и запихивать эти параметры в логи

S>>·>Можно просто написать код, который делает что надо в нужном месте.
S>>·>Ты предлагаешь писать генератор, который генерит этот же код, комментарий чтобы отметить вместо вставки, и код, который это всё связывает?
S>> Да это проще чем на каждый чих писать обертки. Проще написать генератор кода по комментарию.
·>В современных редакторах есть разные макросы и шаблоны. Это всё автоматизируется. Вставится нужный кусочек кода, который можно тут же поглядеть и подправить если не совсем подходит. Это не проблема которая должна решаться в компиляторе.
То есть ту работу которую сделает компилятор автоматически предлагаешь в рукопашную создавать, а потом и убирать код?
Спасибо!

S>>Суть обертки это тот же AOP вывести в лог значения параметров и результат.

S>>И таких мест может быть множество. Можно и все вызовы в методе обернуть.
S>>И его нужно сделать один раз, а использовать потом постоянно. И наверняка уже кто то напишет генератор.
·>Потом тебе надо будет бороться со сценариями которые я упомянул тут
Автор: ·
Дата: 23.11 14:54
.

·>Потом тебе надо будет бороться с некоторыми значениями, которые надо как-то по особенному логгировать. Скажем, параметром передаётся огромная коллекция и выводить её в лог устанешь, да и не надо. А массив надо, ВНЕЗАПНО окажется, выводить надо через String.Join. И ещё 100500 частных случаев.
·>Потом тебе надо будет придумывать как через этот комментарий протащить небольшой кусочек логики (ну там не весь HugeRequest param залоггировать, а только param.Id).
·>Потом ты нахрен плюнешь и пожалеешь о потраченном времени.

Ты тут придумываешь. Я тебе написал, нужны входные параметры и состояние объекта, что бы воспроизвести ошибку

S>>·>Эти твои проблемы решаются гораздо проще и надёжнее, без магии. Поэтому надо резать Оккамом.

S>> С InterceptsLocation намного ускоряется создание кода для отладки.
·>Ты просто дальше носа не видишь.
Угу, только ты выискиваешь проблемы, там где их нет!
S>> Кроме того InterceptsLocation хорошь при AOT когда нужно выкосить рефлекшн, динамическую компиляцию итд.
S>>В зависимости от опции компилятора, мы можем использовать разные версии
·>Не дай боже потом такой код придётся как шаред-компонент выложить. Будешь выклдадывать несколько бинарных версий с разными комбинациями ключей компилятора.
Так я так и делаю. Для отладки определенных вещей я делаю специальные сборки и отдаю клиенты.
Конечно не выкладываю, а по договоренности отдаю клиентам, что бы локализовать ошибку.
InterceptsLocation позволяет без изменения кода генерить нужные сборки.