#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()