gpt4 book ai didi

java - 在做小型单类程序时,我应该将所有内容设为静态还是在 main 中实例化自身的副本?

转载 作者:搜寻专家 更新时间:2023-10-31 08:13:03 25 4
gpt4 key购买 nike

当我在为类布置家庭作业时,如果程序较小以将问题限制在一个类里面(易于使用我们的脚本提交)通常是有益的。

对于这些一次性程序,将所有方法和实例变量声明为静态是否更有意义,还是在 main 方法中声明类本身的实例更有意义?

所以,例如:

A.

public class MergeSort
{
public static Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
int[] randData = getRandomData();
int[] sortedData = mergeSort(randData);
}

public static int[] mergeSort(int[] unsortedData)
{
// ...
}

public static int[] merge(int[] data, int a, int b, int c)
{
// ...
}
}

对比

B.

public class MergeSort  
{
public Scanner input = new Scanner(System.in);

public static void main(String[] args)
{
MergeSort ms = new MergeSort();
int[] randData = ms.getRandomData();
int[] sortedData = ms.mergeSort(randData);
}

public int[] mergeSort(int[] unsortedData)
{
// ...
}

public int[] merge(int[] data, int a, int b, int c)
{
// ...
}
}

最佳答案

就我个人而言,我会选择 B,这是一个养成的好习惯。将每个方法默认设为静态是一个养成的坏习惯。

它曾经是一个“取决于个人意见”的决定,但随着单元测试的兴起,静态方法往往弊大于利。您不能在接口(interface)上将方法指定为 static,这使得为您的类创建接口(interface)变得困难,这使得您的类难以模拟/ stub 以进行单元测试。

关于java - 在做小型单类程序时,我应该将所有内容设为静态还是在 main 中实例化自身的副本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1433708/

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