Как стать автором
Обновить
  • по релевантности
  • по времени
  • по рейтингу

KISS'n'DRY

Чулан
Ramm подкинул два простых и точных принципа разработки.

KISS = Keep It Simple, Stupid
DRY = Don't Repeat Yourself


Пусть побудут отдельным топиком-мантрой, специально подготовленным для внесения в избранное.
Кстати, Ramm раскрыл тему, в контексте которой он рассказал про принципы.
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 487
Комментарии 15

Хватит изобретать велосипед

Ruby *
Очень часто на хабре встречаю топики или комментарии любителей изобретать велосипед. Аргументы как всегда одни и те же:
1. так оно надёжнее,
2. лень копаться в чужом коде,
3. самореализовываюсь.

Кто-то так и не находит подходящий для его нужд фреймворк, пишет свой и клепает на нём сайты-визитки. А кто-то утверждает, что Смарти больно много весит, пытается его переписать, понимает, что не осилит, и заявляет, что это вообще лишнее.
Читать дальше →
Всего голосов 61: ↑46 и ↓15 +31
Просмотры 2K
Комментарии 109

Перечень требований к коду Ruby on Rails приложения

Ruby *
Перевод
На моей практике Ruby и Ruby on Rails оказались самым тяжелым в изучении сочетанием языка и фреймворка. Те люди, которые начинали программировать с C, C++ или Java, обнаружат в Ruby абсолютно другой (и более правильный!) подход к ОО-дизайну, а в Rails — много интересных решений, которые необходимо понять и осознать. И хотя изучение Ruby заняло у меня много времени (и я уверен, что еще очень многое предстоит узнать), я люблю эту технологию и не собираюсь возвращаться назад.

У меня есть опасение, что по мере роста популярности Ruby и Rails будет появляться все больше разрабочиков, изучающих Ruby через призму закоренелого Java-подобного мышления. С одной стороны это хорошо. Но с другой стороны это плохо тем, что некачественный код, когда он становится общедоступным, порождает еще больше некачественного кода.

Читать дальше →
Всего голосов 50: ↑46 и ↓4 +42
Просмотры 3K
Комментарии 102

Интервью с DHH (создателем Rails)

Ruby on Rails *
Перевод
25 июля twit.tv провели интервью с David Heinemeier Hansson (для непосвященных — создателем Rails).

Советую его послушать самому, если с английским нет проблем, а я законспектировал на русском основные мысли про Ruby и Ruby on Rails.
Читать дальше →
Всего голосов 43: ↑36 и ↓7 +29
Просмотры 1.7K
Комментарии 110

Архитектура контроллеров: простые советы на каждый день

Ruby on Rails *
То, что контроллеры должны быть «худыми» знают все, но по мере наращивания функционала поддерживать чистоту контроллеров становится все сложнее и сложнее. Мы хотим предложить несколько рекомендаций как содержать свои контроллеры максимально чистыми без ущерба для качества кода.
Читать дальше →
Всего голосов 51: ↑47 и ↓4 +43
Просмотры 3.5K
Комментарии 44

Как DRYить модели

Ruby on Rails *
В большинстве рельсовых проектов основная концентрация кода приходится на модели. Все наверняка читали про Slim controllers & fat models и стараются впихать в модели как можно больше, а в контроллеры как можно меньше. Что ж, это похвально, однако в стремлении утолстить модели многие часто забывают про принцип DRY — don't (fucking) repeat yourself.

Я тут постараюсь вкратце расписать, как в районе моделей и рыбку съесть, и про DRY не забыть.

Читать дальше →
Всего голосов 64: ↑60 и ↓4 +56
Просмотры 16K
Комментарии 22

Три ключевых принципа ПО, которые вы должны понимать

Разработка веб-сайтов *Программирование *Проектирование и рефакторинг *
Перевод
Tutorial

Разрабатывая приложения, мы постоянно сталкиваемся с новыми подходами, языками и концептами. И постоянно мы мечемся в сомнениях «смогу ли я быть на волне, оставаться конкурентоспособным, учитывая все изменения и тренды?». Давайте задумаемся на мгновение, вспомнив фразу из моего любимого фильма «Касабланка» — в любви законов новых нет — так создан свет.

Все, что касается любви, применимо и к коду. Новых законов в коде нет. Если вы четко понимаете основные идеи разработки, вы способны максимально быстро адаптироваться к новым подходам. В этой статье я расскажу вам о трех основных принципах, которые, наряду с другими, позволяют регулировать сложность разработки. Я поделюсь своим видением вопроса, которое, надеюсь, поможет вам в повседневной работе.
Читать дальше →
Всего голосов 142: ↑128 и ↓14 +114
Просмотры 168K
Комментарии 56

«Разбор полетов» — episode 20 — Программисты-оптимисты

Я пиарюсь

Представляем Вашему вниманию юбилейный двадцатый выпуск подкаста «Разбор Полетов», в котором мы говорим о событиях и технологиях, которые взволновали нас на этой неделе, и будут волновать Вас!
В сегодняшнем выпуске мы поговорим:
Читать дальше →
Всего голосов 23: ↑18 и ↓5 +13
Просмотры 927
Комментарии 17

Как вырастить программу из прототипа

Программирование *
Каждую неделю на профильных блогах мы читаем как нужно использовать методологию X и фреймворк Y, чтобы написать хорошо спроектированный и легко поддерживаемый софт. Нам постоянно говорят, что, мол, говнокод — это плохо, рефакторинг — наше все, дают те или иные очень важные сферические советы в вакууме. В большинстве этих статей можно встретить абстрактные философские нравоучения, например, вот это я распечатаю и повешу при входе в офис:


А что, если я скажу, что не все проекты одинаковые, и некоторые из них не то что можно, а даже нужно тщательно выращивать из прототипа? Об этом я рассказывал на конференции Unite'12, а сейчас расскажу вам.
Читать дальше →
Всего голосов 77: ↑68 и ↓9 +59
Просмотры 23K
Комментарии 49

Разработка через страдание

Разработка веб-сайтов *Программирование *Проектирование и рефакторинг *
Перевод
От переводчика:
Немало копий сломано в спорах о том, когда уместнее KISS, а когда DRY, когда лучше как можно быстрее и проще решить задачу любыми средствами, а когда стоит создавать красивые и универсальные абстракции. Натан Марц, автор популярного фреймворка Storm, используемого в Твиттере, предлагает свой вариант. Чтобы не создавать тонны бесполезного кода ради абстрактной универсальности и в то же время не позволять системе превращаться в кашу из костылей, он использует «разработку через страдание» (suffering oriented programming).



Однажды меня спросили: «Как ты решился пойти на такой страшный риск — писать Storm одновременно с запуском стартапа?» (Storm — фреймворк для распределённых вычислений в реальном времени). Да, пожалуй, со стороны создание такого крупного проекта для стартапа кажется крайне рискованным. Тем не менее, с моей точки зрения это вообще не было рискованным делом. Трудным, но не рискованным.

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

Я придумал такую мантру разработки: «Сначала сделай, чтобы было. Затем — чтобы было красиво. Затем — чтобы было быстро».
Читать дальше →
Всего голосов 101: ↑93 и ↓8 +85
Просмотры 54K
Комментарии 64

Применение принципа DRY в RSpec

Тестирование IT-систем *Ruby *


DRY(Don’t Repeat Yourself) — один из краеугольных принципов современной разработки, а особенно в среде ruby-программистов. Но если при написании обычного кода повторяющиеся фрагменты обычно легко можно сгруппировать в методы или отдельные модули, то при написании тестов, где повторяющегося кода порой еще больше, это сделать не всегда просто. В данной статье содержится небольшой обзор средств решения подобных проблем при использовании BDD-фреймворка RSpec.
Читать дальше →
Всего голосов 34: ↑30 и ↓4 +26
Просмотры 18K
Комментарии 17

Пример принципа DRY в Windows Phone 7

Блог компании Инфопульс Украина Разработка под Windows Phone *

Я идеалист.


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

Но, отойдем немного от философии к практике. Разрабатывая приложения, я всегда стремился к идеалу, стремился следовать актуальным концепциям. По ходу разработки я всегда старался следовать принципу DRY. Некоторое время назад я начал заниматься разработкой под Windows Phone. В результате появились «обертки» для операций, которые используются чаще всего. Некоторыми из них хочу поделиться.
Читать дальше →
Всего голосов 20: ↑11 и ↓9 +2
Просмотры 6.4K
Комментарии 7

Используем method decorator в CoffeeScript(Javascript) для удобного и читаемого DRY-кода

JavaScript *Программирование *CoffeeScript *
Статья о простом, но не очевидном способе как сделать код чище и избавиться от копипасты.

Условно проблема выглядит вот так:
###
My awesome class
###
class Awesome
  doFoo : (arg, cb) ->
    unless arg is 42
      return cb Error """
                      only The Answer may be an argument, but got:
                      |arg| = |#{arg}|
                      """
    cb null, "#{arg} is The Answer"

  doBar : (arg, cb) ->
    # hm... arg must be The Answer too

У нас есть кусок кода (тот, что с проверкой), который во-первых похоже потребуется повторить в новом методе, да и вообще отвлекает от основного действа в методе.

Совсем немного текста о том, как method decorator делает мою жизнь лучше
Всего голосов 9: ↑5 и ↓4 +1
Просмотры 4.1K
Комментарии 16

Избавляемся от повторения кода с помощью DRY CRUD

Ruby on Rails *
Из песочницы
Фреймворк Ruby on Rails меня просто очаровывает, но до недавнего времени некоторую сложность представляла из себя генерация CRUD контроллеров.

Почти всегда мне было необходимо реализовывать списки с сортировкой, фильтрацией и пагинацией, а стандартного способа этого достичь в рельсах я не обнаружил. Перепробовал несколько вариантов и ни один меня не удовлетворил:
  • стандартный генератор scaffold_controller — ничего подобного нет, CRUD с простейшим дизайном
  • nifty Scaffold — его разработка приостановлена, но все равно фильтрации и сортировки нет
  • гем для DataTable — не прижился, он обеспечивает только представление данных, а код для фильтрации и сортировки пришлось бы писать самому

Долгое время не удавалось найти ничего похожего на полюбившийся мне виджет CGridView из Yii framework. Уже почти смирился с необходимостью писать свой велосипед, но наткнулся на DRY CRUD и хочу поделится опытом его использования. Может кому-то он окажется полезным, а может кто-то подскажет еще более подходящий инструмент.
Далее
Всего голосов 14: ↑12 и ↓2 +10
Просмотры 8.8K
Комментарии 4

Практика хорошего кода

Программирование *Совершенный код *
imageЗа годы присутствия на хабре я прочитал немало статей на тему того, как должен выглядеть идеальный код. И поменьше статьей о том, как конкретно достигать этого идеала. Также стоит отметить, что весьма значительная часть всех этих материалов была переводом западных источников, что, вероятно, является следствием более зрелой отрасли IT «за рубежом», со всеми вытекающими вопросами и проблемами.

К сожалению, во многих случаях авторы либо забираются в недосягаемые выси многослойных архитектур, что требуется в лучшем случае для 1% проектов, либо ограничиваются общими фразами вроде «код должен быть понятен» или «используйте ООП и паттерны», не опускаясь до подробных объяснений, в чем например измеряется «понятность» кода.

В этой статье я хочу попытаться систематизировать те критерии оценки качества кода, и те практики его написания, которые мне удавалось применять в реальных проектах практически независимо от их размеров и специфики, используемого языка программирования и других факторов.
Читать дальше →
Всего голосов 50: ↑37 и ↓13 +24
Просмотры 63K
Комментарии 76

Rails: ajax-валидация в стиле DRY

Ruby on Rails *
Tutorial
Когда я только начинал задумываться о том, чтобы приобщиться к миру веб-разработки, и выбирал язык, с которого начну, одна из википедий мне напела, что в основе философии Rails лежат 2 принципа: Convention over configuration (CoC) и Don’t Repeat Yourself (DRY). Что касается первого — я тогда вобще не понял о чём речь, а вот второй понял, принял и ожидал, что в недрах этого замечательного фреймворка, я отыщу нативный инструмент, позволяющий мне один раз написать правила валидации для атрибутов модели, и потом использовать эти правила как для front, так и для back проверок.
Читать дальше →
Всего голосов 14: ↑11 и ↓3 +8
Просмотры 11K
Комментарии 22

DRY и цена неправильных абстракций

Программирование *Проектирование и рефакторинг *Промышленное программирование *
Перевод


Эта статья давно висела у меня в списке задач. Но кажется, только сегодня у меня появились силы и время, чтобы материализовать её. Совпадение или нет, но я в том же кафе, где опубликовал недавно свою первую статью. Наверное, в напитки, которые тут подают, что-то подмешивают...


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


Конечно, я не намекаю, что такие принципы, как DRY — плохие. Это определенно не так. Просто я считаю, что всё зависит от ситуации. Сильно. Что касается именно DRY, это ведёт к логическому выводу: «На самом деле я тот, кто иногда склоняет других к дублированию, а не абстракции».


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

Читать дальше →
Всего голосов 39: ↑32 и ↓7 +25
Просмотры 13K
Комментарии 21

«Ruby для меня — это отличный инструмент»

Блог компании Нетология Ruby *Ruby on Rails *ООП *
25 марта университет интернет-профессий «Нетология» совместно с сообществом ruby-разработчиков Moscow.rb провел митап на тему альтернативных решений в мире Ruby. Выясняем, есть ли нетривиальный Ruby и что-то кроме «рельсы», а также за что любить этот язык программирования.

image

Читать дальше →
Всего голосов 23: ↑16 и ↓7 +9
Просмотры 10K
Комментарии 19

RailsClub 2017: ждем всех рубистов 23 сентября в Москве

Блог компании RubyRussia Ruby *Ruby on Rails *
Всем привет! Соскучились по нам? ) Мы уже готовимся к новой встрече. Сегодня расскажем о том, что будет на RailsClub 2017 и о том, как еще можно попасть в программу!

23 сентября, конгресс-центр Технополис Москва. Регистрация на сайте.

Итак, что будет:

image
Читать дальше →
Всего голосов 6: ↑6 и ↓0 +6
Просмотры 1.6K
Комментарии 0
1