Java 是否认为修改参数是一种不好的做法

Java 是否认为修改参数是一种不好的做法,java,Java,java中的二进制搜索代码使用以下代码: public static int binarySearch(int[] a, int fromIndex, int toIndex, int key) { rangeCheck(a.length, fromIndex, toIndex); return binarySearch0(a, fromIndex, toIndex, key); }

java中的二进制搜索代码使用以下代码:

public static int binarySearch(int[] a, int fromIndex, int toIndex,
                                   int key) {
        rangeCheck(a.length, fromIndex, toIndex);
        return binarySearch0(a, fromIndex, toIndex, key);
    }

    // Like public version, but without range checks.
    private static int binarySearch0(int[] a, int fromIndex, int toIndex,
                                     int key) {
        int low = fromIndex;
        int high = toIndex - 1;

        while (low <= high) {
            int mid = (low + high) >>> 1;
            int midVal = a[mid];

            if (midVal < key)
                low = mid + 1;
            else if (midVal > key)
                high = mid - 1;
            else
                return mid; // key found
        }
        return -(low + 1);  // key not found.
    }

基本上,我试图了解这是出于某种目的,还是出于某种优势,还是遵循了一些良好的实践。

由于所有参数都是原语,因此无论它们是否被修改为任何调用方法都无关紧要。

因为所有参数都是原语,那么它们是否被修改到任何调用方法都无关紧要。

因为所有参数都是原语,那么它们是否被修改到任何调用方法也无关紧要。

因为所有参数都是原语,然后,不管它们是否被修改为任何调用方法。

有些人会认为这是一种糟糕的风格,但它不是必需的。如果您希望明确不修改这些字段,请将这些字段设置为最终字段


对于长方法,我认为这是一个好主意,因为它使事情变得更清楚(如果稍后再使用它,您可能会忘记某个方法中的某些内容已被进一步修改)。简而言之,我们很清楚到底发生了什么。

有些人会认为这是一种糟糕的风格,但这是不必要的。如果您希望明确不修改这些字段,请将这些字段设置为最终字段


对于长方法,我认为这是一个好主意,因为它使事情变得更清楚(如果稍后再使用它,您可能会忘记某个方法中的某些内容已被进一步修改)。简而言之,我们很清楚到底发生了什么。

有些人会认为这是一种糟糕的风格,但这是不必要的。如果您希望明确不修改这些字段,请将这些字段设置为最终字段


对于长方法,我认为这是一个好主意,因为它使事情变得更清楚(如果稍后再使用它,您可能会忘记某个方法中的某些内容已被进一步修改)。简而言之,我们很清楚到底发生了什么。

有些人会认为这是一种糟糕的风格,但这是不必要的。如果您希望明确不修改这些字段,请将这些字段设置为最终字段


对于长方法,我认为这是一个好主意,因为它使事情变得更清楚(如果稍后再使用它,您可能会忘记某个方法中的某些内容已被进一步修改)。对于简短的方法,我们很清楚到底发生了什么。

使用递归进行搜索,这样就不需要修改低参数和高参数

使用递归进行搜索,这样就不需要修改低参数和高参数

使用递归进行搜索,这样就不需要修改低参数和高参数

使用递归进行搜索,这样就不需要修改低参数和高参数

保持参数不被修改是一种好做法,最好将其声明为最终参数。
这也提高了方法的可读性。

保持参数不变是一个很好的做法,最好将其声明为最终参数。
这也提高了方法的可读性。

保持参数不变是一个很好的做法,最好将其声明为最终参数。
这也提高了方法的可读性。

保持参数不变是一个很好的做法,最好将其声明为最终参数。

这也提高了方法的可读性。

根据我的经验,特别是在参数是原语的情况下,复制参数和编写类似的方法非常有用,以便于调试-许多调试器提供了“重新启动”运行特定方法的功能,如果参数已被修改,然后它将使用修改后的参数而不是原始参数。

根据我的经验,特别是在参数是原语的情况下,复制参数和编写类似的方法非常有用,以便于调试-许多调试器提供了“重新启动”运行特定方法的功能,如果参数已经被修改,那么它将使用修改后的参数而不是原始参数。

根据我的经验,尤其是在参数是原语的情况下,复制参数和编写这样的方法非常有用,以便于调试-许多调试器提供了“重新启动”运行特定方法的功能,如果参数已被修改,那么它将使用修改后的参数而不是原始参数。

根据我的经验,特别是在参数是原语的情况下,复制参数和编写类似的方法非常有用,以便于调试-许多调试器提供“重新启动”运行特定方法的功能,如果参数已修改,然后它将使用修改后的参数而不是原始参数。

为什么需要从索引复制到低,从索引复制到高?
您不应该告诉我们吗?如果你不这样做会有什么不同吗?你为什么认为首先应该这样做?这确实是一件基于意见的事情,但在一般情况下,假设方法不会修改参数,除非文档中明确说明会修改(即:向映射参数添加值)是的!,这都是关于个人的opinion@JeroenVannevel它是来自JDK的
binarySearch
。他在问这件事。
为什么需要从索引复制到低位,从索引复制到高位?
你不应该告诉我们吗?如果你不这样做会有什么不同吗?你为什么认为首先应该这样做?这确实是一件基于意见的事情,但在一般情况下,假设方法不会修改参数,除非文档中明确说明会修改(即:向映射参数添加值)是的!,这都是关于个人的opinion@JeroenVannevel它是来自JDK的
binarySearch
。他在问这件事。
为什么需要从索引复制到低位
binarySearch0(a, fromIndex, toIndex - 1, key);
    }

    // Like public version, but without range checks.
    private static int binarySearch0(int[] a, int low, int high,


        while (low <= high) {