Прежде всего: я попытался это сделать, но в основном я нашел дискуссию о том, как определять массивы в константах и другой несвязанной информации.PHP-классы, содержащие только константы
У меня есть вопрос относительно решения сделать мой код более удобочитаемым (и красивым), который только что произошел со мной. В основном у меня есть большинство функций, возвращающих код состояния, который указывает на успех, или, если что-то пошло не так, код ошибки. Для этого я сделал класс под названием «StatusCode», который содержит только константы, например так:
<?php
class StatusCode {
const success = 0;
const badArgument = -1;
const badQuery = -2;
const outOfMana = -3; //Really just for demonstration purposes
...
}
Цель состоит в том, чтобы сделать магические числа исчезают из моего кода и дать понять, что пошло не так, без необходимости искать объяснение где-то:
if (mana > 10) {
//Do some magic
return StatusCode::success;
}
else {
//Oh god this is not good!
return StatusCode::outOfMana;
}
Он также должен исключить возможность случайного использования повторяющихся кодов ошибок. Я уверен, что это добавляет незначительные накладные расходы для моего приложения, но упростило мой код в ответ. Есть ли какая-то разрушающая землю причина не делать этого? Может быть, это еще лучший способ?
(я избегал define(CONSTANT, "value")
подход, поскольку он кажется менее довольно и хлопот писать на моей немецкой клавиатуре :))
Нет причин, по которым НЕ делать то, что вы сделали. Как вы сказали, это делает ваш код более читаемым. Что касается добавления накладных расходов, даже если это правда, это полностью минимальные накладные расходы. Что касается лучших способов, существуют вариации в том, что вы сделали, используя интерфейсы для определения констант. TL; DR - то, что вы сделали, хорошо. –
Полностью согласен с тем, что @ N.B. сказал. Моя единственная проблема с этим сообщением заключается в том, что она должна быть закончена при просмотре кода, а не здесь;) – Prisoner
В этом крошечном углу стиля кодирования ваш выбор является самым лучшим в этом плане.И когда речь идет о стиле, очень часто не бывает «абсолютного лучшего». ;-) Кстати, вы можете сделать этот класс 'abstract' или' final' дополнительным намеком на то, как он не должен использоваться. К сожалению, это не может быть и то, и другое, что запечатает сделку. – Jon