vbondarevsky / Connector

Коннектор: удобный HTTP-клиент для 1С:Предприятие 8
Apache License 2.0
638 stars 207 forks source link

Добавил функции, которые возвращают имена методов #134

Open usa4ev opened 8 months ago

usa4ev commented 8 months ago

Добавил функции, которые возвращают имена методов, чтобы избавиться от строковых констант в клиентском коде

leemuar commented 8 months ago

Зачем? Какой сценарий использования?

usa4ev commented 8 months ago

Имя метода - это контанта, которая заведомо будет использована в клиентском коде повсеместно. Кажется, что разумно определить ее единожды и использовать только это определение. Дополнительно это исключит возможность опечатки в имени метода, которую не сможет отловить синтаксический контроль. Сценарий использования такой:

Процедура МояПроцедура() Экспорт

    // Какой-то код...

    Ответ = АБСП_КоннекторHTTP.абсп_КоннекторHTTP.ВызватьМетод(МетодGET(), Ресурс, Параметры, Сессия);

    // Еще какой-то код...

КонецПроцедуры;

Функция МетодGET()  
    Возврат АБСП_КоннекторHTTP.МетодGET();  
КонецФункции
leemuar commented 8 months ago

Сама идея понятна, но вот ее полезность - нет.

В библиотеке уже есть именованные методы для распространенных методов http. Вместо КоннекторHTTP.ВызватьМетод("GET", ... ) можно писать КоннекторHTTP.Get( ... ). Так запись короче, и вы сразу получаете проверку на ошибки на этапе синтаксического контроля ну или на крайний случай - на этапе компиляции модуля. Вынос строковых констант в отдельные методы выглядит для меня пока как оверинжиниринг.

В каком сценарии вы видите необходимость в этом? Почему эти методы должны стать частью именно библиотеки?

usa4ev commented 8 months ago

Я использую ВызватьМетод() в служебном модуле, который создает сессию, набирает параметры и обрабатывает ответ. К этому модулю идет обращение в методах программного интерфейса моей подсистемы. Каждая функция ПИ вызывает служебный модуль, в который передает имя HTTP-метода, который нужно использовать, и другие данные, необходимые для запроса. Соответственно КоннекторHTTP.Get() в данном случае не подходит, т.к. служебный модуль не знает, какой метод нужно вызвать. Значит, я должен где-то имена методов определить, а модуль коннектора кажется самым разумным местом для этого.

alexandr-yang commented 7 months ago

Соглашусь с автором, методы полезные. Тоже использую подобный кейс