PHP качество кода

224
02 ноября 2017, 08:02

Есть php код:

public static function load() : void
{
    $config = new ...;
    $config = $config->getData();
    $throw = function() : void
    {
        throw new \ConfigException ("Invalid config.");
    };
    self::$param1 = $config["core"]["param1"] ?? ($throw)();
    self::$param2 = $config["core"]["param2"] ?? ($throw)();
    self::$param3 = $config["module"]["param3"] ?? ($throw)();
    self::$param4 = $config["module"]["param4"] ?? ($throw)();
}
public static function getParam1() : bool
{
    return self::$param1;
}
public static function getParam2() : string
{
    return self::$param2;
}
public static function getParam3() : int
{...}
/*и т.д.*/

Он проверяет значения в массиве, и если их нету, то выбрасывает исключение ($throw)(), если есть, то это значение присваивается в статическое свойство класса.

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

Answer 1

Говорят, что лучший код не тот, в который нечего добавить, а тот, из которого нечего убрать. Если вы хотите провалидировать структуру массива конфига, убедившись что он содержит необходимые ключи -- сделайте именно это. Если вы хотите провалидировать значения параметров, с которыми собираетесь работать -- сделайте именно это. В конце концов, не важно как именно вы бросаете исключение, важно зачем и почему вы его бросаете.

Сделайте сообщение об ошибке более информативным (какой ключ отсутствует, в каком конфиге). Убедитесь что ваши проверки действительно необходимы в этом подозрительном классе. Избавтесь от лишних зависимостей. Убедитесь что сам подозрительный класс необходим.

READ ALSO
Рефакторинг кода?

Рефакторинг кода?

Как можно сократить и привести в порядок код?

268
Отображение сотых, даже если 00

Отображение сотых, даже если 00

Как вывести число с сотыми, если число уже к примеру: 52, чтобы вывести 5200?

208