Snake_case или camelCase в node.js

Итак, у меня есть приложение node.js, которое предоставляет клиентам API клиентов и подключается к какой-либо базе данных SQL. Сначала введем некоторые предпосылки:

  • Клиенты должны использовать API с snake_case (ключи в объекте JSON, отправленные в тело запроса, находятся в snake_case).
  • Имена столбцов базы данных также snake_case.

Проблема заключается в том, что javascript стандарт/практика использует camelCase, который я хотел бы сохранить.

Итак, я вижу, что есть 3 решения:

  • Преобразовать данные с змеи (API) на верблюд (приложение) на змею (базу данных) "на лету" по мере необходимости. Это ввело бы некоторые новые слои в систему, и все это было бы немного сложнее, чем другие решения.
  • Используйте snake_case в приложении node.js. Но независимо от того, использую ли я змею все другие зависимости, которые я использую, все равно будет на верблюде, который не решает всей проблемы.
  • Смешайте snake_case и camelCase в приложении node.js. Этого я бы хотел избежать:)

Итак, что вы предлагаете? Мой любимый - это первые решения, но если у вас есть другие умные идеи, не упомянутые здесь, не стесняйтесь сказать:)

Спасибо, Иван

Ответы

Ответ 1

Как Принцип бритвы Occam говорит, что самое простое решение - лучшее.

Если у вас есть требования к клиенту, с одной стороны, и node.js руководства по стилю кода, с другой стороны. Я бы взял самое простое решение, удовлетворяющее обеим. Внешний API должен быть футляром для змей, а внутри вы можете использовать корпус верблюда. Если вы придерживаетесь последовательности, вы можете использовать случай со змеей повсюду, так как я полагаю, что требования к клиенту имеют более высокий приоритет.

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

Ответ 2

Лично, когда мне приходится иметь дело со случаем змеи в javascript, я использую его только с квадратными скобками:

data['user_id'] = 1;

поэтому, технически я не нарушаю никаких правил стиля: это просто строки, а не идентификаторы

Ответ 3

Проблема в том, что стандарт/практика javascript использует camelCase, который я хотел бы сохранить.

Нет такой стандартной практики. Это зависит от стиля. Node.js сам использует корпус верблюда, мы внутренне придерживаемся случая змеи, потому что это более читаемо. Делай как хочешь.

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

Вариант 1 не может быть изменен imho, поскольку использование идентификатора SAME в разных стилях подвержено ошибкам. Вариант 3 является приемлемым.