Соглашения об именовании PHP / MySQL: camelCase vs under_score?

#php #mysql #naming-conventions

#php #mysql #соглашения об именовании

Вопрос:

Довольно часто в коде модели PHP (по крайней мере, в моем собственном таком коде) есть прямые ссылки на имена таблиц и полей MySQL, и поскольку идентификаторы MySQL по большей части не чувствительны к регистру, я обычно использую соглашение об именовании under_score, чтобы сделать эти идентификаторы немного более читаемыми.

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

Кроме того, сами встроенные функции PHP несовместимы. Некоторые из них используют camelCase, другие используют under_scores, а третьи используют именование в стиле C (например, «strtolower»).

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

Как другие люди справляются с этим? Возможно, люди нашли какой-то способ организовать свою работу так, чтобы различные соглашения об именовании, как правило, не выглядели так близко друг к другу? Или, возможно, существуют библиотеки классов, которые при правильном использовании, как правило, делают вещи немного чище? Я знаю, что эти обсуждения стиля могут быть горячими — не нужно туда заходить, просто несколько практических предложений, пожалуйста!

Комментарии:

1. Похоже, что большинство ответов на этот вопрос сводятся к «Быть последовательным» — но не решают вопрос о том, что делать с идентификаторами из различных контекстов, появляющимися в одном и том же модуле кода.

2. Лично у меня нет реальной проблемы с разделением их. При разработке MySQL DBs я использую только нижний регистр. Основными именами функций контроллера / модели в PHP / CI являются camelCase. Я делаю все возможное, чтобы исключить подчеркивания из моего кода, но плагины типа tank_auth их используют. Я полагаю, что это забавно (и недостаток) гибкости PHP.

3. @Kyle здесь то же самое. Забавно на самом деле. В SQL никогда не бывает camel case и много _ . PHP никогда _ и много верблюдов. Я думаю, что на самом деле это очень ясно: вы можете увидеть исходные данные следующим образом: PHP или SQL создали это varname?

4. Символы подчеркивания часто используются в функциях типа _constructor (примером может быть что-то вроде _createuser в tank_auth) для обозначения их функции, но я настоятельно предпочитаю camelCase и просто размышлять над именем функции в течение нескольких минут. Хорошие описания на простом, повторяющемся английском языке превосходят дескрипторы, основанные на синтаксисе, каждый день, ИМО.

Ответ №1:

Как говорит Тереско, имена MySQL чувствительны к регистру на платформах * NIX и нечувствительны к Windows. Если вы разрабатываете код для поддержки обоих (как это делаю я), то смешивание ваших обращений может вызвать огромную головную боль: например, дамп базы данных в Windows и восстановите ее в * NIX, и все ваши обращения будут потеряны. На самом деле нам пришлось собирать код для обнаружения и исправления обращений в дампе только по этой причине.

Однако, если вы свободны от Windows, на самом деле не имеет значения, что вы используете, до тех пор, пока вы поддерживаете его согласованность.

Ответ №2:

Когда дело доходит до моделей и таблиц базы данных, вы можете использовать:

  • camelCase для имен моделей,
  • форма множественного числа имени вашей модели для таблицы базы данных (с согласованными строчными / прописными буквами, например, ‘camelcases’),
  • имена таблиц в алфавитном порядке, разделенные символом подчеркивания (например, ‘camels_cases’ является таблицей соединения между ‘cases’ и ‘camels’),

Для классов я бы обычно использовал CamelCases (начиная с верхнего регистра) и camelCases для методов (начиная со строчных регистров).

Но, на самом деле, что имеет значение, так это согласованность и удобочитаемость. Может быть хорошей идеей следовать соглашениям об именовании некоторых хорошо известных и широко реализованных фреймворков, таких как Zend Framework (этот предоставляет довольно точные рекомендации в отношении стандарта кодирования), но, например. Kohana также может быть хорошей идеей. Изобретать велосипед, возможно, не лучшая идея 😉