Стандарты кодирования и длина линии
Каждый стандарт кодирования, который я когда-либо видел, имеет рекомендуемое или абсолютное ограничение на количество символов в строке. Существуют различные способы работы в рамках этого ограничения, но я не видел каких-либо конкретных указаний в этом отношении.
Очевидно, если это возможно, не пишите слишком длинные строки.
Но что, если это не практично? Как обрабатывать длинные строки?
Вот пара примеров
if ($Stmt = $Mysqli->prepare("SELECT color, pattern, size,
manufacturer, mfgSku, storeLocation,
aisle, status
FROM tblItems WHERE ourSku = ?")) {
или же
$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough',
'chocolate chip', 'mint chocolate chip', 'rocky road',
'peach', 'fudge brownie', 'coffee', 'mocha chip');
или же
$Stmt->bind_result( $this->_firstName,
$this->_lastName,
$this->_BillToAddress->address1,
$this->_BillToAddress->address2,
$this->_BillToAddress->city,
$this->_BillToAddress->state,
$this->_BillToAddress->zip,
$this->_BillToAddress->country,
$this->_email,
$this->_status,
$this->_primaryPhone,
$this->_mobilePhone );
В каждом из этих примеров отступ длинного кода различен. Есть ли лучший или более "стандартный" способ сделать это? Должны ли дополнительные строки всегда иметь одинаковый отступ Или это нормально?
14 ответов
Есть шаблон, который вы можете видеть в каждом примере - они имеют отступ к первому параметру функции. Это хороший стандарт, которому нужно следовать, поскольку он переносит данные из горизонтального в вертикальное положение, а столбцы позволяют легко читать.
Для других проблем с длиной строки, таких как длительные вычисления, предпочтительным методом является его разбивка. Вычисление юлианской даты или пасхи выполняется в несколько шагов вместо одного длинного вычисления.
Мое личное предпочтение заключается в следующем;
$ Stmt-> bind_result ($ Это -> _ ПгвЬЫате, $ Это -> _ ФАМИЛИЯ, $ Это -> _ BillToAddress-> Адрес1, $ Это ->_BillToAddress->address2, $ Это -> _ BillToAddress-> город, $ Это -> _> BillToAddress- состояние, $ Это -> _> BillToAddress- почтовый индекс, $ Это -> _ BillToAddress-> страна, $ Это -> _ электронная почта, $ Это -> _ статус, $ Это ->_primaryPhone, $ Это -> _ MobilePhone);
Таким образом, закрывающая скобка и точка с запятой находятся в том же отступе, что и открывающий вызов. Не все языки поддерживают наличие параметров в другой строке вызова метода, хотя...
Контекст диктует, какой вы выбираете. В конечном итоге вы пишете код, который будет читать человек. Если отступ блока кода по-другому облегчит чтение, сделайте это.
Был необычный стиль отступов, который я использовал, когда выполнял большую часть работы с SQL;
INSERT INTO someTable
(
id,
name,
age,
address1,
address2,
)
VALUES
(
2,
'Bob'
25,
'12 Fake Street',
'The Moon'
)
Я считаю, что читать длинные списки параметров намного проще, чем любой другой макет.
Дверь № 3. Если вы не можете сделать это в одной строке, делайте это в одной строке для каждого элемента, все остальное запутывает элементы после первого в строке и ужасно читать. Согласованный отступ тоже имеет значение.
Кстати, я думаю, что это старая шляпа того времени, когда большинство программистов должны иметь два монитора с высоким разрешением. Первый пример выглядит так, как будто это может быть одна строка.
Я не думаю, что нужно намеренно иметь длинные строки, но, рискуя оскорбить многих, я полагаю, что длина линии уже не так важна.
Vim и emacs прекрасно справляются с длинными строками, и они установлены практически на каждом Unix-сервере. В Windows вы почти всегда будете в текстовом редакторе с графическим интерфейсом. Я думаю, что ваш $Stmt->bind_result
стиль легче всего читать, но если вам нужно загрузить кучу в основном статической информации в одном выражении, у меня нет проблем с 1000-символьной строкой.
Если вы упаковываете более двух элементов, я предпочитаю новую строку для каждого элемента, как в третьем примере. Для инструментов автоматического управления версиями проще объединять правки других людей, если в строке есть только один элемент.
Следуйте стандарту, используемому окружающим кодом. Не создавайте свой собственный "стандарт", независимо от того, насколько "лучше".
В прозе было показано, что строки длиннее 80 или около того труднее читать. (См. Стр. 13 документации класса LaTeX Memoir.) Code Complete (раздел 18.5, стр. 425 моего издания) также ссылается на ограничение в 80 символов с этим условием:
При использовании больших экранов, узких гарнитур, лазерных принтеров и альбомного режима аргументы в пользу ограничения в 80 символов не так убедительны, как раньше. Одна строка длиной 90 символов обычно более удобочитаема, чем строка, разбитая на две части, чтобы не переполнить столбец. С современными технологиями, вероятно, иногда можно превышать 80 столбцов.
Я бы выделил SQL в вашем первом примере отдельно от остальной части кода:
if ($Stmt = $Mysqli->prepare(
"SELECT color, pattern, size,
manufacturer, mfgSku, storeLocation,
aisle, status
FROM tblItems
WHERE ourSku = ?")) {
Второй пример может быть лучше, если он был загружен в файл конфигурации или таблицу.
Третий - это хорошо, но вы можете немного затянуть его:
$Stmt->bind_result(
$this->_firstName,
$this->_lastName,
$this->_BillToAddress->address1,
$this->_BillToAddress->address2,
$this->_BillToAddress->city,
$this->_BillToAddress->state,
$this->_BillToAddress->zip,
$this->_BillToAddress->country,
$this->_email,
$this->_status,
$this->_primaryPhone,
$this->_mobilePhone
);
Это довольно субъективно, очень похоже на положение скобок и других стилей кодирования. Главное не столько в том, какой стиль вы выберете, сколько в том, что вы выбираете стиль, и в том, что вы придерживаетесь его на протяжении всего проекта.
Лично для меня, исходя из фона Python, я использую длину строки 79 и
$flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough',
'chocolate chip', 'mint chocolate chip', 'rocky road',
'peach', 'fudge brownie', 'coffee', 'mocha chip');
стиль.
Но, как я сказал, на мой взгляд, важнее иметь стиль, а не беспокоиться о том, какой.
Некоторая полезная информация здесь http://framework.zend.com/manual/en/coding-standard.coding-style.html
Я не знаю ни одного стандарта, как было бы сложно сказать. Для тех из нас, кто на больших мониторах, мы можем просматривать больше горизонтального кода, чем другие на меньших мониторах. Обычно я стараюсь создавать длинные строки последовательно через.= (PHP), когда это необходимо, и, как показал ваш код, я произвольно разбиваю длинные массивы на новые строки в зависимости от количества символов в этой конкретной строке.
Лучшая практика обычно вытекает из целей, лежащих в основе самого ограничения длины линии:
- Повышение совместимости (между программистами, редактированием программного обеспечения и т. Д.)
- Чтобы улучшить читаемость и понимание
- Чтобы увеличить удовольствие и скорость развития
- Увеличить доходы и прибыль
Таким образом, ваш выбор, такой как выравнивание всех параметров stmt, будет хорошим, если он будет способствовать как вашему пониманию будущего, так и другим членам вашей команды.
Надеюсь, это поможет;) -М
Я не против вариант 3 слишком много (1 пункт в строке). Кроме того, лично я всегда использую перенос слов, поэтому наличие кода в одной строке меня совсем не беспокоит. Однако, во втором примере с включенным переносом слов это может показаться беспорядком для программистов, которые используют перенос слов. Возможно, я из небольшой группы, которая не против длинных очередей.