PHP - Функциональное/переменное именование

regex.fullmatch() - неправильный метод для использования здесь, я не думаю, что вы поняли, для чего он полезен.

Из документации модуля regex :

fullmatch ведет себя подобно match, за исключением того, что оно должно соответствовать всей строке.

blockquote>

Ваш шаблон не соответствует всем входной строке. Только если шаблон охватывает все, что , от первого символа до последнего, fullmatch() вернет совпадение.

Где re.match() соответствует только в начале строки, как если бы вы добавили \A в начало вашего паттерна, regex.fullmatch() соответствует, как если бы вы добавили \A в начало, а \Z до конца вашего шаблона.

Обратите внимание, что вам не нужна опция |(@[A-Za-z0-9_]*); этот паттерн полностью покрыт частью (Za\s)?@[A-Za-z0-9_]*, когда (Za\s)? не совпадает.

Чтобы получить чистый список, используйте re.findall(), но используйте группу (?:...) без захвата , чтобы покрыть необязательную часть, поэтому вы не получите отдельных строк в результате re.findall():

>>> import re
>>> a = "Za @Foo_Bar: @BAR_foo @FooBAR @BArfoo"
>>> re.findall(r'(?:Za\s)?@[A-Za-z0-9_]*', a)
['Za @Foo_Bar', '@BAR_foo', '@FooBAR', '@BArfoo']

Без групп захвата возвращается все совпадение.

7
задан 2 revs, 2 users 100% 12 December 2008 в 04:53
поделиться

8 ответов

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

Не используйте глобальные переменные.

Я избегаю процедурного кодирования в PHP, я нахожу, что ООП легче сохранить вещи организованными. Кроме того, не PHP имеют достаточно материала в, он уже - глобальное пространство имен?

Обычно я пытаюсь придерживаться:

  • Классы являются существительными в единственном числе StudlyCaps или существительными во множественном числе, как соответствующими: Item, Row, DB, Items.
  • Переменные являются строчными существительными, исключительными или множественными в зависимости от того, что они содержат: $column, $name
  • Константы являются исключительными прописными существительными: DEBUG, TYPE_FOO.
  • Методы являются Camel-регистром и начинаются с исключительных глаголов (get, perform, do), сопровождаемый существительным (исключительный или множественный) описание, чем это управляет на или возвраты (getThing(), getThings())

Это определенно зависит от того, для чего Вы кодируете. Если я кодирую PHP или ГРУШУ, я использую Camel-регистр. Если я делаю Python/Django, я использую under_scores. Если я пишу ELisp, я использую штриховые разделители.

13
ответ дан 6 December 2019 в 12:56
поделиться

В самом PHP почти каждая собственная функция является разделенным подчеркиванием. Большинство примеров кода PHP в документации является разделенным подчеркиванием.

На большинстве языков я думаю, Преобразование регистра Camel или Паскаля является более соответствующим, но я думаю, что существует четкая история для использования разделения подчеркивания в PHP.

2
ответ дан 6 December 2019 в 12:56
поделиться

Соглашение о присвоении имен Платформ зенда (Который основан на ГРУШЕ) является, вероятно, самым близким, Вы приходите к стандарту в мире PHP. Лично, я предпочитаю использовать lowercase_underscore для имен переменной, но иначе я главным образом следую конвенции ZF.

Обновление на 10-летней годовщине:

В эти дни существует стандарт, который в основном принят в сообществе. Необходимо придерживаться этого:

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-1-basic-coding-standard.md

1
ответ дан 6 December 2019 в 12:56
поделиться

Да, самой важной вещью является непротиворечивость. Если Вы - одинокий разработчик, придерживаетесь метода. Если Вы работаете с командой, говорите с другими членами команды. Дифференцирование между globals, функциями/методами и классами сделает чтение кода намного легче. Для некоторых людей Camel-регистр легче, чем using_underlines, таким образом, Ваша команда должна обсудить опции и выбрать стиль.

0
ответ дан 6 December 2019 в 12:56
поделиться

Примечание: Я использую символы нижнего подчеркивания для своего MySQL table_names, я использую UpperCamelCase для имен полей MySQL:

Обычно я использую $lowerCamelCase для имен переменной и свойств класса, но если он содержит значение от поля, я использую имя поля $UpperCamelCase, или если это будет массив данных из таблицы, то я буду использовать $table_name. Таким образом, я могу легко grep для SomeField или some_table и найдите все относящееся к нему.

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

0
ответ дан 6 December 2019 в 12:56
поделиться

Я раньше предпочитал использовать Camel-регистр, но ради непротиворечивости в больших приложениях, я принял руководство по стилю CodeIgniter.

Даже если Вы не используете их платформу, можно ценить работу, которая вошла в определение ясных и всесторонних стилей: http://codeigniter.com/user_guide/general/styleguide.html

0
ответ дан 6 December 2019 в 12:56
поделиться

Моя цель - безотносительно определенного формата имени - добавляет больше информации. Имя улучшает понимание кода и/или выражает что-то важное?

Если это делает, большой, то Вы преуспели в нем.

Если имя ничего не добавляет, почему Вы потрудились называть его?

Я записал на этом ранее на этой неделе:

http://caseysoftware.com/blog/useful-naming-conventions

0
ответ дан 6 December 2019 в 12:56
поделиться

Я рекомендовал бы читать ГРУШЕВЫЕ Стандарты Кодирования. Так как ГРУША является официальным Репозиторием Расширения и Приложения PHP, это можно считать официальным кодированием языка стандарта.

0
ответ дан 6 December 2019 в 12:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: