Страницы

Поиск по вопросам

понедельник, 8 июля 2019 г.

Проверки в методах

У меня часто бывают случаи, когда нужно отправить объект как аргумент к методу, например:
User user = getUser(); insertData(user);
И запись этого объекта в базу:
void insertData(User user){ if (user != null){ // записываем в базу } else { // показываем сообщение } }
И это корректно работает.
Но у меня часто возникает вопрос:
А правильно ли делать проверку на null объекта в методе для записи, а не до того как вызвать этот метод?
То есть,
User user = getUser();
if (user != null){ insertData(user); } else { // показываем сообщение }

void insertData(User user){ // записываем в базу }
UPD:
Приведя пример записи в базу, я не категорически имел ввиду запись в базу, любой метод. Работа с файлами, просто методы которые решают задачи. Например тот же List example;
void exampleMethod(List examList){};
Вопрос: проверку делать до или в методе?


Ответ

Проверки на валидность до вызова метода обычно не используются, так как это приведет к многократному дублированию кода по валидации перед каждым вызовом метода (из разных мест программы) и вообще сделает код более "грязным". Уместнее проверять корректность данных непосредственно перед их применением (внутри метода).
Что касается именно методов сохранения и тп действий, то валидацию поступивших данных проводят в самом методе, а результат валидации возвращают из метода для вывода всяких сообщений или других действий по решению проблемы.
То есть, в вашем примере, метод проверяет, может ли он записать то, что получил в качестве аргумента и если не может, то не записывает, а из метода возвращает, например, false (или какую то константу, если состояний может быть несколько). Далее, код, который вызывал запись, получает ответ от метода и уже "думает", что с этим делать (например, если пришло false вывести сообщение о неудачной попытке, если true, то подтверждение успешного действия)
но это не универсальное решение для всех случаев и в других действиях такой подход не должен использоваться, то есть в большей части зависит от задачи, решаемой методом. Хорошим примером правильной практики в каждом случае будут анологичные вашим (по выполняемой работе) методы из API

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

Отправить комментарий