Советы по использованию условий в PHP.
Всем привет! В этой статье мы рассмотрим некоторые советы по использованию if-else условий в PHP.
Думаю, никто не будет спорить с тем, что условия используются при разработке очень часто. Казалось бы, все просто. Но зачастую из-за этой простоты разработчики загромождают свой код и его становится трудно читать. Сегодня мы рассмотрим некоторые советы, которые помогут вам писать код правильно и чисто.
Первый пример
Давайте сразу перейдем к первому примеру.
class User {
public function fullname() {
if($this->first_name && $this->last_name) {
return $this->first_name.' '.$this->last_name;
}
return null;
}
}
Здесь у нас есть класс User, где мы написали метод, который проверяет, существуют ли имя и фамилия, и, если да, то возвращает их. Если же условие не выполняется, то возвращается null.
Давайте перепишем этот код следующим образом:
class User {
public function fullname() {
if(!$this->first_name || !$this->last_name) {
return null;
}
// 2-е условие
// 3-е условие
// 4-е условие
return $this->first_name.' '.$this->last_name;
}
}
Теперь мы проверяем имя и фамилию на отсутствие значений и возвращаем null, если условие выполняется. Если же условия не выполняются, возвращаем наше значение имени и фамилии.
Почему этот подход лучше? Представьте, что у нас не одна проверка, а несколько. В первом случае, если проверка проходит, мы должны будем проверить вернувшееся значение на другое условие, потом на третьте и так далее. У нас будет большая вложенность, что явно ухудшит читаемость кода.
Во втором же случае мы возвращаем ожидаемый результат в конце, а перед этим проводим все нужные проверки и возвращаем null, пустую строку, исключение или что нам будет нужно. Такой код выглядит намного лучше, его удобнее читать и исправлять.
Второй пример
Давайте перейдем к более сложному примеру: рассмотрим конструкцию if-else.
if() {
if() {
if() {
}
}
} else {
}
Думаю, вы встречали такую конструкцию. Это самое обычное решение, которое использует большинство разработчиков, однако такой код достаточно трудно читать и исправлять. Чтобы вы поняли, почему, а также наглядно увидели, как можно написать лучше, давайте рассмотрим пример, где нам нужно загрузить файлы на сервер.
if(isset($_POST['file'])) {
if(in_array($file_extension, $allowed_file_extensions)) {
// загружаем файл
} else {
return; // ошибка
}
} else {
return; // ошибка
}
Здесь мы проверяем файл на существование, затем проверяем, существует ли расширение файла в массиве допустимых значений, и загружаем его. Если какая-либо проверка не прошла, то возвращаем ошибку.
Это всего лишь простой пример, в реальном проекте этих проверок будет очень много, соответственно, вы можете представить, что будет твориться в коде. Редактировать код, где куча вложенностей и ответвлений очень даже трудно. Как же его можно улучшить? Давайте посмотрим:
if(!isset($_POST['file'])) {
return; // ошибка
}
if(!in_array($file_extension, $allowed_file_extensions)) {
return; // ошибка
}
// загружаем файл
Здесь мы снова идем от обратного: мы проверяем файл на отсутствие и возвращаем ошибку, если условие выполняется. Потом также поступаем с расширением. Точно так же мы писали бы все другие необходимые нам проверки, а уже потом, если все прошло успешно, то загружаем файл. Такой код выглядит намного лучше и понятнее.
Заключение
Итак, сегодня мы рассмотрели два примера и пришли к выводу, что лучше всего возвращать ожидаемый результат в конце, а все необходимые проверки делать перед этим. Таким образом мы не будем загромождать код, а это благоприятно скажется на его поддержке и понимании.
А на этом у меня все. Спасибо за внимание!
-
- Михаил Русаков
Комментарии (2):
Как всегда очень информативно и очень педагогично поданный материал. Спасибо.
Ответить
Спасибо Вам за хороший отзыв!
Ответить
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.