// личный канал‑лог
gavrilovlog
← все записи

1. KISS (Keep It Simple, Stupid)

👁 58719💬 15
Это мой самый любимый принцип, и в то же время самый сложный. Код должен быть простым и понятным, но где эта грань простоты и понятности? - Непонятно. Это во многом зависит и от уровня разработчика, который будет потом читать твой код. В общем-то главное это - не усложнять код, если это не нужно. Это уменьшает количество ошибок и облегчает поддержку. 2. DRY (Don't Repeat Yourself) Отличный принцип, который не очень сложно соблюдать. Не дублируй код. Если одно и то же решение повторяется несколько раз, лучше вынести его в функцию или класс. Это улучшает читаемость и снижает риск ошибок при изменении логики. 3. SOLID Это набор принципов объектно-ориентированного программирования, которые помогают разрабатывать гибкие и масштабируемые системы: - S (Single Responsibility Principle) — каждый класс должен отвечать только за одну задачу. - O (Open/Closed Principle) — классы должны быть открыты для расширения, но закрыты для изменений. - L (Liskov Substitution Principle) — объекты унаследованных классов должны быть взаимозаменяемы с объектами их базовых классов без нарушения ожидаемой работы программы. - I (Interface Segregation Principle) — интерфейсы должны быть специфичными и не заставлять реализовывать ненужные методы. - D (Dependency Inversion Principle) — модули высокого уровня не должны зависеть от модулей низкого уровня. Оба должны зависеть от абстракций. Из всех букв этого набора мне полюбилась больше всего последняя, рекомендую тоже максимально ее изучить. Почти все фреймворки основаны именно на инверсии зависимостей, в том числе и фреймворк из моих последних видео на ютубе про nestJS. 4. YAGNI (You Aren't Gonna Need It) Не нужно писать код, который может пригодиться "в будущем". Делай только то, что требуется сейчас. Этим принципом я постоянно грешу. Всегда хочется подумать на будущее и написать заранее какие-то функции, которые пригодятся когда-то потом, а может и вовсе никогда. 5. Separation of Concerns Логику нужно разделять на отдельные части (например, отделение бизнес-логики от пользовательского интерфейса). Это повышает ясность и удобство сопровождения. 6. Encapsulation Как ты мог заметить, я больше про ООП, поэтому не мог не рассказать про один из столбов этой парадигмы. Инкапсуляция позволяет скрывать внутренние детали реализации объекта и предоставляет доступ только к тем данным, которые должны быть доступны внешнему миру. Это помогает поддерживать целостность объекта. 7. Testability Код должен быть написан таким образом, чтобы его легко было тестировать. Это позволяет автоматизировать проверки и быстрее находить ошибки. Этот принцип скорее вытекающий из предыдущих, однако его тоже стоит держать в голове, как и следующий. 8. Modularity Программа должна быть разделена на независимые модули, которые можно тестировать и изменять независимо друг от друга. 9. Maintainability Пиши код с расчетом на то, что его придется изменять и поддерживать в будущем. Комментарии, четкие имена переменных и функций, хорошая документация — все это помогает. 10. Know Your Backend Ты не найдешь этот принцип в интернете, потому что его сформулировал я. Однако сложно сказать, что я его придумал целиком, так как это совокупность других принципов, которые легли в одну простую фразу "Знай свой бекенд". Заключается этот принцип в том, что разработчик должен глубоко понимать архитектуру и особенности работы серверной части приложения. Зная как функционируют сервера, базы данных, API и другие ключевые компоненты "за кулисами" интерфейса, помогает не допускать критических ошибок. В этот принцип можно вписать такие аспекты, как: - Понимание архитектуры - Знание ограничений - Оптимизация запросов - Интеграция сторонних API - Безопасность Я думаю расписывать каждый пункт нет смысла, главное понимать, что за простым нажатием кнопки в интерфейсе может запускаться огромный механизм, причем на другом континенте планеты, ради того, чтобы пользователь мог посмотреть любимый сериал или не только сериал 😏 Теперь твой ход, дополнить этот список в комментариях...
1511

Комментарии · 15

  • @cryptopunk4201
    вопрос мб не совсем по теме, но как сейчас боты-снайперы которые генерируют кошельки внутри приложения не хранят сидфразу пользователя но совершают транзы? вроде же для этого сидфраза и нужна…
    • @kirill_s_gavr
      Если ты про maestro bot или bananagun. То там хранение на сервере, приватник они дают пользователям
      • @cryptopunk4201
        не, видел прям ТМА и боты где пишут что не хранят сидфразу, хотя как они тогда делают транзу неясно
        • @kirill_s_gavr
          Ну может на основе account abstraction как-то
          • @cryptopunk4201
            а это возможно сделать через account abstraction? разговаривал об этом с очень умным разрабом на cosmwasm, он сказал что это тяжело реализуемо на космосовых сетках. про эфирные не знаю
            • @kirill_s_gavr
              а вот это я уже не знаю. Я только мельком с этим ознакомлен. Знаю что там большие комиссии на первую транзакцию, так как там происходит еще и деплой контракта. Но как будто бы, управление активами возможно по средствам обычной авторизации через бандлы. И действительно там не хранится сид-фраза. Однако управление активами имеет тот, кто задеплоил контракт
              • @cryptopunk4201
                а что значит авторизация через бандлы?
                • @kirill_s_gavr
                  Ой, не бандлы, а Bundler. Типа сервис, который формирует операции пользователя в обычные транзакции блокчейна
                  • @cryptopunk4201
                    но он же все равно должен быть подписан сигнатурой кошелька с которого идет транза, или это как-то иначе работает?
                    • @kirill_s_gavr
                      ну тут вопрос был больше то что нужна ли там сид-фраза или нет. Там она не нужна. А как именно сделать это в снайпер боте, я пока хз )
                      • @cryptopunk4201
                        ага, ну чтобы отправить кеш в бандлер всё равно ж нужна сидка по идее)
                        • @kirill_s_gavr
                          Кажется что нет 🙂
            • @kirill_s_gavr
              Сомнительно, но вроде реалистично
  • @kirill_s_gavr
    Я знаю кто может подсказать: @z0rats Саша как раз у нас в проекте реализовывал Account Abstraction 🙂
  • @oksana_drago
    Первый пункт как принцип жизни))