我已经搜索谷歌和stackvoverflow得到的答案,但它都归结为:创建方法。 我希望我的代码可以重用。我不想在同一个类中创建其他方法。这个类已经包含了很多代码。如何在具有可读类的同时降低复杂性? 我想过创建另一个班级,并在那里有所有的新方法。如何降低if语句的复杂度?
public Issue GetIssue(int issueId, IssueOption issueOption)
{
string resource = "issues/{id}.xml?";
if (issueOption.IncludeRelation)
{
resource += "include=relations&";
}
if (issueOption.IncludeChildren)
{
resource += "include=children";
}
//To fetch multiple associations use comma (e.g ?include=relations,journals
RestRequest request = new RestRequest(resource);
request.AddParameter("id", issueId, ParameterType.UrlSegment);
Issue issue = Execute<Issue>(request);
if (issueOption.IncludeVersion)
{
issue.Fixed_version = GetVersion(issue.Project.Id);
}
if (issue.Parent != null && issueOption.IncludeParent)
{
issue.Parent = GetIssue(issue.Parent.Id, issueOption);
}
if (issueOption.IncludeUsers)
{
if (issue.Author.Id == issue.Assigned_to.Id)
{
issue.Author = GetUser(issue.Author.Id);
issue.Assigned_to = issue.Author;
}
else
{
issue.Author = GetUser(issue.Author.Id);
if (issue.Assigned_to != null)
{
issue.Assigned_to = GetUser(issue.Assigned_to.Id);
}
}
}
if (issueOption.IncludeProject)
{
issue.Project = GetProject(issue.Project.Id);
}
return issue;
}
它不以某种方式工作吗?如果不是,这属于代码审查,而不是SO。 – Servy
用较小的方法用描述性名称包装它们。也可以明确传递bool以启用测试。 –
“我希望我的代码可以重用,我不想在同一个类中创建其他方法。“ - 这些对我来说似乎是矛盾的,他们对你不怎么样? –