【发布时间】:2020-05-22 13:55:16
【问题描述】:
我有一个简单的方法,可以从 Jira 项目中获取数据,并将任务分配给用户,这些任务还有待完成。有没有办法缩小下面的方法以避免 rubocop condition size too high 错误?
def initialize
@project = Jira::ProjectConnection.new('project_key').call
end
def assigned_task_list
project.issues.map do |issue|
next unless issue.fields.dig('status', 'name') != 'Done' && !issue.fields.dig('assignee', 'name').nil?
{
key: issue.key,
name: issue.fields.dig('assignee', 'name'),
email: issue.fields.dig('assignee', 'emailAddress'),
status: issue.fields.dig('status', 'name')
}
end
end
【问题讨论】:
-
项目中的每个
issue都是一个对象吗?我认为这是分离关注点的最佳方式。在Issue类(或者,可能是Jira::Project::Issue)中添加一个带有fields.dig('status', 'name') != 'Done' && !fields.dig('assignee', 'name').nil?的方法。您还可以摆脱issue.fields.dig并添加一个(或多个)方法,以便您可以使用,例如,issue.assignee_name。 -
issues是来自Jira-rubygem 的方法 -
那么每个
Issue实际上是一个对象,所以你可以将方法添加到类中。但是将代码重构为spickermann recommends 可能会快得多。