Сегодня я решил рассказать о нескольких повседневных приемах, которые я часто применяю в повседневном рабочем процесс. Возможно о некоторых фишках Вы не знали и они будут Вам полезны…
Первый и, возможно, самые полезный хак — приучите себя писать код в одном стиле. Другими словами пишите одинаково — делайте одинаковые отступы, ставьте фигурные скобки в одних и тех же местах (например всегда в той де строке где цикл и условие), называйте переменные в одном стиле (например $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...
}