Top Banner
Совершенный Ruby код @ka8725 Андрей Колешко http://goo.gl/g4uFT суббота, 23 февраля 13 г.
40

Complete ruby code

Jul 30, 2015

Download

Technology

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Complete ruby code

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

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

http://goo.gl/g4uFT

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

Page 2: Complete ruby code

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

• redmine_s3

• get_or_build

• railsguides.net

• locomotiveCMS

• inherited_resources

• devise

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

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

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

Page 3: Complete ruby code

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

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

Page 4: Complete ruby code

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

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

Page 5: Complete ruby code

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

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

Page 6: Complete ruby code

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

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

Page 7: Complete ruby code

Китайцы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 г.

Page 8: Complete ruby code

Знания

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

Page 9: Complete ruby code

Опрос хабр

0

37,5

75

112,5

150

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

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

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

Page 10: Complete ruby code

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

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

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

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

Page 11: Complete ruby code

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

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

Page 12: Complete ruby code

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

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

Page 13: Complete ruby code

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

Надежно!

Не надежно!

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

Page 14: Complete ruby code

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

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

Page 15: Complete ruby code

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

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

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

Page 16: Complete ruby code

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

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

Page 17: Complete ruby code

Нету тестов?

Не беда!

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

Page 18: Complete ruby code

Нету тестов?

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

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

Page 19: Complete ruby code

Последствия

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

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

Page 20: Complete ruby code

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

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

Page 21: Complete ruby code

Пишите тесты

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

• http://goo.gl/1NHGU

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

Page 22: Complete ruby code

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

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

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

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

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

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

Page 23: Complete ruby code

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

Unit-тесты

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

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

Page 24: Complete ruby code

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

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

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

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

Page 25: Complete ruby code

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

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

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

Page 26: Complete ruby code

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

Нет!

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

Page 27: Complete ruby code

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

Нет!Да!

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

Page 28: Complete ruby code

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

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

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

Page 29: Complete ruby code

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

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

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

Page 30: Complete ruby code

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

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

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

Page 31: Complete ruby code

TDD

Red

Green

Refactor

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

Page 32: Complete ruby code

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

• gems

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

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

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

Page 33: Complete ruby code

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

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

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

Page 34: Complete ruby code

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

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

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

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

Page 35: Complete ruby code

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

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

Page 36: Complete ruby code

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

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

Page 37: Complete ruby code

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

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

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

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

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

http://goo.gl/slGtV

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

Page 38: Complete ruby code

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

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

Page 39: Complete ruby code

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

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

Page 40: Complete ruby code

Вопросы?

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

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