Сегодня я решил рассказать о нескольких повседневных приемах, которые я часто применяю в повседневном рабочем процесс. Возможно о некоторых фишках Вы не знали и они будут Вам полезны…
Первый и, возможно, самые полезный хак — приучите себя писать код в одном стиле. Другими словами пишите одинаково — делайте одинаковые отступы, ставьте фигурные скобки в одних и тех же местах (например всегда в той де строке где цикл и условие), называйте переменные в одном стиле (например $camelStyle) и т.п. Это позволит Вам гораздо лучше ориентироваться в своем коде. И да… это распространяется на любой язык программирования.
Второй хак заключается в том, что бы Вы собирали часто используемые функции в одном месте. Пишите свои мини (а может и не мини) библиотеки. Это экономит огромное количество времени — все что Вам нужно всегда будет под рукой. Да, это тоже распространяется на любой язык программирования 🙂
Теперь, пожалуй более детально перейдем к PHP.
3) Создавайте переменные одного типа, с одним и тем же начальным значением в одну строку.
$a = $b = $c = 0; /* Вместо $a = 0; $b = 0; $c = 0; */
4) Используйте краткую запись условного оператора if.
$a = $b > 10 ? 1 : 0; /* Вместо if($b > 0) { $a = 1; } else { $a = 0; } */
5) Используйте inline (анонимные) функции, если они нужны всего один раз.
$a = array(3, 2, 5, 6, 1); usort($a, function ($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; }); /* Вместо function cmp($a, $b) { if ($a == $b) { return 0; } return ($a < $b) ? -1 : 1; } usort($a, "cmp"); */
6) Пользуйтесь функцией print_r с возвратом значения в виде строки а не выводом на экран. Это очень удобно использовать для логирования запросов.
file_put_contents('file.txt', print_r($_REQUEST, true)); /* Вместо $str = ''; foreach($_REQUEST as $k => $v) { $str .= $k.'='.$v."\n"; } file_put_contents('file.txt', $str); */
7) Всегда проверяйте данные на пустоту/наличие. Это позволит избежать Notice которые добавляют кучу мусора в логи.
$_GET['data'] = empty($_GET['data']) ? '' : $_GET['data'];
8) Используя цикл for, создавайте переменные цикла и итерационные действия внутри объявления цикла.
for($i = 0, $j = 100; $i != $j; $i++, $j--) { echo $i.' '.$j; } /* Вместо $j = 100; for($i = 0; $i != $j; $i++) { echo $i.' '.$j; $j--; } */
9) Вычисляйте количество итераций цикла заранее, если возможно, применяйте хак #8.
$a = array(1, 2, 3, 4, 5); for($i = 0, $c = count($a); $i < $c; $i++) { echo $a[$i]; } /* Вместо for($i = 0; $i < count($a); $i++) { echo $a[$i]; } */
10) Используйте предопределенные константы __DIR__, PHP_EOL, __FILE__, __LINE__, DIRECTORY_SEPARATOR и другие. Они помогут вам избежать огромной головной боли...
11) Если вопрос не принципиален, используйте глобальную переменную $_REQUEST, вместо отдельных $_GET и $_POST.
12) Создавайте переменные внутри условий.
if($db = mysqli_connect()) { $db->close(); } /* Вместо $db = mysqli_connect(); if($db) { $db->close(); } */
13) Используйте статические классы для хранения настроек одной группы, вместо создания множества переменных.
class DBsettings { public static $server = 'localhost'; public static $user = 'user'; public static $password = 'password'; public static $base = 'base'; } /* Вместо $server = 'localhost'; $user = 'user'; $password = 'password'; $base = 'base'; */
14) Не забывайте про функцию implode, которая является обратной функцией explode.
15) Пишите условия читабельно. Дробите логическое выражение на несколько строк, стараясь вынести в начало уже подсчитанные значения, или значения которые требует меньших вычислительных затрат.
if($someBool && ($someBool2 || (!$someBoll2 && $someInt > 0)) && !hadrFunction() && !veryHadrFunction()) { //Do some code... }