gpt4 book ai didi

java - 更改函数参数与分配新变量

转载 作者:行者123 更新时间:2023-12-01 13:50:03 25 4
gpt4 key购买 nike

在下面的代码片段中,我引入了另一个名为 k 的变量,以 starIndex 提供的值开始。然而,这是不必要的,因为我们都知道,它是按值传递。但我可以看到这两种方法的优点和缺点。

  1. 更改函数参数值:如果我修改starIndex的值而不是使用k,则starIndex不再是星号索引,本质上就失去了意义。如果函数太长,这会令人困惑。

  2. 引入k:管理新变量的分配开销/头痛。

为了使问题变得通用,首选什么?一个新变量?或者重用函数参数并修改它们的值?

   private static int getNonStarIndex(String regex, int starIndex) {  
for (int k = starIndex + 1; k < regex.length(); k++) {
if (regex.charAt(k) != '*') {
return k;
}
}
return regex.length();
}

最佳答案

首选的解决方案是相信编译器能够使底层代码高效,并关注 Java 代码的可读性。保留您的“k”并将 starIndex 参数设为最终参数,以便在签名中清楚地表明您正在做什么。

编辑:这两种选择(保留 k 并使 starIndex 最终)的论点是最小意外原则。

假设您确实删除了 k 并重新使用了 starIndex 参数。这使得下一个正在阅读代码的人想知道您是否意识到此更改纯粹是本地的,或者您实际上是否期望这会更改调用点处 starIndex 的值。

通过将 starIndex 参数设置为“最终”,您可以非常清楚地表明您正在做什么,并且您打算以这种方式执行此操作。

关于java - 更改函数参数与分配新变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20037319/

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