2016-11-21 73 views
0
while (head <= tail) { 
     if (Choice == possibleNumbers[(head + tail)/2]) { 
      foundNumber = true; 
      break; 
     } 
     else if (Choice < possibleNumbers[(head + tail)/2]) { 
      tail = (head + tail)/2 - 1; 
     } 
     else 
      head = (head + tail)/2 + 1; 
    } 
    return foundNumber; 
} 

这是我在课堂上做过的一个数字搜索实验室的一部分。我很想在Java中缩短这个while循环。有关我应该如何做的任何提示?

+7

我投票关闭这一问题作为题外话,因为工作的代码审查请求应该去codereview.stackexchange.com – GhostCat

+0

[Java命名约定(http://stackoverflow.com/documentation/java/2697/ oracle-official-code-standard/9031/naming-conventions#t = 201611210634432178081)表示'Choice'应该被命名为'choice'。 – Andreas

+0

这个问题不是真正的格式化,而是违规。我应该清理它并应用清洁代码。我在条件内部有一个复杂的计算,这违反了Clean Code。我如何使它不那么复杂? –

回答

2

如果您担心代码的长度,我建议您在简洁的情况下保持清晰。对它进行编码沟通,更重要的是你的代码可读性和可扩展性比它的短。

如果这是产品代码,我会说使用图书馆的方法 - 我认为这相当于Arrays.binarySearch,但看起来像你这样做的练习。

我建议一个代码样式更改 - break可以使循环逻辑难以遵循。如果您将条件更改为while (head <= tail && !foundNumber),那么您可以将其删除。

+0

第一款是黄金。 – MordechayS