我已經搜索谷歌和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以啓用測試。 –
「我希望我的代碼可以重用,我不想在同一個類中創建其他方法。「 - 這些對我來說似乎是矛盾的,他們對你不怎麼樣? –