Я занят рефакторингом одного класса и теперь сомневаюсь, как реорганизовать 2 метода. Вот они:Как реорганизовать методы и сохранить расколотую проверку одним способом?
public function transform($transformXml, $importXml, $xsdScheme = '')
{
...
if (!empty($xsdScheme)) {
$this->_validateXml($exportDoc, $xsdScheme);
}
...
}
protected function _validateXml(DOMDocument $xml, $xsdScheme)
{
...
if (!file_exists($xsdScheme)) {
throw new Exception('XSD file was not found in ' . $xsdScheme);
}
...
}
Параметр $xsdScheme
в методе transform
не является обязательным, если он пустой, чем мы не будем применять проверку XSD. После этого мы вызываем метод _validateXml
, где мы проверяем, file_exists
. Эта валидация разделяется на 2 части, и мне это не нравится, я предпочитаю ее в одном месте. Итак, я бы написал что-то вроде этого:
public function transform($transformXml, $importXml, $xsdScheme = '')
{
...
if (!empty($xsdScheme)) {
if (!file_exists($xsdScheme)) {
throw new Exception('XSD file was not found in ' . $xsdScheme);
}
$this->_validateXml($exportDoc, $xsdScheme);
}
...
}
protected function _validateXml(DOMDocument $xml, $xsdScheme)
{
...
...
}
Это хороший подход? Если нет, то почему?
Я согласен с этим. Кроме того, если '_validateXml' вызывается из других функций, вам также придется выполнить проверку валидации во всех этих случаях. Не очень СУХОЙ. –