Неточное название множества полей объекта


Исходный код

class CsvValidation
{
    private $productAttributes = [
        'color',
        'size',
        'type',
    ];

    public function validateProduct(array $product)
    {
        foreach ($this->productAttributes as$attribute) {
            if (!isset($product[$attribute])) {
                throw new \Exception(sprintf('Import fail: the product attribute %s is missing', $attribute));
            }
        }
    }
}

Что не так в этом названии

Название поля productAttributes говорит нам, что в нём содержится список атрибутов товара.

Однако же применение этого списка исходит из того, что он содержит не просто поля товара, а поля, которые обязательно должны быть заполнены.

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

Поэтому правильное название поля — requiredProductAttributes.

Если нам понадобится и поле с полным спискм атрибутов, то оно должно быть создано как отдельное поле под названием productAttributes.