Я начал разрабатывать библиотеку обработки изображений и решил пойти с Scrutinizer для тестирования и проверки в одном прохладном пакете, но я не уверен, как оптимизировать мой код, чтобы ограничить некоторые статистические данные, которые ухудшают общий Гол.Оптимизация оценки Scrutinizer
Код, который я показываю ниже, имеет «Условия: 6», что подталкивает его к значению «В». Существует нет ничего особенного в коде, он проверяет наличие потенциальных отсутствующих разрешений или нетрудоспособных каталогов и бросать исключения соответственно, таким образом понижая счет есть довольно трудно без кода реагировать совершенно по-разному:
/**
* Writes the image to a writable source
*
* @param int $compression Compression level 0-9, defaults to 9
*
* @throws \StandardExceptions\IOExceptions\FileNotWritableException
* @throws \StandardExceptions\IOExceptions\DirectoryNotFoundException
* @throws \StandardExceptions\IOExceptions\DirectoryNotWritableException
*/
public function write($compression = 9)
{
$path = $this->getPath();
$directory = $path->getPathInfo();
if (file_exists($path->getPathname()) && !$path->isWritable()) {
throw new FileNotWritableException();
} elseif (!is_dir($directory->getPathname())) {
throw new DirectoryNotFoundException();
} elseif (is_dir($directory->getPathname()) && !$directory->isWritable()) {
throw new DirectoryNotWritableException();
}
$options = [
'png_compression_level' => $compression,
'resolution-x' => $this->getDensity()->getDensity(),
'resolution-y' => $this->getDensity()->getDensity(),
'resolution-units' => $this->mapDensity($this->getDensity()),
];
$this->getImage()->save($path, $options);
}
Я не» я понимаю, почему у меня 6 условий, в то время как там есть только 3 условия. И я не понимаю, как я мог это понизить!
Три строки, которые у вас есть сейчас, являются предложениями охраны - и вы всегда можете разделить три на новую функцию - возможно, что-то вроде 'isFileWritable()'. Даже с линиями, все еще там - это более читаемо, но это потому, что вам не нужно читать три новые функции. –