- Принцип программирования KISS — делайте вещи проще
- Тематические статьи
- Стандарты кодирования — залог хорошей сопровождаемости проекта
- Принцип программирования DRY — don’t repeat yourself / не повторяйте себя
- Принцип программирования YAGNI — «Вам это не понадобится»
- GIT — система управления версиями
- БЭМ и независимые блоки
- REST и RESTful — передача репрезентативного состояния и ресурсный роутинг
- SOLID — принципы объектно‑ориентированного программирования
- Наши услуги
- Цифровизация
- Разработка
- Веб-сервисы и веб‑приложения
- Разработка корпоративных информационных систем
- Поддержка проектов и DevOps
- Отказоустойчивость
- Быстродействие
- Высокие нагрузки
Принцип программирования KISS — делайте вещи проще
Большая часть программных систем необосновано перегружена практически ненужными функциями, что ухудшает удобство их использование конечными пользователями, а также усложняет их поддержку и развитие разработчиками. Следование принципу «KISS» позволяет разрабатывать решения, которые просты в использовании и в сопровождении.
KISS — это принцип проектирования и программирования, при котором простота системы декларируется в качестве основной цели или ценности. Есть два варианта расшифровки аббревиатуры: «keep it simple, stupid» и более корректный «keep it short and simple».
В проектировании следование принципу KISS выражается в том, что:
- не имеет смысла реализовывать дополнительные функции, которые не будут использоваться вовсе или их использование крайне маловероятно, как правило, большинству пользователей достаточно базового функционала, а усложнение только вредит удобству приложения;
- не стоит перегружать интерфейс теми опциями, которые не будут нужны большинству пользователей, гораздо проще предусмотреть для них отдельный «расширенный» интерфейс (или вовсе отказаться от данного функционала);
- бессмысленно делать реализацию сложной бизнес‑логики, которая учитывает абсолютно все возможные варианты поведения системы, пользователя и окружающей среды, — во‑первых, это просто невозможно, а во‑вторых, такая фанатичность заставляет собирать «звездолёт», что чаще всего иррационально с коммерческой точки зрения.
В программировании следование принципу KISS можно описать так:
- не имеет смысла беспредельно увеличивать уровень абстракции, надо уметь вовремя остановиться;
- бессмысленно закладывать в проект избыточные функции «про запас», которые может быть когда‑нибудь кому‑либо понадобятся (тут скорее правильнее подход согласно принципу YAGNI);
- не стоит подключать огромную библиотеку, если вам от неё нужна лишь пара функций;
- декомпозиция чего‑то сложного на простые составляющие — это архитектурно верный подход (тут KISS перекликается с DRY);
- абсолютная математическая точность или предельная детализация нужны не всегда — большинство систем создаются не для запуска космических шаттлов, данные можно и нужно обрабатывать с той точностью, которая достаточна для качественного решения задачи, а детализацию выдавать в нужном пользователю объёме, а не в максимально возможном объёме.
Также KISS имеет много общего c принципом разделения интерфейса из пяти принципов SOLID, сформулированных Робертом Мартином.
Тематические статьи
Стандарты кодирования — залог хорошей сопровождаемости проекта
Любая командная разработка может быть эффективной только в том случае, если участники команды имеют общее видение.
Если над проектом работает команда, а не один‑два разработчика, то обязательно должен быть стандарт оформления кода — набор правил и соглашений, которые описывают базовые принципы оформления программного кода, используемого совместно группой разработчиков.
Принцип программирования DRY — don’t repeat yourself / не повторяйте себя
Следование принципу DRY позволяет добиться высокой сопровождаемости программного продукта: внесение изменений и тестирование значительно упрощаются.
Если код не дублируется, то для изменения логики достаточно внесения исправлений всего в одном месте. Также значительно проще тестировать одну (пусть и более сложную) функцию, а не набор из десятков однотипных. При следовании DRY упрощается и повторное использование функций, вынесенных из сложных алгоритмов, что позволяет сократить время разработки и тестирования новой функциональности.
Принцип программирования YAGNI — «Вам это не понадобится»
Принцип заключается в том, что возможности, которые не описаны в требованиях к системе, просто не должны реализовываться.
В результате разработка ненужных функций не сжигает бюджет проекта, а разработчики не тратят оплачиваемое время на реализацию и дальнейшее сопровождение в реальности ненужного функционала. Избыточный функционал сжигает больше всего ресурсов именно на сопровождении: больше написанного кода — труднее сопровождать и выше вероятность появления «багов». И тут очень уместна поговорка: «лучший код — это ненаписанный код».
GIT — система управления версиями
GIT — распределённая система управления версиями, созданная Линусом Торвальдсом для управления разработкой ядра Linux и в настоящее время получившая очень широкое распространение в среде разработчиков программного обеспечения.
БЭМ и независимые блоки
Вёрстка независимыми блоками — это методология, которая была сформулирована Виталием Харисовым из компании Яндекс. Впоследствии эта методология была расширена и получила название БЭМ (Блок-Элемент-Модификатор). Собственно БЭМ нужен для упрощения командной разработки, для унификации интерфейсов и для более активного повторного использования программного кода.
REST и RESTful — передача репрезентативного состояния и ресурсный роутинг
REST — это стиль построения архитектуры распределенного клиент‑серверного приложения, который упрощает роутинг и построение API.
SOLID — принципы объектно‑ориентированного программирования
SOLID это аббревиатура пяти основных принципов проектирования в объектно‑ориентированном программировании, предложенных Робертом Мартином:
- Single responsibility — принцип единственной ответственности
- Open-closed — принцип открытости / закрытости
- Liskov substitution — принцип подстановки Барбары Лисков
- Interface segregation — принцип разделения интерфейса
- Dependency inversion — принцип инверсии зависимостей
Наши услуги
Цифровизация
Формализуем и автоматизируем бизнес-процессы, осуществляем системную интеграцию, разрабатываем и внедряем цифровые решения, повышающие эффективность бизнеса
Разработка
Разрабатываем сложные веб-приложения и сайты. Создаем как отдельные инструменты для бизнеса, так и полноценные цифровые системы по индивидуальным требованиям.
Веб-сервисы и веб‑приложения
Разрабатываем веб-приложения различной направленности и технически сложные веб-сервисы
Разработка корпоративных информационных систем
Cоздаём как комплексные ERP-системы для бизнеса, так и более специализированные информационные системы — CRM, WMS, BPMS, экспертные и аналитические системы, системы поддержки принятия решений, коммуникативные сервисы и многое другое
Поддержка проектов и DevOps
Осуществляем комплексную поддержку ИТ-проектов для обеспечения высокой работоспособности и улучшения продуктовых метрик
Отказоустойчивость
Разрабатываем и сопровождаем комплексные системы, устойчивые к отказу оборудования, отдельных сервисов и целых подсистем.
Быстродействие
Разрабатываем веб-приложения, работающие по-настоящему быстро: генерация страниц осуществляется за доли секунды, а загрузка сайта даже на медленных каналах занимает не более пары секунд.
Высокие нагрузки
Мы создаём сайты и веб-приложения, которые выдерживают десятки тысяч обращений в минуту без сбоев и без снижения скорости работы.