Хороший стиль кодинга (программирования) на php. Часть 3Политика обработки неудачного исполнения
Политика использования {}скобокИз трех основных методов, применяемых в программировании только 2 из них вполне приемлемы. Размещение под ключевым словом и на одном уровне с ним: if ($condition) while ($condition) { { ... ... } } Традиционная для UNIX практика размещения открывающей скобки на той же самой строке, где и ключевое слово и использование закрывающей скобки с тем же отступом, что и ключевое слово if ($condition) { while ($condition) { ... ... } } Мотивация
if ($very_long_condition && $second_very_long_condition) { ... } else if (...) { ... } Чтобы передвинуться от блока к блоку Вам просто нужно просто передвинуть курсор вниз. Нет необходимости передвигаться в конец линии, чтобы проверить где начинается скобка и потом переходить опять в начало. Отступы, проблемы и табуляция
Мотивация
Примерfunction func() { if (something bad) { if (another thing bad) { while (more input) { } } } } Круглые скобки ()сключевыми словами и названиями функций
Мотивация
Примерif (condition) { } while (condition) { } strcmp($s, $s1); return 1;
Не производите реальной работы в конструкторе объектов.Не производите реальных действий в конструкторе объектов. Внутри конструктора только инициализируются переменные и выполняются действия, которые не могут привести к ошибке. Создайте Open() метод для объекта будет завершать конструктор.Open() должен вызываться после того как объект будет инициализирован.. Мотивация
Примерclass Device { function Device() { /* инициализация и другие функции */ } function Open() { return FAIL; } }; $dev = new Device; if (FAIL == $dev->Open()) exit(1); Позвольте функция запускаться повторноФункции не должны содержать в себе статических переменных, которые будут запрещать функции повторный запуск. ФорматированиеIf иElseРасположениеРазличные стили использования скобок выглядят немного по разному. Общий вид примерно такой:: if (условие) // Комментарий { } else if (условие) // Комментарий { } else // Комментарий { } Если Вы используете else if оператор, то часто хорошой идеей является всегда использовать выделение кавычками блока. Комментарии обязательно Вам пригодятся. Формат условийВсегда размещайте константу слева от знака равенства/неравенства. Например: if ( 6 == $errorNum ) ... Одной из причин является то, что если Вы оставите только один знак = (а это очень распространенная ошибка), парсер остановится с сообщением об ошибке. Второй причиной является то, что значение находится в левой части и его найти будет там проще, чем в конце длинного выражения. Требуется совсем немного времени для того, чтобы привыкнуть писать именно так, но в будущем Вы неоднократно убедитесь, как это экономит время. Использование switch
Примерswitch (...) { case 1: ... // пропускаем case 2: { $v = get_week_number(); ... } break; default: } Использование continue,break и ?:Continue и BreakContinue и break подобны замаскированному оператору goto, от которого все по чуть-чуть отказались. Continue и break подобны goto и должны использоваться минимально, так как могут привести к неожиданным последствиям. 2 основные проблемы с continue:
Рассмотрим следующий пример, где рассматриваются обе проблемы : while (TRUE) { ... // A lot of code ... if (/* условие */) { continue; } ... // A lot of code ... if ( $i++ > STOP_VALUE) break; } Из примера выше само по себе появляется правило: смешивая continue и break в одном цикле практически гарантировано приводит к путанице ?:Основная проблема заключается в том, что люди обычно стараются разместить между ? и :слишком много кода. Вот несколько простых правил, которых следует придерживаться:
Пример(условие) ? funct1() : func2(); или (условие) ? длинный оператор : другой длинный оператор; |