Избегайте исключений в английском языке при написании сущностей

Вы наверное знаете, что в английском языке есть исключения при преобразовании единственного и множественного числа некоторых слов. Их порядка 20
, и наиболее часто в реальных проектах могут встретиться следующие из них: Goods, News, Money, amount другие - реже.
Все проблемы возникают при работе с ними в общепринятых конвенциях наименования, когда вы работаете с множеством - вы используете переменную во множественном числе - $cars, при разложении или получении экземпляра модели - вы оперируете с единственном числом $car
И всё красиво и удобно, пока вы случайно не нарываетесь на одно из этих названий. Вы наверняка встречались с отображением новостей на сайте. Это один из примитивных конструкций, с которой сталкивался почти каждый разработчик. Как вы рендерили массив новостей?

foreach ($news as $new)?

Чувствуете подвох. И тут надо понимать что вы совершаете сделку с дьяволом. Приложение после этого стало слегка не правильно выглядеть семантически, потому что $new - это означает "новый", это не "новость" в единственном числе.
Как быть?
Стандартов отвечающих на этот вопрос нету. Самое главное придерживаться какой-то (единой) тактики

      0. Если вы решите добавить к единственному экземпляру суффикс, например $newsObject - вам придется для единого стандарта изменить и все случаи где такое встречается с нормальными словами. Не лучший вариант, не рекомендую

  1. Самое оптимальное что приходит - стараться избегать встречи с использованием этих слова. Например Goods - Товар, товары - можно заменить синонимом product products - продукт, продукты.
    Moneys и amount - легко заменяется на price prices
  2. Как видите особенностей в склонении довольно много, по этому придерживаться грамматической правильности - дорогое удовольствие. Если в команде нет приверженцев английской грамматики - можно пойти на сделку с дьяволом и называть переменные несуществующими словами $good, $new, $moneys, но я бы рекомендовал делать это в исключительных случаях, если первый вариант не прокатил.
  3. В качестве запасного варианта (в зависимости от построения вашей архитектуры) - можно выделить функцию рендера в отдельный компонент или изолированную функцию, которая будет оперировать уже с общей переменной $items у которой есть замечательное единственное число $item. Естественно у этого есть свои недостатки, у вас может возникнуть лишние слои и лишние вложенности внутри компонента/функции. Иметь дело с единственной ничего не говорящей о сущности переменной во всех скриптах может быть сложно для восприятия.
    (Если вы фанат SOLID - выбирайте последний вариант и не думайте)
  • Автор: kosmom
  • Рейтинг: 0
  • Просмотров: 498
  • Комментариев: 0
  • Создан: 20.06.2020 14:20

Комментарии (0)

Ваши предложения и пожелания пишите на pro@kosmom.ru

Теги

backup bootstrap core framework eloquent excel home project html ios javascript keep-alive kpi laravel legacy mvp orm php rip scroll timestamp undefined vue vuetify watch безопасность биометрический паспорт ваша любаша для путешествий загран на 10 лет загран паспорт загранпаспорт нового образца зимние книги как заполнить анкеты кеширование книги на новый год логирование мцф недвижимость новогодние книги образец заполнения антеты паспорт для путешествий паспорт нового поколения печать продукт проектирование прокси разработка ремонт ремонт в апартаментах ремонт нежилого помещения самокат сдача сколько стоил ремонт апартаментов спорт стандарты таблица финансы хостинг цена ремонта что почитать зимой юзабилити

Случайный пост

13.12.2000 13:45
Совместная работа