В статье будут освещены следующие проблемы разработки и поддержки проектов на базе php-фреймворка Yii:
Рубрика «чистый код» - 7
Yii: лучшие практики
2016-04-25 в 11:54, admin, рубрики: php, yii, Проектирование и рефакторинг, рефакторинг, чистый кодШорткаты в JavaScript
2015-12-18 в 7:43, admin, рубрики: IT-стандарты, javascript, Блог компании Mail.Ru Group, Веб-разработка, ненормальное программирование, стандарты разработки, чистый код 
Изучая любой язык программирования, полезно знать о его особенностях и уметь эффективно использовать языковые конструкции. Хочу поделиться с вами шорткатами для JS. Эти сокращения в некоторых случаях могут облегчить чтение кода, а также существенно уменьшить его количество. Однако следует помнить, что они могут сыграть с вами злую шутку и, если использовать их повсеместно, ваш код перестанет быть читаемым и поддерживаемым.
Читать полностью »
Именование сложных действий в REST API
2015-02-22 в 14:02, admin, рубрики: api, rest, Веб-разработка, чистый кодВо всех руководствах в описаниях REST дают простые примеры, типа вот вам пользователи, они будут ресурсом /users, вот вам один пользователь, он будет /users/[id] и действия с ним добавитьудалитьизменить.
А что если действия сложные или комплексные и не вписываются в GETPOSTDELETE?
Наверное, любому программисту доводилось видеть код, пестрящий большим количеством повторов и реализации «низкоуровневых» действий прямо посреди бизнес-логики. Например, посреди метода, печатающего отчёт, может оказаться такой фрагмент кода, конкатерирующий строки:
StringBuilder sb = new StringBuilder();
for (Iterator<String> i = debtors.iterator(); i.hasNext();) {
if (sb.length() != 0) {
sb.append(", ");
}
sb.append(i.next());
}
out.println("Debtors: " + sb.toString());
Понятно, что этот код мог бы быть более прямолинейным, например, в Java 8 можно написать так:
out.println("Debtors: " + String.join(", ", debtors));
Вот так сразу гораздо понятнее, что происходит. Google Guava – это набор open-source библиотек для Java, помогающий избавиться от подобных часто встречающихся шаблонов кода. Поскольку Guava появилась задолго до Java 8, в Guava тоже есть способ конкатенации строк: Joiner.on(", ").join(debtors).
Читать полностью »
Пишите чистый код с Реактивными Расширениями (Reactive Extensions)
2014-11-08 в 19:35, admin, рубрики: .net, reactive extensions, Программирование, чистый код Если у вас есть некий процесс, который может выполняться долго и возвращать несколько промежуточных результатов с течением времени, то Реактивные Расширения (.NET Framework Reactive Extensions) позволят вам упростить код и лучше управлять им.

В большинстве случаев вы просто вызываете метод и получаете результат на выходе. Но некоторые процессы устроены по-другому. Например, метод может выполняться в течение продолжительного промежутка времени. Или, что хуже, метод не только выполняется долго, а ещё и нерегулярно возвращает какие-то промежуточные результаты во время исполнения. Конечно, в том числе и для этого, в .NET Framework есть события, с помощью событий один объект может вызвать метод второго объекта, передавая некоторую информацию, в тот момент времени, когда это необходимо.
Но есть решение этой проблемы по-лучше, чем использования событий, — Реактивные Расширения. Если у вас есть процесс, работающий долго и время от времени возвращающий промежуточные результаты, то Реактивные Расширения помогут вам обрабатывать такие результаты всякий раз, когда они приходят. Код от использования Реактивных Расширений вместо событий не только становится проще, но вы ещё получаете более богатую функциональность (например, вы можете использовать LINQ для отсеивания любых ненужных данных).Читать полностью »
Несколько советов less-разработчику
2013-10-21 в 15:44, admin, рубрики: css, less, sass, scss, веб-верстка, веб-дизайн, Веб-разработка, верстка, идеальный код, код, Совершенный код, чистота кода, чистый код
Зачастую, создавая less-файлы (что, впрочем, касается и других препроцессоров css), мы гонимся за красотой и элегантностью less-кода, когда как частенько забываем про скомпилированный css-код. Иногда это влечет за собой критичные последствия, когда объем конечного css возрастает в раз, а код становится совершенно нечитаемым.
Читать полностью »
О стартапе-ловушке, или Роберт Мартин хочет нам навредить
2013-03-08 в 17:51, admin, рубрики: tdd, правильное программирование, Программирование, профессионализм, разработка, рефакторинг, Совершенный код, тесты, чистый кодЯ почувствовал, что устои мироздания потрясены, когда сотни читательов начали яростно спорить по поводу заметки Роберта Мартина о стартапе-ловушке.
Хотите знать, как я обычно участвую в таких спорах?
— Так какие же тесты пишешь ты сам?
— Мнэ-э…
— Когда же ты пишешь тесты?
— Мнэ-э…
— Ты вообще тесты пишешь?
— Мнэ-э…
Окей, конечно, я пишу тесты, я просто не участвую в таких спорах. Времена, когда нас всех заставили принять таблетку TDD, провели черту между теми программистами, которые полюбили тесты всем сердцем, и теми, кто на самом деле не очень-то любит писать тесты. И ввязываться в спор между двумя этими лагерями — отличный повод потерять пару часов впустую, вместо того чтобы делать свою работу.
Но как раз сейчас у меня, кажется, есть эта парочка часов.
Читать полностью »
Стартап-ловушка
2013-03-07 в 17:02, admin, рубрики: tdd, правильное программирование, Программирование, профессионализм, разработка, рефакторинг, Совершенный код, стартап, тесты, чистый код- Вы присоединились к новому стартапу.
- Вы мегаталантливое создание.
- Вы можете работать 60, 70, 80 часов в неделю для достижения результата.
- Вы офигенный разработчик и дизайнер.
- Вы не попадетесь в ловушки, в которые попадались другие.
- Вы убедитесь, что в этот раз все будет по-другому.
- Вы настолько хороши, что правила вам ни к чему.
- Вы в жопе.
Грязный, чистый, устремлённый
2012-11-23 в 15:27, admin, рубрики: говнокод, обучение программированию, самосовершенствование, Совершенный код, чистый код, метки: говнокод, обучение программированию, самосовершенствование, чистый кодГрязный
Давайте вместе поразмыслим — что же такое чистый код, и что такое код грязный? Или, как говорят американцы – «hairy code», т.е. волосатый?
Чем чистый код отличается от грязного – или, как говорят в этих наших интернетах, от «говнокода»? Да и нужен ли он вообще, этот чистый код?

Давайте сначала разберёмся с определениями.
Мне кажется, что дать чёткого определения «чистому» коду просто невозможно. Отчасти это – как с красотой: смотришь на картину, или там скульптуру – и видишь: да, красива. Или, наоборот, уродлива.
Читать полностью »
Active Record Pattern
2012-10-21 в 13:35, admin, рубрики: .net, active record, базы данных, ооп, рефакторинг, серверное программирование, чистый код, метки: active record, базы данных, рефакторинг, серверное программирование, чистый кодХочу рассказать о применении шаблона Active Record для C# на практике. Такой класс реализует извлечение и запись структуры в базу данных. Бизнес логика выносится на следующие уровни абстракции, где с таким объектом можно работать уже как с обычной структурой.
Центральный случай, который я буду рассматривать для примера — это работа со справочником Country из базы данных, который часто читается, но очень редко меняется.
Использование active record объекта в коде бизнес логики выглядит вот так:
Country russia = Country.All[“Russia”];
