Обновить
100.13

Качество кода *

Как Макконнелл завещал

Сначала показывать
Порог рейтинга
Уровень сложности

Строки кода должны помещаться на экране

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели4.6K

О вечном — о разумной длине строк кода. Мы недавно встретили ошибку, которая одновременно демонстрирует, чем плох "код-колбаса", "эффект последний строки" и последствия неудачного copy-paste.

Читать далее

Новости

Принципы ответственной ИИ-ассистированной разработки ПО

Время на прочтение3 мин
Охват и читатели8K

Данный документ описывает систему взглядов и практических правил для интеграции ИИ-ассистентов в процесс разработки программного обеспечения. Цель — не запретить использование ИИ, а превратить его в управляемый инструмент, который повышает эффективность, не компрометируя качество, безопасность и ответственность инженера.

Читать далее

Что происходит, когда запускается код?

Уровень сложностиСредний
Время на прочтение9 мин
Охват и читатели8.1K

Когда программист пишет код, он редко задумывается о том, что происходит с программой после того, как он её написал. Но понимание этого процесса необходимо для эффективной отладки, оптимизации и написания надёжного кода. А ещё, это просто интересно.

Читать далее

Не делайте рефакторинг как дядя Боб. Я вас умоляю

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели35K

Несмотря на то, что книга «Чистый код» привнесла в наш лексикон прекрасный термин, она также снискала и дурную славу. Это руководство от 2008 года представляет собой сборник принципов и исследований, которые «дядя Боб» (Uncle Bob, то есть Роберт Мартин) выработал за годы программирования.

В итоге его практики переняли многие разработчики, одни из которых почитают их как святыни, а другие воспринимают, скорее, в качестве ориентиров, нежели строгих правил. Но, как бы вы к этому ни относились, сам дядя Боб смотрит на них не как на руководства. Он следует этим практикам всецело и очень редко допускает исключения.

Так что можно подумать, что его примеры рефакторинга из книги как минимум окажутся лучше среднего кода, который вы встречаете в повседневной работе, или хотя бы будут согласовываться с другими распространёнными советами.

Можно подумать...

Читать далее

Мультиагентная разработка в Cursor: как заставить субагентов работать на большие проекты

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели18K

Как можно Cursor IDE превратить в полноценную мультиагентную среду разработки, где каждый AI‑агент выполняет роль члена команды: аналитика, архитектора, планировщика или разработчика?

Как обеспечить высокий уровень автономности, когда система не просто отвечает на запросы, а сама движется от высокоуровневой постановки задачи к результату?

Как добиться сходимости к стабильному результату в ходе длительной самостоятельной работы команды ИИ-агентов?

Рассказываю, как я пришёл к таким результатам с помощью команды агентов под управлением оркестратора и применения принципа разрабокти «сверху вниз», когда код рождается постепенно, но осмысленно: от общей идеи до рабочего решения.

Читать далее

Что такое CRUD и почему это важно для всех в IT

Время на прочтение5 мин
Охват и читатели7.6K

Неважно, в какой сфере вы работаете: backend-разработчик, frontend, архитектор БД, системный аналитик, тестировщик или кто-то еще. А может, вы только ищете работу в IT? Или просто интересуетесь, как устроен цифровой мир. Эта статья - возможность освежить в памяти базовые концепции программирования, подготовиться к собеседованию (ведь вопрос про CRUD-операции может прозвучать не напрямую, но почти всегда скрыт в других задачах или кейсах) или просто понять, как устроены ваши любимые приложения.

Вопрос на миллион: Знаете ли вы, что общего между созданием поста в Нельзяграм, покупкой на Ozon и обновлением резюме на hh.ru?

Ответ прост: в их основе лежат четыре базовые операции, скрытые за аббревиатурой CRUD. И да, эти операции — первая ступень к пониманию того, как работают современные API.

Читать далее

Транзакции в InnoDB: разбираемся с уровнями изоляции и блокировками

Время на прочтение8 мин
Охват и читатели5.7K

Чтобы транзакции в InnoDB работали предсказуемо, важно понимать внутреннюю логику InnoDB. Ошибки чаще всего возникают не из-за отсутствия транзакций, а из-за неверных ожиданий относительно уровней изоляции и работы блокировок.

В этой статье давайте разберём несколько распространенных заблуждений и на примерах посмотрим, как на самом деле работают транзакции.

Читать далее

О современной разработке. Часть 1: Моки — это технический долг

Уровень сложностиПростой
Время на прочтение7 мин
Охват и читатели6.2K

Никак не могу оставить в прошлом, одну историю, произошедшую со мной больше 7 лет назад.

На тот момент я, еще студент последнего курса универа, только получил свою первую работу в IT... Как сейчас помню свои эмоции. Наконец-то, спустя годы подготовок и отказов, вот, наконец получаешь свойпервый «настоящий» проект. Осмотревшись по сторонам, понимаю, что кругом меня не то что других джунов нет, но даже мидлов. Сплошные синьоры и лиды, как тогда казалось — грозные дядьки, с большим опытом... Ну ничего, сейчас я им покажу, что такое «молодая гвардия» 😂.

Получаю компьютер, креды для доступа, мне подробнее рассказывают про проект, присылают ссылки на минимальный набор сервисов, что нужно будет локально поднять для работы и отправляют настраивать окружение. В первый же день я сломал заботливо предустановленную мне убунту 😂 (удалил «не ту» версию питона, которая, как выяснилась, очень нужна), ну да ладно, мелочи, с кем не бывает?

Установил минт, начал настраивать IDE, окружение, забрал себе нужные сервисы, вроде все хорошо, НО в одном из сервисов стабильно падает один и тот же тест. Запускаю отдельно — все хорошо и стабильно. Запускаю через сборщик (mvn test) — падение. Пытаюсь разобраться, что происходит — ничего не понятно. Тест падает из‑за мока, которого вообще нет в этом тестовом сценарии. Больше того, смущает ситуация, что ни на ci, ни у кого из коллег такого не происходит. Тест стабилен, да и в нем не меняли ничего уже довольно давно. Вывод: проблема на моей стороне и разбираться мне с ней самому.

Читать далее

Код, который нас убивает

Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели9.2K

Это начинается незаметно. Сначала — просто «временное решение». Потом — «сделаем рефакторинг». Но «потом» не наступает никогда. Мы называем это техническим долгом, словно он когда-то будет погашен, но прекрасно знаем — чаще всего это просто красивое описание хаоса. 

Читать далее

Ловушка искусственного интеллекта: действительно ли AI позволяет писать код быстрее

Уровень сложностиПростой
Время на прочтение6 мин
Охват и читатели10K

Когда использование инструмента грозит потерей качества. Сравнивать нужно не только скорость, но и качество кода, время на дебаггинг и код-ревью.

Спасет ли вас искусственный интеллект

Прекратите создавать интерфейсы

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели41K

Я пишу всякое на Go в Ви.Tech (IT-дочка ВсеИнструменты.ру) и как и все, люблю подискутировать на технические темы.

У этой заметки сложная судьба, мне загорелось написать ее еще летом, но совершенно не хотел говорить об очевидных вещах и писать миллион первую статью со ссылкой на гугловский go code review comments. Тема уже разобрана всеми кому не лень, на русском языке вот у  Николая @JustSkiv Тузова, есть замечательное видео на его ютуб канале, раскладывающее по полочкам, для чего это нужно.

Последний дисклеймер и перейду к сути: тема на самом деле очень обширна и я сознательно сконцентрировался на одном аспекте (неуместные определения интерфейсов). Буду рад, если продолжим общение в комментариях, очень не хватает Хабра начала 10-х годов, с живыми, а иногда и крайне горячими, инженерными дискуссиями.

Читать далее

Пишем код, который живёт долго: SOLID, DRY, KISS, YAGNI

Время на прочтение5 мин
Охват и читатели12K

Мы продолжаем нашу серию статей, посвящённых фундаментальным концепциям разработки. Сегодня мы поговорим о проверенных практиках, которые помогают разработчикам избегать распространённых ошибок и работать эффективнее. Мы разберём принципы SOLID, а также парадигмы YAGNI, DRY и KISS, которые особенно актуальны в объектно-ориентированном программировании.

Читать далее

Workflow like it’s hot или почему Temporal.io это база для бизнес логики

Уровень сложностиСредний
Время на прочтение5 мин
Охват и читатели5.8K

Из первых уст рассказываю как переход на Temporal обеспечил надежную доставку клиентских услуг в контексте обычного хостинга.

Читать далее

Ближайшие события

Ваши тесты упали по причине JavaScript

Уровень сложностиПростой
Время на прочтение4 мин
Охват и читатели7.1K

Рассказываем, как безобидная строка JavaScript-кода привела к нарушению стабильности тестов продукта, а также о том, как можно избежать подобных ошибок.

Читать далее

Главная проблема «чистых архитектур»

Уровень сложностиПростой
Время на прочтение5 мин
Охват и читатели21K

Откройте любой пулл‑реквест в проекте с любой «чистой архитектурой» и вы скорее всего увидите не обсуждение бизнес‑логики, а срач. «Это нельзя класть в UseCase, это логика домена!», «Зачем тут еще один DTO, мы же просто поле прокидываем!», «Этот интерфейс не нужен, у нас никогда не будет другой реализации!». Полагаю, очень много людей с таким сталкиваются.

Эта статья — о том, почему архитектура из спасения превратилась в тонны говнокода. И, что самое главное, — как прекратить этот хаос и, наконец, начать просто писать код, который работает, а не «следует всем концепциям».

Читать далее

Как перестать писать спагетти-код: ключевые идеи ООП

Время на прочтение8 мин
Охват и читатели15K

На собеседованиях часто можно услышать вопрос: «Назовите принципы хорошего кода». Даже начинающие, но уже имеющие практический опыт программисты интуитивно понимают: хороший код — это читаемый, переиспользуемый, легко расширяемый и поддерживаемый. Но что обеспечивает эти качества? Ответ кроется в объектно-ориентированном программировании (ООП).

Читать далее

Разработка с AI в 2025: от идеи до продакшена с Claude Code

Уровень сложностиСредний
Время на прочтение8 мин
Охват и читатели7.9K

Индустрия разработки программного обеспечения переживает фундаментальную трансформацию. Еще два года назад идея доверить AI написание производственного кода казалась фантастикой. Сегодня это реальность для сотен тысяч разработчиков по всему миру.

Согласно данным Anthropic, Claude Code используют более 115 тыс. разработчиков, которые обрабатывают 195 млн строк кода еженедельно. Уровень внедрения среди разработчиков составляет 53% — это лидирующий показатель на рынке. База активных пользователей выросла на 300%, а доход увеличился в 5,5 раза за последние месяцы.

Но что действительно важно, это не статистика внедрения, а фундаментальный сдвиг в подходе к разработке. AI-инструменты больше не просто ускоряют написание кода. Они меняют саму парадигму: от «Как это закодить?» к «Что именно нужно построить?».

В этой статье мы рассмотрим практические паттерны и подходы к R&D и проверке гипотез с использованием современных AI-инструментов, в частности Claude Code — терминального агентного инструмента.

Читать далее

Сама не разберётся: мои 7 принципов генерации кода с LLM

Уровень сложностиПростой
Время на прочтение8 мин
Охват и читатели11K

Всем привет! Меня зовут Виктор, и более трёх лет я работаю с языковыми моделями – от проприетарных решений вроде ChatGPT до open-source систем, которые можно разворачивать локально и встраивать в собственные продукты. Я застал времена жутких галлюцинаций GPT-3.5 и ждал обещанного GPT-5 – того самого почти AGI, которое, казалось, вот-вот появится.

За это время многое изменилось: появились десятки моделей, которые можно запустить даже на слабом ноутбуке, и мощные коммерческие системы, способные понимать с полуслова. Но одно остаётся неизменным – AGI так и не случилось.
Если два года назад нам уверенно обещали, что «всё уже близко», то теперь даже крупнейшие компании признают: ждать придётся долго.

И это не плохо. Просто разработчикам, приходится учиться работать с тем, что есть, и извлекать максимум пользы из нынешних LLM.

За годы работы с моделями я выработал ряд принципов, которые помогают получать стабильные и читаемые результаты. На первый взгляд – ничего нового: это те же инженерные практики, которые мы применяем в обычном программировании.
Но в контексте LLM они начинают работать совсем иначе.

Читать далее

Как мы автоматизировали код-ревью благодаря связке Aider + LLM

Время на прочтение11 мин
Охват и читатели7.2K

Привет, Хабр! Меня зовут Константин Репин, я старший программист в Fix Price. В этой статье расскажу, как мы облегчили жизнь нашим коллегам-ревьюерам, внедрив в процесс AI-ассистента для код-ревью. Начну с краткого описания инструмента, а затем перейдем к практике — покажу нашу реализацию и поделюсь опытом, включая примеры кода.

Читать далее

CI/CD для Bare-Metal Embedded-разработки

Уровень сложностиСредний
Время на прочтение16 мин
Охват и читатели6.8K

Многие embedded-разработчики привыкли работать без автоматизированных тестов, полагаясь на ручное тестирование и отладку через программатор. Это кажется простым и быстрым решением для небольших проектов. Однако при росте кодовой базы и команды такой подход приводит к критическим проблемам: баги возвращаются в новых релизах, знание о системе хранится только в головах разработчиков, а каждое изменение требует длительного ручного тестирования на стенде.

Автоматизация CI/CD для embedded-систем решает эти проблемы, хотя требует начальных усилий на настройку инфраструктуры.

Читать далее
1
23 ...

Вклад авторов