我正忙于重构一个类,现在怀疑如何重构 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
,我们正在检查 if file_exists
。此验证分为两部分,我不喜欢它,我更喜欢它在一个地方。所以,我会写这样的东西:
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)
{
...
...
}
这是一个好方法吗?如果不是,为什么?