Пул реквест с код ревью#3
Conversation
потом, может быть объясните как более красиво в гитхабе оставлять комментарии к коду
|
По использованию Scanner сразу замечание: он работает с потом ввода-вывода и его нужно закрывать. Ты вызываешь метод close() в коде, но этот метод не будет вызван в случае, если произойдет исключение. Нужно писать close в try-finally блоке, но более удобный метод try-wiyh-resources. (Думаю, не проблема найти примеры как это сделать в интернете) |
|
По структуре метода main замечание, что он делает сразу несколько видов работ:
Предлагаю улучшить структуру следующим образом:
|
|
Ко всем функциям замечание: они должны возвращать какие-то данные, нужно подобрать подходящие возвращаемые типы. Функция должна делать ровно то, что у нее в названии, например, checkYear, как мне бы казалось, проверяет год. Из названия не понятно какая именно проверка происходит, также она ничего не возвращает и не понятно как узнать результат проверки. Очень плохо, что она печатает в консоль, обычно функции ничего не печатают в консоль, а используют логгеры, но поскольку это учебное задание, печать в консоль допустима. Нужно вернуть из данной функции результат проверки, потом какая-то другая функция должна его принять и передать на печать третьей функции. Также стоит описать функцию при помощи javadoc. Данное замечание относится ко всем функциям и их все нужно переделать по аналогии. |
|
К функции checkOS дополнительно замечание к количеству if конструкций. Необходимо снизить их количество до одного if-else. Прочие проверки нужно вынести в отдельные методы. В данном случае я бы советовал формировать ответ постепенно: узнать андроид или айос, узнать легкая нужна версия или полная, далее сделать одно сообщение с ответом. |
1 similar comment
|
К функции checkOS дополнительно замечание к количеству if конструкций. Необходимо снизить их количество до одного if-else. Прочие проверки нужно вынести в отдельные методы. В данном случае я бы советовал формировать ответ постепенно: узнать андроид или айос, узнать легкая нужна версия или полная, далее сделать одно сообщение с ответом. |
|
Рекомендую в функции calcDeliveryTime вынести проверку корректности ввода данных в начало, в случае ошибки кидать исключение. |
|
reverseArrayOrder как мне кажется не может работать корректно, потому что перезатирает данные в массиве. Также крайне не рекомендую модифицировать объект, принимаемый функцией. Лучше создать новый массив и сделать все манипулиции над ним |
|
getAverage в java не принято создавать переменную, когда можно просто вернуть значение заменить на |
|
Во многих функциях предусмотрены сообщения об ошибках, это хорошо, но нужно указывать в тексте ошибки какое именно значение получено на вход функции и что с ним не так. Плохое сообщение об ошибке: Incorrect input! также в случае ошибки хорошо использовать эксепшены: они запишут стак трейс ошибки и позволят понять в каком классе, в каком методе и в какой строке произошла ошибка и какой метод эту функцию с некорректными данными вызвал. |
|
Советую все строки и настаиваю все числа вынести в статические переменные, лучше - в enum, если уже умеете. Переменные должны называться так, чтобы было понятно что за базнес значение они содержат, например есть проверка можно создать константу public static final int IOS_CODE = 1 можно оформить в enum |
Для начала, по структуре кода есть некоторое замечание к порядку методов. Обычно принять вначале писать публичные методы, а после приватные. То есть метод main должен быть первым, затем остальные методы в том порядке, в котором они вызываются в main