Стандарты кодирования и длина линии

Каждый стандарт кодирования, который я когда-либо видел, имеет рекомендуемое или абсолютное ограничение на количество символов в строке. Существуют различные способы работы в рамках этого ограничения, но я не видел никаких конкретных указаний в этом отношении.

Очевидно, если это возможно, не пишите слишком длинные строки.

Но что, если это не практично? Как следует обрабатывать длинные строки?

Вот несколько примеров

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 ); 

В каждом из этих примеров отступы длинного кода различны. Есть ли лучший или более «стандартный» способ сделать это? Если дополнительные строки всегда имеют отступы одинаково. Или это нормально?

В каждом примере есть образец, который вы можете увидеть в первом параграфе функции. Это хороший стандарт, поскольку он переносит данные с горизонтальной на вертикальную, а столбцы позволяют легко читать.

Для других проблем с длиной строки, таких как длительные вычисления, предпочтительный метод состоит в том, чтобы разбить его. Вычисление юлианской даты или пасхи выполняется в несколько шагов вместо одного длинного вычисления.

-Адам

Мои личные предпочтения заключаются в следующем:

 $ 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. Если вы не можете сделать это в одной строке, сделайте это по одной строке на элемент, все остальное будет запутывать предметы после первого на линии и ужасно читать. Соответствующие отступы также имеют значение.

Fwiw, я думаю, что это старая шляпа в день и в возрасте, когда большинство программистов должны иметь двойные мониторы с высоким разрешением. Первый пример выглядит так, что это может быть одна строка довольно счастливо.

Я не думаю, что умышленно иметь длинные строки, но, рискуя обидеть многих, я предлагаю, чтобы длина линии действительно не так важна.

Vim и emacs отлично справляются с длинными строками, и они устанавливаются почти в каждом окне Unix. В Windows вы почти всегда будете в текстовом редакторе графического интерфейса. Я действительно думаю, что ваш $Stmt->bind_result легче всего читать, но если вам просто нужно загрузить кучу большей части статической информации в одном из операторов, у меня нет проблем с линией с 1000 символами.

Это довольно субъективно, очень похоже на положение скобок и другие стили кодирования. Главное – это не столько стиль, который вы выбираете, а то, что вы выбираете стиль и что вы придерживаетесь его во всем проекте.

Для меня лично, исходя из фона Python, я использую длину строки 79 и

 $flavors = array ('chocolate', 'strawberry', 'vanilla', 'cookie dough', 'chocolate chip', 'mint chocolate chip', 'rocky road', 'peach', 'fudge brownie', 'coffee', 'mocha chip'); 

стиль.

Но, как я сказал, на мой взгляд, более важно иметь стиль, а не беспокоиться о том, какой из них.

Если вы обертываете более двух элементов, я предпочитаю новую строку для каждого элемента, как в третьем примере. Легче автоматизировать средства управления источниками для слияния изменений с другими людьми, если в каждой строке есть только один элемент.

Следуйте стандарту, используемому окружающим кодом. Не создавайте свой собственный «стандарт», независимо от того, насколько «лучше».

В прозе показалось, что строки более 80 или около того труднее читать. (См. Стр. 13 документации класса LaTeX Memoir.) Код Complete (раздел 18.5, стр. 425 моего издания) также ссылается на ограничение 80 символов с этой оговоркой:

С более крупными экранами, узкими шрифтами, лазерными принтерами и ландшафтным режимом аргументы за 80-символьный предел не столь убедительны, как раньше. Одна длинная линия длиной в 90 символов обычно более читаема, чем одна, которая была разбита на две, чтобы избежать проливания по столбцу 80. В современных технологиях, вероятно, это правильно, чтобы иногда превышать 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 ); 

Я не знаю ни одного стандарта, поскольку это было бы трудно сказать. Для тех из нас, кто работает на больших мониторах, мы можем видеть более горизонтальный код, чем другие, на более мелких мониторах. Обычно я пытаюсь построить длинные строки последовательно. = (PHP), когда это необходимо, и, как показал ваш код, я произвольно разбиваю массивы на новые строки в зависимости от того, сколько символов существует в этой конкретной строке.

Я не против варианта 3 слишком много (1 пункт в строке). Кроме того, лично, я всегда использую wordwrapping, поэтому наличие кода на одной строке не беспокоит меня вообще. Тем не менее, в вашем втором примере, когда речь заходит об объявлении, это может показаться беспорядочным для программистов, которые действительно используют wordwrapping. Возможно, я из небольшой группы, которые не против длинных строк.

Наилучшая практика обычно связана с целями, лежащими в основе ограничения длины линии:

  • Повысить интероперабельность (между программистами, программным обеспечением для редактирования и т. Д.)
  • Чтобы повысить читаемость и понимание
  • Чтобы увеличить скорость наслаждения и развития
  • Для увеличения доходов и прибыли

Таким образом, ваш выбор, например, выравнивание всех параметров stmt, хорош, если они вносят вклад как в ваше собственное понимание будущего, так и в других в вашей команде.

Надеюсь, это поможет;) -M

Некоторая полезная информация здесь http://framework.zend.com/manual/en/coding-standard.coding-style.html