我忙於重構一個類,現在懷疑如何重構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
。這個驗證分爲兩部分,我不喜歡它,我更喜歡它在一個地方。所以,我會寫這樣的東西:
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',則必須在所有這些函數中執行驗證檢查。不是很乾。 –