Совершенный Ruby код @ka8725 Андрей Колешко http://goo.gl/g4uFT суббота, 23 февраля 13 г.
Совершенный 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 г.