Оптимизация моего фрагмента кода JAVA: args[] инструкция ввода программы

#java #spring-boot #date #arguments

#java #весенняя загрузка #Дата #аргументы

Вопрос:

Итак, я пытаюсь понять, есть ли «лучший» способ оптимизировать то, как я пишу этот небольшой фрагмент кода. фрагмент кода.

Прямо сейчас мой фрагмент фрагмента выглядит так:

 private static LocalDate runDate = null;

public static void main(String[] args) throws Exception {

    // assuming we use 2 arguments (first is the testing environment we want, and
    // second is the date in MM-dd-yyyy format)
    if (args.length == 0) {
        throw new Exception("Not enough arguments in main.  Must provide at least the environment.");

    } else if (args.length == 2) {
        String[] dateArray = args[1].toString().split("-");
        runDate = LocalDate.of(Integer.parseInt(dateArray[2]), Integer.parseInt(dateArray[0]),
                Integer.parseInt(dateArray[1]));

    }

    if (runDate == null) {
        runDate = LocalDate.now();
    }
}
 

Оператор ввода для моих программных аргументов в конфигурации запуска — либо "TEST" "11-30-2020" или просто "TEST" .

Как вы можете видеть из кода, я проверяю, равна ли длина моих аргументов 0 или 2 (и технически 1, что я скоро объясню, почему). Если аргументов 0, выдайте ошибку, потому что вам, по крайней мере, нужна среда для работы. Если есть 1 аргумент, который означает ТОЛЬКО среду "TEST" (or PROD) , то это означает, что дата выполнения LocalDate.now() равна , которая принимает текущую дату в формате гггг-мм-дд.

Тем не менее, я также разрешил дату запуска для этой программы, где вы можете ввести дату запуска в формате мм-дд-гггг, и поскольку должен быть "TEST" аргумент, это проверяет оператор else if и делает дату запуска равной введенной дате аргумента в форматегггг-мм-дд.

Однако я не уверен, что этот код хорош на 100%, но тот факт, что он проверяет, является ли runDate = null, заставляет меня чувствовать себя немного странно. Каков был бы лучший способ сортировки этих условий?

Комментарии:

1. не делайте эту проверку, просто вместо того, чтобы говорить runDate = null; поместите runDate = LocalDate.now();

2. хм, разве это не перезаписало бы runDate = LocalDate.of(Integer.parseInt(dateArray[2]), Integer.parseInt(dateArray[0]), Integer.parseInt(dateArray[1])); если для аргументов введена дата? ИЛИ вы имели в виду if (runDate == LocalDate.now()) {runDate == LocalDate.now()} ? Это имело бы больше смысла, но просто из любопытства, был бы более чистый способ?

3. нет. ваша runDate = LocalDate.of … перезаписал бы runDate = LocalDate.now(), если есть значение для его перезаписи. Не меняйте местоположение присвоения runDate, только значение исходного присвоения

4. о, вы имеете в виду, я должен написать runDate = LocalDate.now() в самой первой строке, перед условными обозначениями, верно? Таким образом, если есть аргументы. длина 2, тогда ее можно перезаписать?

5. Глупо с моей стороны, я забыл, что у меня это было как статическая переменная сверху, я могу просто сделать это как исходное частное LocalDate runDate = LocalDate.now()