方法太多了?

时间:2015-10-17 05:42:03

标签: java structure

我刚写的这个课确实以我想要的方式工作。我的问题是我将其分解为太多方法吗?它几乎看起来过度,但在主要方法中看起来很可怕。但现在我有6个小方法(7个包括main)。我想我正在寻找一般反馈。非常感谢!

我是否应该简要说明本课程中发生的事情,以便人们更好地理解?

import java.util.Scanner;
import java.util.Arrays;

public class DuplicateElimination 
{
private static Scanner input = new Scanner(System.in);
private static int[] numberArray = new int[5];  
private static int initialInput = 0;

public static void main(String[] args) 
{
    Arrays.fill(numberArray, 0); //initialize array

    for (int x = 0; x < numberArray.length; x++) // perform 5x
    {
        initialInput =getNumber(); //get number from user

        boolean inRange = checkRange(); // check if number in range
        if (inRange == true)
        {   
            boolean uniqueNumber = uniqueNumber();//check if number is unique
            if (uniqueNumber == true)
            {
                numberArray[0]=initialInput; //add number to array
                printUniqueNumbers();

            }
            else 
                notUniqueNumber();
        }
        else
        {
            notInRange();
            x--; // do not count out-of-range numbers as one of the 5 numbers
        }
    }//end for  
}//end main

public static int getNumber()
{
    System.out.printf("Please enter a unique number between 10 and 100:  ");
    int initialInput = input.nextInt();
    return initialInput;
}//end getNumber

public static boolean checkRange()
{
    boolean inRange;
    if ((initialInput >=10) && (initialInput <= 100))
        inRange = true;
    else
        inRange = false;
        return inRange;
}//end checkRange

public static boolean uniqueNumber()
{
    boolean uniqueNumber;
    Arrays.sort(numberArray);
    int location = Arrays.binarySearch(numberArray, initialInput);
    if (location <= 0)
        uniqueNumber = true;
    else
        uniqueNumber = false;
    return uniqueNumber;

}//end uniqueNumber

public static void printUniqueNumbers()
{
    System.out.println("List of unique numbers entered:  ");
    for (int n = 0; n < numberArray.length; n++)
        if (numberArray[n] != 0)
            System.out.print(numberArray[n] + " ");
    System.out.println("\n");
}//end printUniqueNumbers

public static void notUniqueNumber()
{
    System.out.print("You already input " + initialInput + ".\n\n");
    printUniqueNumbers();       
}

public static void notInRange()
{
    System.out.println("Number is out of range.  Please try again.\n");
}

}//end class

2 个答案:

答案 0 :(得分:0)

我会将notUniqueNumber和notInRange操作带回main方法,因为它们只是执行简单的操作,因此最终会得到更少的代码。 人们可以争辩说,通过引入单独的方法,您可以轻松地修改它们而不会弄乱主要方法,这是事实。这似乎只是一个小项目,所以只要考虑你的目标和权重的利弊。

答案 1 :(得分:0)

  

Java方法是一组分组在一起的语句   执行操作。在这个示例中,每个方法都处理单个任务。所以到目前为止它是好的。我认为你担心评论可读性 < / p>

有两种评论

  • 实施意见: - 用于评论代码或有关特定实施的评论
  • 文档注释: - 用于描述代码的规范,从无实现的角度来看。
  

我认为您可以为课程DuplicateElimination提供一些文档评论。像这样。

/**
 * The DuplicateElimination class provides ...
 */
public class DuplicateElimination { ...

格式

编写Java类和接口时,应遵循以下格式规则:

  • 方法名称和括号之间没有空格“(”开始其参数列表。
  • 打开大括号“{”出现在与声明语句相同的行的末尾。
  • 关闭大括号“}”会自动缩放一行以与其对应的开始语句匹配,除非它是空语句,“}”应紧跟在“{”之后出现。
  • 方法由空行分隔

在这种情况下,

class DuplicateElimination {
    private static Scanner input = new Scanner(System.in);;
    private static int[] numberArray = new int[5];
    private static int initialInput = 0

    public static void main(String[] args) {
        Arrays.fill(numberArray, 0); //initialize array;
        ....

    }

    int emptyMethod() {}

    ...
}

如果你在Eclipse中

Ctrl + Shift + F即可。

可读性

以下是专业Java开发人员在编写代码时遵循的一些编程或编码最佳实践。它使代码具有超级可读性。

  1. 避免无意义的名称

    毫无意义的名字,例如变量名如abc,temp,data等不会泄露意图,只会降低可读性。

  2. 提供有意义的名称

    这是第一次编码最佳实践的对应物。而不是无意义的名称,提供有意义的名称,揭示程序员的意图

  3. 如果明确表达意图,请选择较长的名称。

    我喜欢在我的方法中使用短名称,但只有在它完整并且清楚地显示程序员的意图时才会使用短名称。短程易于读写,但不要忘记遵循Java bean命名约定

  4. 了解详情:http://javarevisited.blogspot.com/2014/10/10-java-best-practices-to-name-variables-methods-classes-packages.html#ixzz3onnVpS2s