Исходный код
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
.