我最近一直在编写如下代码。
我不喜欢else块中的重复代码。
我有什么明显的遗漏吗?当我看到无限循环的可能性时,我思索着'goto'但放弃了它。
我知道显而易见的事情是创建一个单独的功能。我犹豫的原因是因为,就像我说的那样,我经常遇到这种情况,所以这是很多功能。对于我得到的东西来说,似乎太复杂了(即没有重复的代码)。
Logger.Log("Finding parent.",
System.Diagnostics.TraceEventType.Start);
query = string.Format(
"Select Id, a " +
"From Parent__c " +
"Where a ='{1}' limit 1", childId);
queryResult = DoSOQLQuery(queryResult, query);
string parentId;
if (queryResult != null && queryResult.size > 0)
{
parentId = ((Parent__c)queryResult.records[0]).Id;
Logger.Log(string.Format("Parent__c.Id={0}",
parentId),
System.Diagnostics.TraceEventType.Verbose);
}
else
{
Logger.Log("Parent not found.",
System.Diagnostics.TraceEventType.Error);
Logger.Log("Creating parent.",
System.Diagnostics.TraceEventType.Start);
string apexToExecute = string.Format(
"Utility.CreateParent('{0}');",
childId);
this.webServices.execute(apexToExecute);
queryResult = DoSOQLQuery(queryResult, query);
if (queryResult != null && queryResult.size > 0)
{
parentId = ((Parent__c)queryResult.records[0]).Id;
Logger.Log(string.Format("Parent__c.Id={0}",
parentId),
System.Diagnostics.TraceEventType.Verbose);
}
}
Logger.Log("Done finding parent",
System.Diagnostics.TraceEventType.Stop);
答案 0 :(得分:3)
因此,如果我将您的代码概括为
SEARCH
IF (FOUND) THEN
RETRIEVE
ELSE
CREATE
RETRIEVE
你能不能像
那样做SEARCH
IF (NOT FOUND) THEN
CREATE
RETRIEVE