Рубрика «Совершенный код» - 55

Программирование в стиле русских романов

Одна из вещей, которая делает классические русские романы столь тяжелыми для чтения (для иностранцев) это то, что главные герои имеют кучу имён. К примеру, в романе "Братья Карамазовы" один из персонажей — Алексей Фёдорович Карамазов (Alexei Fyodorovich Karamazov), которого по ходу текста называют также Алёша, Алёшка, Алёшенька, Алёшечка, Алексейчик, Лёша и Лёшенька (Alyosha, Alyoshka, Alyoshenka, Alyoshechka, Alexeichik, Lyosha и Lyoshenka)

«Программирование в стиле русских романов» — это антипаттерн, возникающий в ситуации, когда одна вещь имеет много имён. Для какой-нибудь программы у вас может быть путь в системе контроля версий, путь на диске, имя проекта, имя исполняемого файла и т.д. Все они могут иметь одинаковые (однокоренные) имена или наоборот — называться каждая по-своему. Например, синонимами. Или вообще разными словами. Так уж вышло по историческим причинам, что бинарник foo.exe получается при компиляции проекта bar, лежащего в папке baz и т.д.
Читать полностью »

Инспектирование кода — это очень сложная и ответственная задача, которая может отнимать много ресурсов. Важно ответственно подходить к инспектированию и проводить его эффективно. Эффективно — это значит тратить мало времени и находить много дефектов. Но как повысить эффективность? Ниже представлены несколько советов, которые помогут в этом.Читать полностью »

    Этот пост является продолжением: Иллюзия эффективной разработки: управление

    Все мы учились программированию, практически все из нас проходили стадию задания вопросов на форумах, в конференциях, бывало и в коллективе. Условно всех отвечающих можно разделить на 2 группы: те, которые знают ответ на ваш вопрос и те, которые знают как правильно. Они — пророки стандарта, они — апостолы правого дела, они и только они смогут безбожно затянуть ваш проект, прикрываясь совершенной архитектурой и вылизанностью кода. Они — мировая закулиса мира ИТ, которая, сама того не ведая, определяет, что будет в тренде в следующие несколько лет.
    Если вам надоело читать, то просто скажу, что суть этого поста в том, чтобы вы думали своей головой. Или думали своей головой и держали мысли не высказанными, если планируете долго и продуктивно работать на текущем месте. Всем остальным добро пожаловать под кат.
Читать полностью »

    Так повелось, что во многих компаниях есть свой код-стандарт, регламентирующий, как оформлять отступы: пробелами или табуляцией, а также какой ширины они должны быть. Что делает новичок первым делом при работе над проектом, где код уже оформлен согласно стандарту? Правильно, он коммитит плоды своего труда и получает от тимлида по шапке за то, что не посмотрел как именно его редактор работает с отступами. Если вы начинающий(или не в меру удачливый) пользователь emacs и хотите избежать этого печального, но закономерного, если вы еще не сталкивались с этим, исхода, то добро пожаловать под кат.
Читать полностью »

Думаю, многие разработки знакомы с понятием code review или обзор кода по-русски (также данный термин переводят как просмотр кода, инспектирование кода или рецензирование кода – далее, для единообразия, будет использоваться вариант «обзор кода»). Недавно я столкнулся с необходимостью «разложить по полочкам» и классифицировать знания по этой теме. Результат – данная статья. Надеюсь, она окажется полезной, а также поможет внедрить обзоры кода в свой производственный процесс тем, кто только об этом задумывается.
wtf per minute
Обзор кода является одним из наиболее эффективных методов поиска и устранения дефектов программы. Обзоры проводятся человеком, что позволяет находить широкий класс ошибок, в том числе с трудом детектируемых или вообще не детектируемых автоматическими средствами. Безусловно, обзор кода, не отменяет использование анализаторов кода или других методик обнаружения ошибок, например, unit-тестирования. К сожалению, не существует метода, который один обеспечил бы обнаружение всех дефектов программы (в исследованиях эффективность обзора кода обычно оценивается как 30-50% обнаруженных ошибок в приложении).
Читать полностью »

Джофф Гарен (Geoff Garen) из компании Apple обнаружил вызов Sleep() в спинлоке функции TCMalloc сборщика мусора WebKit.

 -#if OS(WINDOWS)
-    Sleep(2);
-#else
-    struct timespec tm;
-    tm.tv_sec = 0;
-    tm.tv_nsec = 2000001;
-    nanosleep(&tm, NULL);
-#endif

После удаления Sleep производительность сборщика в определённых условиях выросла в 3,7 раза. Это наглядный пример, как одна маленькая оптимизация способна и уменьшить размер кода, и одновременно в несколько раз повысить производительность.
Читать полностью »

Qt Coding Style по версии Qt
Привет, читатели!

Сейчас какой-то спец с многолетним опытом работы с Qt подумал: «Что за фигня? Хабр — для вещей покруче!». Но ведь даже спецам с многолетним опытом иногда надо читать вот такие статьи про простые вещи, ведь это — важно. Код — это одна из самых важных составляющих программирования. А наша задача — держать его в чистоте. Эта статья посвящена всем Qt программистам которые стремятся к идеалу.

Конечно есть статья на Qt Project — Qt Coding Style. Только вот там материала ценного меньше,
Читать полностью »

На новой работе (С++) пришлось сменить привычный стиль кода, открывающие угловые скобки { надо было ставить на той же строке, что и начало блоков if/for etc. Поначалу было неприятно отказываться от старых привычек, но за неделю новый подход мне понравился. Тогда подумал — а вдруг существуют и другие аспекты стиля, которые надо изменить несмотря на то, что они пока еще кажутся непривычными? И несмотря на то, что большинство программистов по инерции их не использует. Оказалось, что так и есть. За пару месяцев я сильно переработал стиль, результаты ниже.

Важное замечание
На изменение каждого аспекта стиля лучше давать не меньше недели на привыкание. Мозгу легче переучиваться, если изменения небольшие, легко находить аналогии со старым кодом. А если применить сразу все изменения, то код выйдет настолько непривычным, что мозг перегрузится и возникнет отвращение от слишком резкой смены.
Читать полностью »

Всем привет.

В ответ на комментарии к прошлой статье, я пишу эту статью о том, что мне кажется читаемым кодом, и как я научился таковой писать.

Сразу скажу, что я не собираюсь перепечатывать рекомендации Макконнелла — У него написано пол-книги о методиках наименования методов, констант, переменных, классов, интерфейсов и прочего. Я опишу более общий подход к читаемому коду, который для себя выводил сам долгое время(что-то, конечно, было подсмотрено в коде у более опытных коллег). Рекомендации относятся к объектно-ориентированному коду в первую очередь.

image

Читать полностью »

Слышали ли вы о Queuepy? А слышали ли вы об Open Source проектах, написанных на Java? А интересно ли вам узнать как они работают?

How its made для программистов. Серия №2

Если ваш ответ на последние два вопроса положителен, то неважно, слышали или нет вы о Queuepy до сих пор. Далее нам по пути.
Читать полностью »


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js