1. KISS (Keep It Simple, Stupid)
👁 587↗ 19💬 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Первый пункт как принцип жизни))