@VladChekunov

Как избежать нечитаемости из-за констант большой длины?

Есть класс, который занимается вставкой значений в поля некого шаблона. Названия полей лежат в константах. Из-за специфики области имена констант имеют большую длину (50+ символов) типа:
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_NAME = "...";
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_PRICE = "...";
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_MODEL = "...";
// ...
$this->fillEntityField($detail, self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_NAME, $name);
$this->fillEntityField($detail, self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_PRICE, $price);
$this->fillEntityField($detail, self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_MODEL, $model);

Из-за этого строка, в которой используется название поля, выглядит очень длинной и код в целом читается сложнее.

Как можно было бы этого избежать?

Мне пришло в голову вынести такие константы в отдельный массив с ключами - короткими значениями. Это хороший вариант или так не стоит делать?
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_NAME = "...";
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_PRICE = "...";
public const DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_MODEL = "...";
// ...
$fields = [
    "name" => self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_NAME,
    "price" => self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_PRICE,
    "model" => self::DOCUMENT_CARS_SERVICE_SOME_LEVELS_OF_LOGIC_HIERARCHY_ROVER_CC_MODEL,
];

$this->fillEntityField($detail, $fields['name'], $name);
$this->fillEntityField($detail, $fields['price'], $price);
$this->fillEntityField($detail, $fields['model'], $model);
  • Вопрос задан
  • 150 просмотров
Пригласить эксперта
Ответы на вопрос 1
@DmitrySolomennikov
Как по мне, вопрос не такой очевидный, несмотря на простую формулировку.
1. Очень похоже, что длинные имена констант являются автоматически сгенерированными. Если это действительно так, то, возможно, стоит попробовать вписаться в исходную схему генерации и по какой-то логике произвести свертку имен в более короткие.
2. Если имена пишутся вручную, то схема с подменой имен на более короткие выглядит вполне разумно. На что бы я обратил особое внимание, так это на логику замены, чтобы эта схема была более-менее предсказуема. Будут сложности при увеличении количества подмен, связанные с пониманием взаимоотношений между константами.
3. Имеет смысл посмотреть в целом на природу происхождения таких идентификаторов, здесь есть пространство для оптимизаций. Константы можно разбить на группы, как-то объединить в соответствии с логикой их формирования, чем суммарно снизить сложность текста кратно.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы