Pull to refresh
  • by relevance
  • by date
  • by rating

XP. Недопарное программирование (Code review).

Website development *
Все много писали про «Парное программирование». Как это клёво и всё такое. Но как бы возникает проблема, что два программиста за день пишут как бы 150% работы одного программиста. Ну то есть теоретически меньше.

А вот у нас в компании было так, что просто за каждым коммитером (тот кто имеет право добавлять код в основную ветку программы) был назначен ревьюер и после коммита в trunk (основную ветку программы), тикет (да!!! каждый коммит должен быть сделан по тикету) переводился на ревьюера (в тикете писался номера коммито(ов) для этого тикета). Ревьюер отсматривал изменения и или переводил тикет тестеру или же возвращал его коммитеру по одной из причин: логическая ошибка, не соблюдение правил кодирования, сложный код который нельзя прочитать и он не задокументирован, ну или же он явно видел ошибку в коде (напр. забыл проэскейпиться).

Таким образом повышалась как читаемость — соблюдались все правила кодирования, так и документированность — сложные участки кода были задокументированы.

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

А у вас что-нить подобное использовалось/используется?

UPD. понял свою ошибку. Переименовал топик.
Total votes 49: ↑42 and ↓7 +35
Views 2.1K
Comments 68

Вершина нормализации данных: getGenders

Lumber room
Так как Хабр в первую очередь посвящен сфере ИТ, думаю, у следующей истории найдется много поклонников.

Не так давно нашей команде пришлось интегрироваться с внешней финансовой системой посредством веб-сервисов. Кроме всего прочего, внимание привлек метод с таинсвенным названием getGenders. Комментарий к методу звучал как "Справочник полов (sex). Странно, но их два..." (без шуток). Ситуация усугублялась еще и тем, что метод принимал на вход строковый параметр.

Читать дальше →
Total votes 22: ↑16 and ↓6 +10
Views 341
Comments 15

Об идеальном коде и суровой реальности

Website development *Perfect code *
Думаю, никто не будет спорить, что программный код должен быть чистым и «не пахнуть» (code smell), а паттерны проектирования и TDD должны стать верными спутниками любого мало-мальски грамотного разработчика на протяжении его нелегкой, но продуктивной карьеры. Все также знают, что цена ошибки в продакшине возрастает в десятки раз, а также то, что хорошие программисты оптимизируют код, а плохие — покупают новые сервера, а еще то, что 9 женщин не родят одного ребенка за месяц.



Было бы глупо спорить с тем, что писать хороший код — не правильно. Более того, внимательный читатель найдет среди моих прошлых публикаций целый серии статей на тему идеального кода. Но эту заметку я решил написать по причине того, что в последнее время очень часто сталкиваюсь с идеализацией процесса разработки и кучи советов в стиле «пофиг на все, главное — идеальный код». Далее несколько наблюдений и историй из жизни.
Читать дальше →
Total votes 123: ↑99 and ↓24 +75
Views 67K
Comments 101

Советы Google по кодированию на языке Python. Часть вторая: советы по форматированию исходного кода

Python *Programming *Perfect code *

Доброго времени суток. Вот и пришло время для публикации второй части так понравившегося многим хабровчанам перевода стайл гайда для языка Python от компании Google, (первая часть бережно хранится хабром). Теперь мы коснемся напрямую форматирования исходного кода на языке программирования Python. Как известно, чистота — залог здоровья, а чистота программного кода — залог уважения коллег и (в идеале) поощрения от кого-нибудь свыше. Вообще, Python сам по себе является хорошо читаемым языком, и даже синтаксис данного языка призывает к порядку в коде (и, как следствие — в голове). Но каждый из нас сам себе документатор и сам себе творец оформления. А как уже говорилось однажды — ко мнению авторитетных товарищей нельзя не прислушиваться. Итак, вторая часть Google Python Style Guide — Python Style Rules ждет Вас под катом. И pdf тут как тут.
Читать дальше →
Total votes 75: ↑64 and ↓11 +53
Views 73K
Comments 52

Стиль кодирования условия неравенства

Programming *

Есть несколько способов оформлять неравенство.
В одном случае мы, располагая переменную слева, пишем как читаем: «X больше нуля».
X > 0

Другой метод — меньшее число находится слева, большее справа, облегчая определение диапазона:
0 < X && X < 100

Холивар открыт, господа!
Total votes 56: ↑14 and ↓42 -28
Views 4.4K
Comments 25

Несколько советов less-разработчику

Website development *CSS *
Tutorial
Зачастую, создавая less-файлы (что, впрочем, касается и других препроцессоров css), мы гонимся за красотой и элегантностью less-кода, когда как частенько забываем про скомпилированный css-код. Иногда это влечет за собой критичные последствия, когда объем конечного css возрастает в раз, а код становится совершенно нечитаемым.
Я хочу писать правильный код!
Total votes 22: ↑16 and ↓6 +10
Views 20K
Comments 14

Что быстрее? foreach vs. List.ForEach vs. for-loop

Programming *C# *
Translation
Сегодня (прим. переводчика: т.е. 6 лет назад) я перебирал список List, используя конструкцию foreach, и чувствуя небольшое самодовольство, осознавая насколько это производительнее, того что было бы, попытайся я использовать ArrayList. Благодаря чуду Generic компилятор C# аккуратно избегает многочисленные упаковочные операции с помощью экземпляров System.Collections.Generic.IEnumerator вместо старых System.Collections.IEnumerator. Тогда я подумал: "действительно ли это самый быстрый способ?" По результатам расследования, получается, что, нет, это не самый быстрый способ.
Читать дальше →
Total votes 32: ↑18 and ↓14 +4
Views 43K
Comments 39

Форматирование Python-кода

Python *Programming *

Введение


Python, точнее его самый известный представитель CPython, не очень предназначен для каких-либо быстрых расчетов. Иначе говоря, производительность у него не такая уж хорошая. А вот скорость разработки и читаемости отличная.

О читаемости и пойдет речь, а точнее как ее увеличить.
Читать дальше →
Total votes 36: ↑29 and ↓7 +22
Views 48K
Comments 33

Небесный путь в PHP

Website development *Open source *PHP *Programming *Perfect code *
Recovery mode
Идею проекта SKY можно излагать по разному, но самое короткое и простое изложение следующее. В интернете существует много сайтов, сила которых в основном обусловлена текстовым и фото-видео контентом пользователей, но нет ни одного, сила которого бы была обусловлена кодом пользователей. Уточню: конечно, есть сайты сохраняющие код пользователей, например «packagist.org», но нет ни одного, которые бы могли достигнуть уровня популярности социальной сети в отношении кодового контента (назовем это цель X), в котором ведется активный скрупулезный анализ всех деталей кода многими участниками. Так сайт packagist сопоставим с проектом SKY, достигшем цели X, также, как можно сопоставить любую инсталляцию форума phpbb с сайтом Facebook. В данный момент проект SKY мало известен, но возможна ли указанная популярность? Моё мнение – конечно, и ключ к этому — простота, следование принципам KISS в дизайне кода. Имхо, и php достиг высокой популярности, в первую очередь, благодаря простоте.
Читать дальше →
Total votes 50: ↑14 and ↓36 -22
Views 12K
Comments 269

Идиоматичный Kotlin, набор хороших практик

ИНФОРИОН corporate blog Programming *Java *Perfect code *Kotlin *
Translation


Чтобы полностью раскрыть все преимущества Kotlin, пересмотрим некоторые подходы, которые мы используем в Java. Многие из них могут быть заменены на лучшие аналоги из Kotlin. Давайте посмотрим на то, как мы можем написать идиоматичный код на Kotlin.
Читать дальше →
Total votes 28: ↑26 and ↓2 +24
Views 24K
Comments 13

You Gonna Hate This или сказ о том, как должен выглядеть хороший код

Website development *Programming *Perfect code *.NET *C# *

Сколько копий поломано и будет еще поломано в поисках идеального кода. Судя по всему пришло время и мне в этом поучаствовать :)


Всем добрый день. Некоторое время назад я выступал перед студентами на тему "Что мы ожидаем от хорошего кода" и решил продублировать ее тут. В процессе перевода текст несколько поменялся, но суть осталась прежней. Статья получилась простая (и безусловно не полная), но рациональное зерно тут есть.

Ну, и как же должен выглядеть идеальный код?
Total votes 23: ↑20 and ↓3 +17
Views 12K
Comments 39

Размышления о красоте и коде

Programming *Perfect code *Designing and refactoring *Brain
Думаю, у каждого разработчика рано или поздно возникают в голове мысли о том, что код нужно писать определенным образом. Почему фреймворк этого автора так прост в использовании, и погружение в него проходит так быстро? Почему данный кусок кода кажется мне ужасным? В этот момент происходит важный виток в развитии разработчика как профессионала. Он не только начинает задумываться о том, как ему реализовать конкретную задачу, но и том, как оформить свое решение. В голове начинают зарождаться мысли об определенном структурировании кода и красивом его оформлении. Кто-то начинает создавать для себя некий эмпирический набор правил по оформлению кода, кто-то приходит к помощи литературы или совету более опытных товарищей. В любом из этих сценариев код начинает рассматриваться не просто как безусловное решение проблемы. Появляются мысли о том, что некоторая часть кода сделана некрасиво, а вот здесь получилось круто и элегантно. Но кто определяет эти критерии красоты относительно кода и что в них закладывается? Однозначно ли все в вопросах кодового этикета и красоты?

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

Всех заинтересованных в рассуждениях на тему, что такое красота кода, в чем она может выражаться, почему все известные практики не в силах закрыть раз и навсегда этот вопрос, прошу под кат.
Читать дальше →
Total votes 9: ↑7 and ↓2 +5
Views 6.3K
Comments 13

Что каждому разработчику следует знать с самого начала

Programming *IT career Health Learning languages
Translation
Как разработчик, вы услышите много сумасшедших, невероятных теорий о значении «строк кода». Не верьте ни одной. Строки кода — нелепая метрика. В очень редких случаях она что-то говорит, обычно — ничего. Использование строк кода для принятия решений похоже на оценку качества книги по количеству страниц.

Некоторые могут сказать, что чем меньше строк кода в приложении, тем легче его читать. Это только частично верно. Вот мои метрики для читаемого кода:

  • Код должен быть последовательным
  • Код должен быть информативным
  • Код должен быть хорошо документирован
  • Код должен использовать стабильные современные функции
  • Код не должен быть излишне сложным
  • Код не должен быть неэффективным (не пишите намеренно медленный код)

Если уменьшение количества строк кода противоречит любой из этих метрик, это становится проблемой. На практике оно почти всегда будет мешать и, следовательно, почти всегда является проблемой. Но вот в чём дело, если вы стремитесь соответствовать вышеуказанным критериям, то у вашего кода будет идеальное количество строк — и не нужно их подсчитывать.
Читать дальше →
Total votes 23: ↑20 and ↓3 +17
Views 10K
Comments 17

Обработка ошибок в Kotlin/Java: как правильно это делать?

FUNCORP corporate blog Programming *Java *Kotlin *

Источник


Обработка ошибок в любой разработке играет важнейшую роль. В программе может пойти не так практически всё: пользователь введёт некорректные данные, или они могут прийти такими по http, или мы ошиблись при написании сериализации/десериализации и в процессе обработки программа падает с ошибкой. Да может банально закончится место на диске.


спойлер

¯_(ツ)_/¯, нет единого способа, и в каждой конкретной ситуации придётся подбирать наиболее подходящий вариант, но есть рекомендации, как это делать лучше.

Читать дальше →
Total votes 35: ↑31 and ↓4 +27
Views 16K
Comments 16

Интеграция PHP проекта на GitHub и Scrutinizer

Open source *PHP *PostgreSQL *Perfect code *GitHub
Tutorial

Есть такой продвинутый инструмент Scrutinizer CI.

Для OpenSource он абсолютно бесплатный и платный для приватных репозиториев.

Вы о нем слышали, наверное, а если нет, то лично я использую его для анализа кода на различного рода уязвимости, а также в качестве замены статическому анализатору типа Psalm, ну и для покрытия конечно же, т.к. при довольно простой сквозной интеграции с GitHub оно внедряется в ваши PR и можно ревьюить код, наблюдая покрытие по аналогии с Cubertura в GitLab.

Это удобно, но к моему великому удивлению, на хабре, как и в целом на просторах интернета, довольно мало информации о том, как быстро и просто подключить этот крутой инструмент к вашему репозиторию в GitHub, ну а если вы еще и английского не знаете, то картина еще более грустная.

Поэтому я решил поделиться с вами своим опытом интеграции со Scrutinizer CI, рассказать о нюансах и тд...

Поехали
Total votes 16: ↑16 and ↓0 +16
Views 2K
Comments 7

Прочти меня: код, который не выбесит соседа

Яндекс corporate blog Programming *Perfect code *C++ *Lifehacks for geeks


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

Я расскажу о подходах, которые мы используем в Яндекс.Такси для написания читаемого кода на C++, Python, JavaScript и других языках.
Читать дальше →
Total votes 67: ↑58 and ↓9 +49
Views 23K
Comments 75

Хорошего кода не бывает

JavaScript *Programming *Perfect code *

Серьезно. Кода на который можно посмотреть и сказать "это сделано на отлично" почти не бывает – в основном один фарш из легаси, гвоздей, и иероглифов.

Это не пессимизм. Откройте почти любой коммерческий проект, где люди решают задачи, живут с тем что есть, проект уже прожил сравнительно долгую жизнь, а команда меняется (и это нормально).

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

Серьезно
Total votes 20: ↑19 and ↓1 +18
Views 15K
Comments 41