Eu estou sentindo que posso melhorar meu código. Eu tenho feito muitos códigos de verificação no início de alguns métodos pra prevenir e tratar os erros possíveis, mas estou sentindo que estou colocando muitos ifs pra disparar os erros a serem capturados.
Eu poderia extrair essas verificações iniciais pra um método, mas a quantidade de ifs não diminuiria, tem algum jeito de fazer isso melhor?
P.S.: o código está em php 7.3 para magento 2.
public function execute(): Json
{
...
try {
$params = $this->getRequest()->getParams();
if (empty($params)) {
throw new AuthorizationException(
__('You must pass an order id and a product id to save tracking item.')
);
}
if (
$this->getRequest()->getMethod() !== 'POST' ||
!$this->getRequest()->isXmlHttpRequest()
) {
throw new AuthorizationException(__('Invalid request.'));
}
if (is_null($params['product_id'])) {
throw new NoSuchEntityException(__('This product has been deleted.'));
}
$productFactory = $this->productFactory->create()
->load($params['product_id']);
if (is_null($productFactory->getId())) {
throw new NoSuchEntityException(__('You must pass a product ID.'));
}
...
} catch (\Exception | NoSuchEntityException $exception) {
$this->messageManager->addErrorMessage(__($exception->getMessage()));
$this->logger->error($exception->getMessage());
$resultJson->setHttpResponseCode($httpBadRequestCode);
$response = [
'errors' => true,
'message' => $exception->getMessage(),
];
}
return $resultJson->setData($response);