gpt4 book ai didi

java - 温度。变量或方法调用?以及文字变量或等效变量?

转载 作者:行者123 更新时间:2023-12-02 00:38:47 30 4
gpt4 key购买 nike

 private static final Group[] toGroups (String string)
{
int partialGroupSize = string.length() % GROUP_SIZE;
boolean hasPartialGroup = partialGroupSize != 0;
int nGroupOffset = hasPartialGroup ? 1 : 0;
int nGroup = string.length() / GROUP_SIZE + nGroupOffset;
Group[] groups = new Group[nGroup];
for (int i = 0; i < nGroup; i++) {
boolean isFirstGroup = i == 0;
int beginIndex = isFirstGroup ? i :
GROUP_SIZE * (i - nGroupOffset) + partialGroupSize;
int endIndex = isFirstGroup && hasPartialGroup ?
beginIndex + partialGroupSize :
beginIndex + GROUP_SIZE;
groups[i] = new Group(Integer.parseInt(string.substring(beginIndex,
endIndex)));
}
return groups;
}

我的第一个问题是我发现了不同的讨论,但我仍然不知道我应该做什么。
方法toGroups在程序中只调用一次,因此 .length()仅在 string 上被调用两次的toGroups在节目中。那么就性能和可读性而言,我应该替换string.length()吗?与 length哪里int length = string.length();
身份证号:

int     length           = string.length();
int partialGroupSize = length % GROUP_SIZE;
boolean hasPartialGroup = partialGroupSize != 0;
int nGroupOffset = hasPartialGroup ? 1 : 0;
int nGroup = length / GROUP_SIZE + nGroupOffset;

我的第二个问题是:在 for 范围内循环,假设当 beginIndex 的谓词条件赋值,isFirstGroup ,是true , i必须是0 ;我应该替换 beginIndex 的结果吗?有条件的文字 0
身份证号:

int beginIndex = isFirstGroup ? 0 :
GROUP_SIZE * (i - nGroupOffset) + partialGroupSize;

我认为是因为 beginIndex 的结果总是0 ,使用等效的 i迭代器在结果的恒定性/可变性中产生了歧义。

最佳答案

So with regards to performance and readability ...

对于一个编写良好的程序来说,可读性是比性能更重要的属性。事实上,可读性仅次于正确性(IMO)。

性能通常来说是一个小问题。而在重要的情况下,大规模的算法效率比“微观”问题更关键,比如是否调用String.length()这样的快速方法。一次或两次。

(事实上,JIT 编译器很有可能发现它可以安全地将 String.length() 调用“提升”到循环之外。即使不能,下一代 JIT 编译器也可能会能够进行此优化。)

一般来说,最好将这样的微优化留给 JIT 编译器,而将精力集中在更重要的事情上。仅当您有明确的证据(例如通过分析)表明代码中存在重大瓶颈时,才进行微观优化。

Also, is there anything I should do that I didn't do or is there anything I did that I shouldn't do, stylistically or otherwise?

是的。

不要像这样排列所有声明/赋值语句:

  • 这是浪费时间。
  • 它不会使您的代码更具可读性。 (如果我正在阅读你的代码,我并不关心它的艺术品质......)
  • 它违反了所有主流编码标准。

关于java - 温度。变量或方法调用?以及文字变量或等效变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6977462/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com