ݺߣ

ݺߣShare a Scribd company logo
Как$писать$хороший$код?
Как$тестировать$код$правильно?
Как$улучшать$имеющийся$код?
Как$улучшать$имеющийся$код?
Рефакторинг.-С-чего-начать?
Иван%Немытченко,%@inem
28#июня#2014,#Omsk#ruby#developers#meetup##2
Проекту(пять(лет
Rails&2.3
Если%подходить%
академически,%то%
кажется%что%плохо%
все
1.#Но#оно#работает
2.#Заказчик#хочет#дальше#
развивать#проект
С&ܴdz;чего&ܴdz;начать?
Don't&do&it&for&free
Don't&do&it&for&free
Don't&push&it&too&hard.
Don't&push&it&too&hard.
Контроллерам*+*контроллерово!
def create
use_case = UseCases::Samples::Create.new(current_user, @project.id)
@samples = use_case.run(params[:samples])
render_results
end
def mass_update
use_case = UseCases::Samples::Update.new(current_user, @project.id)
use_case.run(params[:samples])
render_results
end
Бизнеслогику--юзкейсам!
module UseCases::Samples
class UseCase
def initialize(initiator, project_id)
@initiator = initiator
@project_id = project_id
end
def run(input_data)
some_really_complex_stuff_here do |data|
b = bla(data)
c = blabla(project_id, data, b)
bla!(initiator, project_id, c)
end
end
private
attr_accessor :initiator, :project_id
def project
@project ||= Project.find_by_id(project_id)
end
end
end
Можно%ли%вызывать%юз/кейс%из%
другого?
Вопросы?

More Related Content

Рефакторинг rails-приложения. С чего начать?