Инкапсуляция или почему важно прятать как можно больше информации внутри обьектов
Большинство комплишенов моего плагина подсказывают параметры внутри методов.
Теперь возникла мысль, что
Сижу теперь делаю поля приватными и методы как можно более абстрактными. За 5 лет там много накопилось.
Большинство комплишенов моего плагина подсказывают параметры внутри методов.
$foo->bar('тут комплитим');
в процессе вырисовался обьект CompletionContext, в котором есть обьект Parameter, и обьект ParameterList - это уже внутренние объекты PhpStorm. И юзались они везде и часто.Теперь возникла мысль, что
$foo['тут комплитим']
и $foo('тут комплитим')
- это тоже вызовы методов! И если на них смотреть по-другому, как $foo->offsetGet('тут комплитим')
и $foo->__invoke('тут комплитим')
, то все станет сильно проще для меня. Но внутренние объекты шторма там другие, поэтому надо обьект CompletionContext абстрагировать немного. Но не получается. Он был открыт, все лезли в его внутренности и построить абстракцию, когда там не метод, а вызов массива или __invoke
, не получается.Сижу теперь делаю поля приватными и методы как можно более абстрактными. За 5 лет там много накопилось.
👍12🤔4❤1
https://t.iss.one/tg_5minphp/1413
Тут Петр Мязин из пятиминутки PHP удивляется, что старая монолитная IDEA оказалась более гибкой, чем модный опенсорсный VsCode. Я знаю как работает экосистема IDEA (ну плюс-минус) и видел как выглядят плагины к VsCode. Не особо удивлен. Ну может только добавить могу, что основная платформа IDEA - тоже давным давно открытая.
Почему Идея оказалась более гибкой - не знаю. Но хотел показать скриншот этот и рассказать про стабильность системы плагинов Идеи и то, как тщательно за ней стараются следить.
Плагин к Идее - это скомпиленый Java JAR-файл. Там все статично и если загружаешь его на маркетплейс там сразу идет проверка на совместимость с обьявленными версиями IDEA. Поймает любое неверное обращение к методу, классу и чему угодно. Сразу предупредает, что скоро удалят некоторые вещи. Весьма полезная вещь, да и локально можно запускать(у меня на CI крутится). Команда Идеи там довольно четко меняет интерфейсы когда надо, добавляет новые. Один раз только удивили сильно, но я тут об этом уже писал.
Если какая-то версия плагина покажет несовместимость, то ее не допустят к юзерам. Полностью от ошибок это конечно не страхует, но весьма хороший защитный барьер.
Плагин к VsCode - это нечто, написанное на тайпскрипте(а может и на яваскрипте). Нигде не нашел, где можно обьявить какие версии VsCode поддерживает плагин. Я сомневаюсь вообще что можно хоть какойто адекватный анализ провести там. Но если кто писал плагины туда - просветите плиз в комментах. Я анализировал некоторые исходные коды плагинов для вскода, и это страшно вообще.
P.S. 1655 Deprecated calls - это из-за моего старого обфускатора. Ни на что не влияет.
Тут Петр Мязин из пятиминутки PHP удивляется, что старая монолитная IDEA оказалась более гибкой, чем модный опенсорсный VsCode. Я знаю как работает экосистема IDEA (ну плюс-минус) и видел как выглядят плагины к VsCode. Не особо удивлен. Ну может только добавить могу, что основная платформа IDEA - тоже давным давно открытая.
Почему Идея оказалась более гибкой - не знаю. Но хотел показать скриншот этот и рассказать про стабильность системы плагинов Идеи и то, как тщательно за ней стараются следить.
Плагин к Идее - это скомпиленый Java JAR-файл. Там все статично и если загружаешь его на маркетплейс там сразу идет проверка на совместимость с обьявленными версиями IDEA. Поймает любое неверное обращение к методу, классу и чему угодно. Сразу предупредает, что скоро удалят некоторые вещи. Весьма полезная вещь, да и локально можно запускать(у меня на CI крутится). Команда Идеи там довольно четко меняет интерфейсы когда надо, добавляет новые. Один раз только удивили сильно, но я тут об этом уже писал.
Если какая-то версия плагина покажет несовместимость, то ее не допустят к юзерам. Полностью от ошибок это конечно не страхует, но весьма хороший защитный барьер.
Плагин к VsCode - это нечто, написанное на тайпскрипте(а может и на яваскрипте). Нигде не нашел, где можно обьявить какие версии VsCode поддерживает плагин. Я сомневаюсь вообще что можно хоть какойто адекватный анализ провести там. Но если кто писал плагины туда - просветите плиз в комментах. Я анализировал некоторые исходные коды плагинов для вскода, и это страшно вообще.
P.S. 1655 Deprecated calls - это из-за моего старого обфускатора. Ни на что не влияет.
🔥15👍6
Laravel Idea стала бесплатной. Многим интересны детали, но ничего сообщить не могу. Только то, что будем продолжать работать над ней как раньше.
А работы там вагон. И интеграции с ИИ, ларавелевскими сервисами и сильно хочется еще пару вещей, для которых надо лезть внутрь шторма.
Сделал скриншот платного маркетплейса плагинов несколько дней назад. Таки вышел на первое место по скачиваниям! Если при этом учесть, что как минимум два ближайших преследователя свои загрузки набрали будучи бесплатными, а идея всегда была платной, то ухожу непобежденным королем ринга! :-)
А работы там вагон. И интеграции с ИИ, ларавелевскими сервисами и сильно хочется еще пару вещей, для которых надо лезть внутрь шторма.
Сделал скриншот платного маркетплейса плагинов несколько дней назад. Таки вышел на первое место по скачиваниям! Если при этом учесть, что как минимум два ближайших преследователя свои загрузки набрали будучи бесплатными, а идея всегда была платной, то ухожу непобежденным королем ринга! :-)
👍75🔥65❤10🕊3😱2👾2
Опять начал пробовать AI для генерации кода. Попросил Junie написать метод, чтобы прошвырнулся по сервис провайдерам Laravel проекта и нашел там Model::unguard(). И если есть, просто вернуть true. Он сделал несколько запросов по поиску фраз в моем проекте, типа "service provider". Проанализировал тот код, и в итоге выдал решение, используя именно мои классы для работы с service provider. Умный.
Код он выдал более-менее корректный, но весьма неоптимальный. Пришлось за ним подметать. На этой короткой задаче я без AI был бы быстрее, но прогресс огромный. Буду чаще юзать пытаться.
Код он выдал более-менее корректный, но весьма неоптимальный. Пришлось за ним подметать. На этой короткой задаче я без AI был бы быстрее, но прогресс огромный. Буду чаще юзать пытаться.
👍22🔥6❤2😱1