Complete ruby code

Post on 30-Jul-2015

2151 Views

Category:

Technology

2 Downloads

Preview:

Click to see full reader

Transcript

Совершенный Ruby код

@ka8725 Андрей Колешко

http://goo.gl/g4uFT

суббота, 23 февраля 13 г.

Моя активность

• redmine_s3

• get_or_build

• railsguides.net

• locomotiveCMS

• inherited_resources

• devise

Поддержка, сделал с нуля

Контрибьютор

суббота, 23 февраля 13 г.

Проблемы кода

суббота, 23 февраля 13 г.

Индусыif i.to_s.length == 1

суббота, 23 февраля 13 г.

Индусыif i.to_s.length == 1if i.is_a?(Integer) && (0 <= i && i < 10)

суббота, 23 февраля 13 г.

Китайцыif (i == 0 || i == 1 || i == 2 || i == 3 || i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9)

суббота, 23 февраля 13 г.

Китайцыif (i == 0 || i == 1 || i == 2 || i == 3 || i == 4 || i == 5 || i == 6 || i == 7 || i == 8 || i == 9)if 0 <= i && i < 10

суббота, 23 февраля 13 г.

Знания

суббота, 23 февраля 13 г.

Опрос хабр

0

37,5

75

112,5

150

PHP Java C# Другой язык

Если вы рубист, то с какого языка вы перешли на Ruby?

суббота, 23 февраля 13 г.

Быдлокодерhttp://lurkmore.to/Быдлокодер

• VB, PHP, JavaScript, программирование мышкой

• отсутствие языковой граммотности• отсутствие понимание собственного кода• много чего интересного по ссылке...

суббота, 23 февраля 13 г.

Проблемы архитектуры

суббота, 23 февраля 13 г.

Проектирование

суббота, 23 февраля 13 г.

Проектирование

Надежно!

Не надежно!

суббота, 23 февраля 13 г.

Сложные проблемы

суббота, 23 февраля 13 г.

Cложные проблемы

Не идите прямо!

суббота, 23 февраля 13 г.

Проблемы тестирования

суббота, 23 февраля 13 г.

Нету тестов?

Не беда!

суббота, 23 февраля 13 г.

Нету тестов?

Не беда!Не проект!

суббота, 23 февраля 13 г.

Последствия

• Невозможно добавить фичу• Фикс одного бага создает два бага• Рефакторинг невозможен• Код попахивает

суббота, 23 февраля 13 г.

Пути решения проблем

суббота, 23 февраля 13 г.

Пишите тесты

• В меру• Научиться писать тесты = понять, когда их писать не нужно

• http://goo.gl/1NHGU

суббота, 23 февраля 13 г.

Покрытие тестами

• Не стремитесь к 100% покрытию

• Достаточно acceptance-тестов

• Не тестируйте стандартные вещи, плагины и т.п.

• Не используйте Cucumber

суббота, 23 февраля 13 г.

Какие тесты писать?

Unit-тесты

Интеграционные тесты

суббота, 23 февраля 13 г.

Важность тестов в MVC

•Модели•Контроллеры• Хелперы• Отображение

• Интeграционные

суббота, 23 февраля 13 г.

Kent Beck(создатель TDD)

‘Мне платят за код, который работает, а не за тесты.Моя философия - тестировать настолько мало, насколько это возможно для достижения нужного уровня уверенности’

суббота, 23 февраля 13 г.

Тесты после кода?

Нет!

суббота, 23 февраля 13 г.

Тесты после кода?

Нет!Да!

суббота, 23 февраля 13 г.

Примерclass User < AR validates :name, :presence => trueend

describe User it { should validate_presence_of(:name) }end

суббота, 23 февраля 13 г.

Примерclass User < AR # validates :name, :presence => trueend

describe User it { should validate_presence_of(:name) }end

суббота, 23 февраля 13 г.

Примерclass User < AR validates :name, :presence => trueend

describe User it { should validate_presence_of(:name) }end

суббота, 23 февраля 13 г.

TDD

Red

Green

Refactor

суббота, 23 февраля 13 г.

Используйте готовые решения

• gems

• Шаблоны проектирования

• Сторонние сервисы

суббота, 23 февраля 13 г.

Парное программирование

С котомAaron Patterson (@tenderlove)

суббота, 23 февраля 13 г.

Продумывайте решение

• Консультируйтесь у знающих• Вытягивайте инфу у заказчика до последней мелочи

• Конструируйте

суббота, 23 февраля 13 г.

Переписать с нуля?

суббота, 23 февраля 13 г.

Переписать с нуля?

суббота, 23 февраля 13 г.

Переписать с нуля!

• Существуют все вышеописанные проблемы

• Вы знаете проект очень хорошо

• Вам доставляет удовольствие

• Заказчик готов на это и сам просит вас об этом

http://goo.gl/slGtV

суббота, 23 февраля 13 г.

Просвещайтесь

суббота, 23 февраля 13 г.

Прочитайте эту книгу!

суббота, 23 февраля 13 г.

Вопросы?

@ka8725 Андрей Колешко

суббота, 23 февраля 13 г.

top related