Пять инструментов, которые сделают вашу работу в командной строке более продуктивной
Здесь представлены пять инструментов командной строки, которые способны сделать работу более эффективной:
1️⃣Fast Node Manager (FNM): Управление версиями Node.js для эффективного переключения между проектами без необходимости помнить используемую версию Node.js. FNM автоматически устанавливает версию Node.js, указанную в файле .nvmrc, и позволяет установить новые версии Node.js из командной строки.
2️⃣ZSH-Autosuggestions: Предложения команд на основе истории ввода, что ускоряет выполнение команд без необходимости полного набора. Установка производится через zsh-autosuggestions и может быть настроена в файле ~/.zshrc.
3️⃣Zoxide: Интеллектуальная команда cd, запоминающая часто посещаемые директории, позволяющая быстро переходить к ним с помощью небольшого количества нажатий клавиш. Установка зависит от операционной системы и производится в файле ~/.zshrc.
4️⃣fzf (Fuzzy Finder): Универсальный инструмент для размытого поиска по выводу других команд, таких как zoxide или vim. Поддерживает быстрый доступ к истории команд, поиск и убийство процессов и другие функции.
5️⃣fzf-tab: Заменяет стандартное меню выбора завершения команды в zsh на fzf, что упрощает навигацию по файловой системе и другие задачи. Установка производится как плагин для Oh My Zsh или напрямую.
Каждый инструмент представлен с кратким описанием его возможностей, установки и настройки.
Здесь представлены пять инструментов командной строки, которые способны сделать работу более эффективной:
1️⃣Fast Node Manager (FNM): Управление версиями Node.js для эффективного переключения между проектами без необходимости помнить используемую версию Node.js. FNM автоматически устанавливает версию Node.js, указанную в файле .nvmrc, и позволяет установить новые версии Node.js из командной строки.
2️⃣ZSH-Autosuggestions: Предложения команд на основе истории ввода, что ускоряет выполнение команд без необходимости полного набора. Установка производится через zsh-autosuggestions и может быть настроена в файле ~/.zshrc.
3️⃣Zoxide: Интеллектуальная команда cd, запоминающая часто посещаемые директории, позволяющая быстро переходить к ним с помощью небольшого количества нажатий клавиш. Установка зависит от операционной системы и производится в файле ~/.zshrc.
4️⃣fzf (Fuzzy Finder): Универсальный инструмент для размытого поиска по выводу других команд, таких как zoxide или vim. Поддерживает быстрый доступ к истории команд, поиск и убийство процессов и другие функции.
5️⃣fzf-tab: Заменяет стандартное меню выбора завершения команды в zsh на fzf, что упрощает навигацию по файловой системе и другие задачи. Установка производится как плагин для Oh My Zsh или напрямую.
Каждый инструмент представлен с кратким описанием его возможностей, установки и настройки.
Laravel News
Five Tools That Will Make You More Productive on the Command Line - Laravel News
I’ve compiled a list of some of the CLI tools I think will make you a better, more productive developer on the command line.
👍3🥰1
#дайджест новостей по PHP за неделю:
🔎Выпущена версия CakePHP 4.5.4 — Улучшения: Исправлен Hash::insert() и пути, содержащие {s} и условия, а также данные, в которых все значения после {s} не являются массивами.
🔎Вышел Symfony 7.0.5 — Вот список наиболее важных изменений с версии 7.0.4.
🔎Неделя Symfony № 896 (26 февраля — 3 марта 2024 г.)
🔎Выпущена версия CakePHP 4.5.4 — Улучшения: Исправлен Hash::insert() и пути, содержащие {s} и условия, а также данные, в которых все значения после {s} не являются массивами.
🔎Вышел Symfony 7.0.5 — Вот список наиболее важных изменений с версии 7.0.4.
🔎Неделя Symfony № 896 (26 февраля — 3 марта 2024 г.)
Никогда не используйте функцию «empty»
Существует несколько способов проверить, что массив пуст в PHP. Использование этой функции может вызвать множество ошибок, так как она выполняет слишком много функций.
Рекомендуется использовать другие методы проверки, такие как count($var) === 0 или sizeof($var) === 0.
Вместо использования empty, рекомендуется использовать конкретные условия для проверки различных значений.
Если нужно проверить несколько переменных одновременно, можно объединить условия или создать закрытый метод с явным именем.
Существует несколько способов проверить, что массив пуст в PHP. Использование этой функции может вызвать множество ошибок, так как она выполняет слишком много функций.
Рекомендуется использовать другие методы проверки, такие как count($var) === 0 или sizeof($var) === 0.
Вместо использования empty, рекомендуется использовать конкретные условия для проверки различных значений.
Если нужно проверить несколько переменных одновременно, можно объединить условия или создать закрытый метод с явным именем.
DEV Community
Never use `empty` function in PHP
There are several ways to test that an array is empty in PHP, and the one I see most often...
🤔14👍6🥱6😁1
«Как мы приготовили массу блюд c помощью одного ингредиента: GraphQL»
Эта статья о базовой структуре, производительности, безопасности и гибкости GraphQL и будет интересна архитекторам, интеграторам, аналитикам и разработчикам, которые не ограничиваются рассмотрением информационных систем только с точки зрения «кода», а учитывают полный жизненный цикл системы, включая поддержку, развитие, систему управления знаниями и многое другое.
Эта статья о базовой структуре, производительности, безопасности и гибкости GraphQL и будет интересна архитекторам, интеграторам, аналитикам и разработчикам, которые не ограничиваются рассмотрением информационных систем только с точки зрения «кода», а учитывают полный жизненный цикл системы, включая поддержку, развитие, систему управления знаниями и многое другое.
Хабр
Как мы приготовили массу блюд c помощью одного ингредиента: GraphQL
Всем привет! Не говорите, что вам нечего приготовить, если у вас дома одна картошка. При смекалке и достаточном количестве специй — пюре, драники, запеканка, чипсы фри... Конечно, мы обсуждаем не...
❤1
Основные плагины для пользователей PHPStorm
Это обзор нескольких полезных плагинов для PhpStorm:
1️⃣Nord Theme: Этот плагин предлагает стильную тему оформления для PhpStorm, созданную на основе палитры Nord, которая представляет собой арктические синие оттенки, обеспечивающие чистый и элегантный внешний вид редактора.
2️⃣Laravel Idea: Этот премиум-плагин предоставляет ряд продуктивных функций для разработки Laravel-приложений в PhpStorm, включая автозаполнение маршрутов, поддержку моделей Eloquent, подсказки для правил валидации и генерацию кода.
3️⃣.env Files Support: Плагин обеспечивает поддержку файлов .env, позволяя автозаполнять переменные окружения и легко перемещаться между их использованием в коде и объявлением в файле .env.
4️⃣EditorConfig: Этот плагин помогает обеспечить согласованный стиль кода для разработчиков, работающих над одним проектом, поддерживая конфигурацию кодирования через файл .editorconfig.
5️⃣Collector — A Collection Plugin: Плагин добавляет поддержку коллекций Laravel и предоставляет ряд удобных рефакторингов для улучшения работы с ними.
6️⃣Codeium: AI Autocomplete and Chat: Этот бесплатный плагин предлагает функцию автозаполнения кода с использованием искусственного интеллекта и доступен для различных редакторов, включая PhpStorm.
7️⃣IntelliVue: Данный плагин обеспечивает поддержку Vue.js Single File Components в PhpStorm, добавляя дополнительную функциональность и удобные инструменты для работы с ними.
Это обзор нескольких полезных плагинов для PhpStorm:
1️⃣Nord Theme: Этот плагин предлагает стильную тему оформления для PhpStorm, созданную на основе палитры Nord, которая представляет собой арктические синие оттенки, обеспечивающие чистый и элегантный внешний вид редактора.
2️⃣Laravel Idea: Этот премиум-плагин предоставляет ряд продуктивных функций для разработки Laravel-приложений в PhpStorm, включая автозаполнение маршрутов, поддержку моделей Eloquent, подсказки для правил валидации и генерацию кода.
3️⃣.env Files Support: Плагин обеспечивает поддержку файлов .env, позволяя автозаполнять переменные окружения и легко перемещаться между их использованием в коде и объявлением в файле .env.
4️⃣EditorConfig: Этот плагин помогает обеспечить согласованный стиль кода для разработчиков, работающих над одним проектом, поддерживая конфигурацию кодирования через файл .editorconfig.
5️⃣Collector — A Collection Plugin: Плагин добавляет поддержку коллекций Laravel и предоставляет ряд удобных рефакторингов для улучшения работы с ними.
6️⃣Codeium: AI Autocomplete and Chat: Этот бесплатный плагин предлагает функцию автозаполнения кода с использованием искусственного интеллекта и доступен для различных редакторов, включая PhpStorm.
7️⃣IntelliVue: Данный плагин обеспечивает поддержку Vue.js Single File Components в PhpStorm, добавляя дополнительную функциональность и удобные инструменты для работы с ними.
Laravel News
Essential Plugins for PHPStorm Users - Laravel News
We've curated a collection of essential plugins for PhpStorm that we think you’ll enjoy. From our favorite theme to Laravel-specific tools to supercharge your PHP development and a free AI-powered autocomplete/chat plugin that feels like magic.
🥱13👍3❤1
Подмена функций стандартной библиотеки PHP с помощью xepozz/internal-mocker
Здесь описывается проблема подмены функций в PHP, которые уже загружены до момента подгрузки Composer Autoloader или других объявлений функций. Эта проблема встает, когда необходимо подменить функцию, которая уже существует в стандартной библиотеке PHP, но переопределить её нельзя из-за ошибки о том, что функция уже существует.
Для решения этой проблемы автор предлагает использовать библиотеку xepozz/internal-mocker, которая позволяет подменять функции на лету. Библиотека позволяет создать свою собственную функцию, которая будет эмулировать стандартную функцию, например, time(), и при этом сохранять её функциональность. Таким образом, можно подменять функции для тестирования или других целей.
Здесь описывается проблема подмены функций в PHP, которые уже загружены до момента подгрузки Composer Autoloader или других объявлений функций. Эта проблема встает, когда необходимо подменить функцию, которая уже существует в стандартной библиотеке PHP, но переопределить её нельзя из-за ошибки о том, что функция уже существует.
Для решения этой проблемы автор предлагает использовать библиотеку xepozz/internal-mocker, которая позволяет подменять функции на лету. Библиотека позволяет создать свою собственную функцию, которая будет эмулировать стандартную функцию, например, time(), и при этом сохранять её функциональность. Таким образом, можно подменять функции для тестирования или других целей.
Хабр
Подмена функций стандартной библиотеки PHP с помощью xepozz/internal-mocker
Цель Подмена (mock) функций, которые уже “загружены” в PHP еще до подгрузки Composer Autoloader, каких-либо include или других объвлений function name() {} Подмена не только из под не пустого...
🔥5👾4🥱1
🧑💻 Статьи для IT: как объяснять и распространять значимые идеи
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Напоминаем, что у нас есть бесплатный курс для всех, кто хочет научиться интересно писать — о программировании и в целом.
Что: семь модулей, посвященных написанию, редактированию, иллюстрированию и распространению публикаций.
Для кого: для авторов, копирайтеров и просто программистов, которые хотят научиться интересно рассказывать о своих проектах.
👉Материалы регулярно дополняются, обновляются и корректируются. А еще мы отвечаем на все учебные вопросы в комментариях курса.
Создание PHP SDK для Replicate AI
Здесь описывается процесс создания SDK (набора инструментов разработки программного обеспечения) на PHP для работы с API Replicate AI. Автор начинает с объяснения, что такое SDK и зачем оно нужно, а затем переходит к анализу документации API Replicate и определению ресурсов, с которыми нужно работать: Models (модели), Versions (версии) и Predictions (предсказания). Далее автор предлагает структуру SDK и предлагает реализацию основного класса «Client» и ресурса «Model». Он подчеркивает важность использования хорошего опыта разработчика при создании SDK и приводит примеры вызовов методов API через SDK. Кроме того, обсуждаются вопросы аутентификации и обработки ошибок. Автор заключает статью обещанием опубликовать репозиторий SDK на GitHub после его завершения и тестирования.
Здесь описывается процесс создания SDK (набора инструментов разработки программного обеспечения) на PHP для работы с API Replicate AI. Автор начинает с объяснения, что такое SDK и зачем оно нужно, а затем переходит к анализу документации API Replicate и определению ресурсов, с которыми нужно работать: Models (модели), Versions (версии) и Predictions (предсказания). Далее автор предлагает структуру SDK и предлагает реализацию основного класса «Client» и ресурса «Model». Он подчеркивает важность использования хорошего опыта разработчика при создании SDK и приводит примеры вызовов методов API через SDK. Кроме того, обсуждаются вопросы аутентификации и обработки ошибок. Автор заключает статью обещанием опубликовать репозиторий SDK на GitHub после его завершения и тестирования.
DEV Community
Building a PHP SDK for Replicate AI
If you haven’t already been introduced to Replicate AI, it’s an awesome API that allows you to deploy...
❤1
Forwarded from Библиотека девопса | DevOps, SRE, Sysadmin
🗺️ Где составить дорожную карту: ТОП-10 сервисов
Сервисы, которые подойдут для составления карьерной карты и не только.
Читать статью
#гайд
Сервисы, которые подойдут для составления карьерной карты и не только.
Читать статью
#гайд
🥱3❤2
🧨 Из грязи в князи: вкатился с нуля в IT за границей
❗ Мы ищем тех, кто начинал карьеру в IT за границей без опыта и специальной подготовки. Хотим услышать ваши истории успеха и препятствий, с которыми вы столкнулись.
‼️ Если вы готовы рассказать свою историю — напишите нам на [email protected]
❗ Мы ищем тех, кто начинал карьеру в IT за границей без опыта и специальной подготовки. Хотим услышать ваши истории успеха и препятствий, с которыми вы столкнулись.
‼️ Если вы готовы рассказать свою историю — напишите нам на [email protected]
🥱8👍3
Laravel Setting Pro
Пакет Laravel Setting Pro упрощает управление настройками приложения в Laravel и предоставляет эти ключевые функции:
Гибкое хранилище: выберите между файловым хранилищем или БД в соответствии с потребностями вашего приложения.
Гибкая база данных: выберите между MySQL или MongoDB или создайте собственное соединение DB для настройки.
Кэширование: повышение производительности с помощью автоматического кэширования настроек. Вы можете выбрать между файлом или redis или создать собственный драйвер кэша.
Поддержка очередей: обрабатывать настройки обновлений и удалений в фоновом режиме, обеспечивая плавные пользовательские впечатления.
Триггеры события: ответ на настройку изменений в режиме реального времени, используя события Laravel.
Глобальная вспомогательная функция и фасад: доступ и манипуляция настройками в любом месте вашего приложения Laravel с простой функцией настройки или настройкой фасада (даже в файлах конфигурации).
И многое другое!
Этот пакет предназначен для разработчиков, которые ищут эффективный и интуитивно понятный способ обработки настроек приложения. Он предлагает необходимые инструменты, сохраняя при этом процесс простым и обслуживаемым.
Пакет Laravel Setting Pro упрощает управление настройками приложения в Laravel и предоставляет эти ключевые функции:
Гибкое хранилище: выберите между файловым хранилищем или БД в соответствии с потребностями вашего приложения.
Гибкая база данных: выберите между MySQL или MongoDB или создайте собственное соединение DB для настройки.
Кэширование: повышение производительности с помощью автоматического кэширования настроек. Вы можете выбрать между файлом или redis или создать собственный драйвер кэша.
Поддержка очередей: обрабатывать настройки обновлений и удалений в фоновом режиме, обеспечивая плавные пользовательские впечатления.
Триггеры события: ответ на настройку изменений в режиме реального времени, используя события Laravel.
Глобальная вспомогательная функция и фасад: доступ и манипуляция настройками в любом месте вашего приложения Laravel с простой функцией настройки или настройкой фасада (даже в файлах конфигурации).
И многое другое!
Этот пакет предназначен для разработчиков, которые ищут эффективный и интуитивно понятный способ обработки настроек приложения. Он предлагает необходимые инструменты, сохраняя при этом процесс простым и обслуживаемым.
GitHub
GitHub - sajadsdi/laravel-setting-pro: Easy setting management for Laravel framework
Easy setting management for Laravel framework. Contribute to sajadsdi/laravel-setting-pro development by creating an account on GitHub.
🥱6👍4❤1🌚1
Куда делась 6 версия PHP?
Официально, версия PHP 6 была отменена из-за серьезных проблем и препятствий во время разработки. PHP 6 должен был представлять новую функциональность, включая поддержку Unicode и новый движок для работы с строками. Однако разработка PHP 6 столкнулась с техническими и организационными трудностями, вызванными внесением изменений в код базового ядра, которые затронули большую часть существующих библиотек и приложений.
11 марта 2010 команда разработчиков приняла решение об отмене выпуска PHP 6 в текущем его виде. В результате транк с PHP 6 был перенесён в бранч, а в транке образовалась новая версия — 5.4, в которую разработчики перенесли все наработки из PHP 6, кроме юникода.
#вопросы_с_собеседований
Официально, версия PHP 6 была отменена из-за серьезных проблем и препятствий во время разработки. PHP 6 должен был представлять новую функциональность, включая поддержку Unicode и новый движок для работы с строками. Однако разработка PHP 6 столкнулась с техническими и организационными трудностями, вызванными внесением изменений в код базового ядра, которые затронули большую часть существующих библиотек и приложений.
11 марта 2010 команда разработчиков приняла решение об отмене выпуска PHP 6 в текущем его виде. В результате транк с PHP 6 был перенесён в бранч, а в транке образовалась новая версия — 5.4, в которую разработчики перенесли все наработки из PHP 6, кроме юникода.
#вопросы_с_собеседований
👍8
🕹️ Композиция против Наследования:
Проводится аналогия между тем, как в Тетрисе составляются фигуры, чтобы создать линии, и тем, как объекты комбинируются в разработке программного обеспечения.
Объясняется, как композиция способствует гибкости и модульности, в то время как наследование может привести к Проблеме Хрупкого Базового Класса и сильной связанности.
🔧 Принцип Одной Ответственности (SRP):
В статье подчеркивается важность SRP в создании меньших, поддерживаемых единиц кода.
Утверждается, что разделение кода не должно зависеть исключительно от композиции, а скорее от соблюдения SRP, что делает код более переиспользуемым и поддерживаемым.
💉 Внедрение Зависимостей:
Вместо использования наследования для переиспользования кода предлагается использовать внедрение зависимостей и композицию.
Используя композицию, разработчики могут сократить влияние изменений и избежать Проблемы Хрупкого Базового Класса.
🌟 Принципы SOLID:
Тут также кратко затрагиваются принципы SOLID, упоминая Принцип Одной Ответственности и Внедрение Зависимостей, и намекают на то, что они будут рассмотрены более подробно в будущем контенте.
👀 Взгляд на Наследование:
Хотя здесь советуют предпочитать композицию перед наследованием по причинам, упомянутым выше, она также признает, что не все наследование плохо.
Разработчики должны учитывать, когда наследование может быть уместным, и предоставляет точку зрения Матиаса Верраса на определение эвристик для его использования.
Проводится аналогия между тем, как в Тетрисе составляются фигуры, чтобы создать линии, и тем, как объекты комбинируются в разработке программного обеспечения.
Объясняется, как композиция способствует гибкости и модульности, в то время как наследование может привести к Проблеме Хрупкого Базового Класса и сильной связанности.
🔧 Принцип Одной Ответственности (SRP):
В статье подчеркивается важность SRP в создании меньших, поддерживаемых единиц кода.
Утверждается, что разделение кода не должно зависеть исключительно от композиции, а скорее от соблюдения SRP, что делает код более переиспользуемым и поддерживаемым.
💉 Внедрение Зависимостей:
Вместо использования наследования для переиспользования кода предлагается использовать внедрение зависимостей и композицию.
Используя композицию, разработчики могут сократить влияние изменений и избежать Проблемы Хрупкого Базового Класса.
🌟 Принципы SOLID:
Тут также кратко затрагиваются принципы SOLID, упоминая Принцип Одной Ответственности и Внедрение Зависимостей, и намекают на то, что они будут рассмотрены более подробно в будущем контенте.
👀 Взгляд на Наследование:
Хотя здесь советуют предпочитать композицию перед наследованием по причинам, упомянутым выше, она также признает, что не все наследование плохо.
Разработчики должны учитывать, когда наследование может быть уместным, и предоставляет точку зрения Матиаса Верраса на определение эвристик для его использования.
Andrew Cairns
Composition over Inheritance
A lot can be learned about software development by playing retro games.
👍3❤1
Обработка одного миллиарда строк в PHP
Здесь описывается опыт оптимизации обработки большого объема данных в PHP. Автор начинает с наивной реализации, используя функцию fgetcsv(), и постепенно оптимизирует код, улучшая производительность на каждом этапе.
Далее описывается использование инструментов профилирования для выявления узких мест в коде и принимается решение о замене fgetcsv() на более простые функции, такие как fgets() и ручное разделение строк. Далее автор применяет оптимизации, такие как использование ссылок, использование явных типов данных и включение JIT (just-in-time компиляции) через расширение OPCache. Каждая оптимизация приводит к улучшению производительности.
Затем автор рассматривает многопоточное программирование в PHP с использованием расширения parallel. Он разбивает обработку данных на несколько потоков для параллельной обработки, что приводит к дальнейшему значительному улучшению производительности.
Здесь описывается опыт оптимизации обработки большого объема данных в PHP. Автор начинает с наивной реализации, используя функцию fgetcsv(), и постепенно оптимизирует код, улучшая производительность на каждом этапе.
Далее описывается использование инструментов профилирования для выявления узких мест в коде и принимается решение о замене fgetcsv() на более простые функции, такие как fgets() и ручное разделение строк. Далее автор применяет оптимизации, такие как использование ссылок, использование явных типов данных и включение JIT (just-in-time компиляции) через расширение OPCache. Каждая оптимизация приводит к улучшению производительности.
Затем автор рассматривает многопоточное программирование в PHP с использованием расширения parallel. Он разбивает обработку данных на несколько потоков для параллельной обработки, что приводит к дальнейшему значительному улучшению производительности.
Хабр
Как я обработал один миллиард строк в PHP
Вероятно, вы уже слышали о соревновании под названием "The One Billion Row Challenge" (1brc), если же нет, то предлагаю ознакомиться с репозиторием 1brc Гуннара Морлинга . Моё участие в проекте было...
👏12👍5🎉2❤1
#хочу_спросить
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
Задавайте любые вопросы о программировании и получайте ответы от пользователей. В комментариях под постом укажите #язык, #стек и/или #библиотеку, по которым задаете вопрос.
👍2
9 Правил написания лучшего кода
Здесь описаны девять правил, известных как «Calisthenics Object». Эти правила направлены на улучшение качества кода, его читаемости и поддерживаемости, предоставляя рекомендации по написанию более чистого и эффективного кода:
Только один уровень вложенности в методе: Это правило предлагает ограничивать глубину вложенности в методах для улучшения читаемости. Рекомендуется использовать техники, такие как выделение вложенного кода в отдельные методы или фильтрация данных перед циклом.
Не использовать ключевое слово else: Это правило поощряет использование ранних возвратов или инициализации заранее, чтобы избежать вложенных структур кода и улучшить ясность.
Оборачивать все примитивные типы в объекты: Инкапсуляция примитивных типов в объектах полезна для валидации, явного указания типа и инкапсуляции логики обработки. Это правило поощряет создание объектов для примитивных типов.
Коллекции первого класса: Классы, содержащие массивы в качестве атрибутов, должны инкапсулировать их в собственном классе для инкапсуляции логики, связанной с коллекциями.
Только один -> в строке (за исключением Fluent interface): Это правило поощряет соблюдение Закона Деметры, ограничивая цепочку методов одним уровнем на строку для улучшения читаемости кода.
Не использовать аббревиатуры: Избегание аббревиатур улучшает ясность кода и его поддерживаемость, облегчая понимание для разработчиков.
Сохранять все сущности небольшими: Ограничение размера классов, методов и пространств имен помогает в поддержании чистых и управляемых кодов.
В классах не должно быть более пяти переменных экземпляра: Ограничение числа переменных экземпляра на класс уменьшает зависимости и облегчает тестирование и поддержку классов.
Без геттеров/сеттеров: Предпочтительно инкапсулировать действия вместо прямого доступа к свойствам объекта, поощряя принцип «Говори, не спрашивай».
Эти правила направлены на то, чтобы направить разработчиков на написание более чистого, более поддерживаемого кода, подчеркивая принципы, такие как инкапсуляция, читаемость и уменьшение сложности. Применение этих правил может привести к улучшению кодовых баз, которые легче понимать, тестировать и поддерживать со временем.
Здесь описаны девять правил, известных как «Calisthenics Object». Эти правила направлены на улучшение качества кода, его читаемости и поддерживаемости, предоставляя рекомендации по написанию более чистого и эффективного кода:
Только один уровень вложенности в методе: Это правило предлагает ограничивать глубину вложенности в методах для улучшения читаемости. Рекомендуется использовать техники, такие как выделение вложенного кода в отдельные методы или фильтрация данных перед циклом.
Не использовать ключевое слово else: Это правило поощряет использование ранних возвратов или инициализации заранее, чтобы избежать вложенных структур кода и улучшить ясность.
Оборачивать все примитивные типы в объекты: Инкапсуляция примитивных типов в объектах полезна для валидации, явного указания типа и инкапсуляции логики обработки. Это правило поощряет создание объектов для примитивных типов.
Коллекции первого класса: Классы, содержащие массивы в качестве атрибутов, должны инкапсулировать их в собственном классе для инкапсуляции логики, связанной с коллекциями.
Только один -> в строке (за исключением Fluent interface): Это правило поощряет соблюдение Закона Деметры, ограничивая цепочку методов одним уровнем на строку для улучшения читаемости кода.
Не использовать аббревиатуры: Избегание аббревиатур улучшает ясность кода и его поддерживаемость, облегчая понимание для разработчиков.
Сохранять все сущности небольшими: Ограничение размера классов, методов и пространств имен помогает в поддержании чистых и управляемых кодов.
В классах не должно быть более пяти переменных экземпляра: Ограничение числа переменных экземпляра на класс уменьшает зависимости и облегчает тестирование и поддержку классов.
Без геттеров/сеттеров: Предпочтительно инкапсулировать действия вместо прямого доступа к свойствам объекта, поощряя принцип «Говори, не спрашивай».
Эти правила направлены на то, чтобы направить разработчиков на написание более чистого, более поддерживаемого кода, подчеркивая принципы, такие как инкапсуляция, читаемость и уменьшение сложности. Применение этих правил может привести к улучшению кодовых баз, которые легче понимать, тестировать и поддерживать со временем.
DEV Community
9 rules for writing (better?) code
Like many developers, I like learning new things. And one thing that interests me a lot is code...
👍15🌚3
Forwarded from Библиотека дата-сайентиста | Data Science, Machine learning, анализ данных, машинное обучение
У нас вышла очередная статья на
Ниже — небольшая выдержка из статьи, а целиком читайте здесь 👈
▫️ Создан новый тест для ИИ — WMDP (Weapons of Mass Destruction Proxy), который будет проверять модели на знание:
- способов создания и применения всех видов оружия массового поражения;
- методов взлома систем кибербезопасности.
▫️Глава OpenAI Сэм Альтман обнародовал переписку с Илоном Маском, в которой последний указывает на то, что ожидает от OpenAI прибыли. Это противоречит недавним заявлениям Маска.
🛠 Инструменты
▫️Corgea — находит и автоматически исправляет уязвимости в коде.
▫️GenWebBilder — делает полнофункциональные веб-сайты по скетчам и скриншотам.
▫️Framedrop AI — автоматически конвертирует длинные видео, влоги и стримы в рилсы и короткие клипы для X и TikTok.
▫️Vocalo AI — личный репетитор, который научит свободно говорить по-английски.
Профессор Кен Голдберг из Университета Беркли поделился соображениями по поводу технических, этических и экономических проблем, которые препятствуют широкому внедрению ИИ-роботов на данном этапе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🙏2👾2❤1👍1🌚1
Самые полезные каналы для программистов в одной подборке!
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
Сохраняйте себе, чтобы не потерять 💾
🔥Для всех
Библиотека программиста — новости, статьи, досуг, фундаментальные темы
Книги для программистов
IT-мемы
Proglib Academy — тут мы рассказываем про обучение и курсы
#️⃣C#
Книги для шарпистов | C#, .NET, F#
Библиотека шарписта — полезные статьи, новости и обучающие материалы по C#
Библиотека задач по C# — код, квизы и тесты
Библиотека собеса по C# — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Вакансии по C#, .NET, Unity Вакансии по PHP, Symfony, Laravel
☁️DevOps
Библиотека devops’а — полезные статьи, новости и обучающие материалы по DevOps
Вакансии по DevOps & SRE
Библиотека задач по DevOps — код, квизы и тесты
Библиотека собеса по DevOps — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
🐘PHP
Библиотека пхпшника — полезные статьи, новости и обучающие материалы по PHP
Вакансии по PHP, Symfony, Laravel
Библиотека PHP для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по PHP — код, квизы и тесты
🐍Python
Библиотека питониста — полезные статьи, новости и обучающие материалы по Python
Вакансии по питону, Django, Flask
Библиотека Python для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Python — код, квизы и тесты
☕Java
Библиотека джависта — полезные статьи по Java, новости и обучающие материалы
Библиотека Java для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Java — код, квизы и тесты
Вакансии для java-разработчиков
👾Data Science
Книги для дата сайентистов | Data Science
Библиотека Data Science — полезные статьи, новости и обучающие материалы по Data Science
Библиотека Data Science для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Data Science — код, квизы и тесты
Вакансии по Data Science, анализу данных, аналитике, искусственному интеллекту
🦫Go
Книги для Go разработчиков
Библиотека Go разработчика — полезные статьи, новости и обучающие материалы по Go
Библиотека Go для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по Go — код, квизы и тесты
Вакансии по Go
🧠C++
Книги для C/C++ разработчиков
Библиотека C/C++ разработчика — полезные статьи, новости и обучающие материалы по C++
Библиотека C++ для собеса — тренируемся отвечать на каверзные вопросы во время интервью и технического собеседования
Библиотека задач по C++ — код, квизы и тесты
Вакансии по C++
💻Другие профильные каналы
Библиотека фронтендера
Библиотека мобильного разработчика
Библиотека хакера
Библиотека тестировщика
💼Каналы с вакансиями
Вакансии по фронтенду, джаваскрипт, React, Angular, Vue
Вакансии для мобильных разработчиков
Вакансии по QA тестированию
InfoSec Jobs — вакансии по информационной безопасности
📁Чтобы добавить папку с нашими каналами, нажмите 👉сюда👈
🤖Также у нас есть боты:
Бот с IT-вакансиями
Бот с мероприятиями в сфере IT
Мы в других соцсетях:
🔸VK
🔸YouTube
🔸Дзен
🔸Facebook *
🔸Instagram *
* Организация Meta запрещена на территории РФ
❤2👍1🔥1🥰1😁1