|
| |
|
|
Ответов: 0
|
25-02-12 07:01
|
|
|
| |
|
|
Ответов: 0
|
16-01-12 20:13
|
|
|
| |
|
|
Ответов: 1
|
09-01-12 11:23
|
|
|
   Web - программирование
| |
|
|
|
   Программирование под ОС
| |
|
|
|
   Web - технологии
| |
|
|
|
   Базы Данных
| |
|
|
|
|
Web - программирование / PHP /
| |
| | |
Возможно вас заинтересует
|
|
Хороший стиль кодинга (программирования) на PHP
Политика обработки неудачного исполнения.
Проверяйте каждое обращение к функции, не закончилась ли она ошибкой, кроме
конечно случаев, когда Вы уверены в том, что желаете проигнорировать все ошибки.
Включайте системный текст сообщения об ошибке каждый раз,
когда уведомляете о ней пользователя. Вольная интерпретация может
внести двусмысленность.
Политика использования {} скобок.
Из трех основных методов, применяемых в программировании только 2 из них вполне
приемлемы.
Размещение под ключевым словом и на одном уровне с ним:
if ($condition) while ($condition)
{ {
... ...
} }
Традиционная для UNIX практика размещения открывающей скобки на той же самой
строке, где и ключевое слово и использование закрывающей скобки с тем же
отступом, что и ключевое слово.
if ($condition) { while ($condition) {
... ...
} }
Мотивация.
Обе формы одинаково приемлемы, однако большинство людей, почему-то, предпочитают
первый вариант. Почему? Это тема уже для психологических измышлений.
Есть некоторое количество оснований почему люди предпочитают первый вариант.
Если Вы используете редактор типа vi который поддерживает соответствие скобок,
первый вариант намного более удобный. Почему? Скажем, у Вас есть большой блок
кодекса и Вы хотите знать, где блок заканчивается. Вы двигаетесь в первую
скобку, нажимаете горячую клавишу, и редактор находит соответствующую скобу.
Пример:
if ($very_long_condition && $second_very_long_condition)
{
...
}
else if (...)
{
...
}
Чтобы передвинуться от блока к блоку Вам просто нужно просто передвинуть курсор
вниз. Нет необходимости передвигаться в конец линии, чтобы проверить где
начинается скобка и потом переходить опять в начало.
Отступы, проблемы и табуляция.
Используйте отступ в 3 или 4 пробела для каждого уровня. Не используйте
табуляцию, используйте пробелы. Большинство редакторов может заменять табуляцию
на пробелы. Делайте отступов настолько много, насколько нужно, не переборщите.
Тут нет жестких правил, насчет максимального уровня глубины отсупов. Однако,
если у Вас более 4 или 5 уровней, то может быть имеет смысл подумать о том,
чтобы написать алгоритм иначе.
Мотивация.
Когда пользователи используют различные значения для табуляции, то может
получится так, что читать текст будет просто не возможно. Поэтому пробелы более
универсальны, чем табуляция. Никто не будет устраивать спор насчет количества
пробелов в отступе, но в большинстве случаев 3 или 4 весьма удобны. Мы не
ограниваем глубину вложений, но поверьте – более 5 уровне будет смотреться
совершенно не читабельно.
Пример.
function func()
{
if (something bad)
{
if (another thing bad)
{
while (more input)
{
}
}
}
}
Круглые скобки () с ключевыми словами и названиями функций.
Не размещайте скобки сразу за ключевым словом. Отделяйте пробелом. Размещайте
скобки сразу после названия функции.
Не используйте скобок в return функциях без наличия на то необходимости.
Мотивация.
Ключевые слова не функции. Используя это правило, Вы легко
разделите функции и ключевые слова.
Пример.
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 оператор, то часто хорошой идеей является всегда
использовать выделение кавычками блока. Комментарии обязательно Вам пригодятся.
Формат условий.
Всегда размещайте константу слева от знака равенства/неравенства. Hапример:
if ( 6 == $errorNum ) ...
Одной из причин является то, что если Вы оставите только один знак = (а это
очень распространенная ошибка), парсер остановится с сообщением об ошибке.
Второй причиной является то, что значение находится в левой части и его найти
будет там проще, чем в конце длинного выражения. Требуется совсем немного
времени для того, чтобы привыкнуть писать именно так, но в будущем Вы
неоднократно убедитесь, как это экономит время.
Использование switch.
Пропускаемые значения должны быть включены в список и снабжены комментариями.
Ветка default всегда должна присутствовать и отображать ошибку, если ее работа
не предполагалась по алгоритму, но все же до нее дошла очередь. Если Вы создаете
переменные, располагайте их внутри блока.
Пример.
switch (...)
{
case 1:
...
// пропускаем
case 2:
{
$v = get_week_number();
...
}
break;
default:
}
Использование continue, break и ?:
Continue и Break.
Continue и 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 в
одном цикле практически гарантировано приводит к путанице.
?:
Основная проблема заключается в том, что люди обычно стараются разместить между
? и : слишком много кода. Вот несколько простых правил, которых следуеt
придерживаться:
Размещайте условие в скобках, чтобы отделить от другого кода.
Если возможно, действия для проверки должны быть простыми.
Размещайте тогда и иначе операторы на разных строках в случае если нет
возможности разместить их так, чтобы они вошли на 1 строку.
Пример.
(условие) ? funct1() : func2();
или
(условие)
? длинный оператор
: другой длинный оператор;
|
Последние статьи: Web - программирование / PHP /
| |
| | |
|
Библиотека GTK+ прошла долгий путь развития и сейчас очень популярна. GNOME, одна из ведущих оконных сред, использует GTK+ почти исключительно, GIMP построен на GTK+, множество коммерческих разработчиков ПО, таких как Abobe, NVidia и VMware, решили использовать эту библиотеку в качестве графической основы для своих продуктов... подробнее
|
|
Кол. просмотров: общее - 2071 сегодня - 0
|
|
|
Slashdot.org – популярный новостной портал с посещаемостью 50 млн. человек в месяц. Авторы проекта добились такого успеха, предоставляя пользователям свежие и интересные новости из мира IT... подробнее
|
|
Кол. просмотров: общее - 2326 сегодня - 0
|
|
|
Здесь рассматривается вопрос, что бывает, если запустить некий скрипт почти одновременно (что происходит, например, при большой нагруженности сервера) несколько раз, т.е. запустить несколько копий одного и того же скрипта. И к чему это может привести... подробнее
|
|
Кол. просмотров: общее - 2139 сегодня - 2
|
|
|
...и снова о спаме. Кто о нем только не писал, и все писали, что это плохо и ай-яй-яй. Я не буду оригинальничать, и тоже скажу – это плохо. Это ай-яй-яй. Как бороться со спамерами со своей стороны... подробнее
|
|
Кол. просмотров: общее - 1969 сегодня - 0
|
|
|
Эта статья даст вам общее представление о том, как создавать, обрабатывать и выводить рисунки в PHP4 для Windows... подробнее
|
|
Кол. просмотров: общее - 2342 сегодня - 0
|
|
|
|