2015-07-13 2 views
-1

Я пишу рубиновую программу, однако мой код начинает чувствовать себя слишком толстым и неуклюжим. Я действительно хочу реорганизовать код, но я не знаю, где я могу, не говоря уже о том, с чего начать. Ниже перечислены самые большие методы в моей программе, поэтому я считаю, что могу реорганизовать их лучше. Кто-нибудь есть какие-либо советы или рекомендации для рефакторинга следующие методы: рубинЛюбые предложения по реорганизации этого кода Ruby?

def project_name 
    project_object = fetch(:payload).fetch(:project) 
    client_object = fetch(:payload).fetch(:client) 

    project_name = 
    if project_object == nil 
     "" 
    else 
     project_object.fetch(:name) 
    end 

    client_name = 
    if client_object == nil 
     "" 
    else 
     client_object.fetch(:name) 
    end 

    if project_name.length > 0 && client_name.length > 0 
    "Project: #{project_name}(#{client_name})" 
    elsif project_name.length > 0 && client_name.length == 0 
    "Project: #{project_name}" 
    elsif project_name.length == 0 && client_name.length > 0 
    "Client: #{client_name}" 
    else 
    "" 
    end 
    end 

и ...

def duration_formatter(date_1, date_2) 
date_1 = date_1.to_time 
date_2 = date_2.to_time 

if date_1.year == date_2.year 
    if date_1.month == date_2.month 
    if date_1.day == date_2.day 
     "#{date_1.strftime('%-d %b %Y')}" 
    else 
    "#{date_1.strftime('%-d')} - #{date_2.strftime('%-d %b %Y')}" 
    end 
    else 
    "#{date_1.strftime('%-d %b')} - #{date_2.strftime('%-d %b %Y')}" 
    end 
else 
    "#{date_1.strftime('%-d %b %Y')} - #{date_2.strftime('%-d %b %Y')}" 
end 

конец

Любые советы или советы будут в значительной степени оценили

ответ

0
project_name = 
    if project_object == nil 
     "" 
    else 
     project_object.fetch(:name) 
    end 

этот вид материала может быть заменен на:

project_name = project_object ? project_object.fetch(:name) : "" 

такой же для client_name. Убедитесь, что вы проверяете правильное состояние.

И вы должны думать что-то, чтобы избавиться от этих if деревьев.

Смежные вопросы