Occasionalmente devo scrivere metodi come questo:
string GetReportOutputDirectoryAndMakeSureExist()
{
string path = Path.Combine ( ... ) //whatever logic
if(!Directory.Exists(path)) Directory.Create(path);
return path;
}
o
string GetAndVerifyExistenceOfReportConfigurationPath()
{
string path = Path.Combine ( ... ) //whatever logic to find the configuration
if(!File.Exists(path)) throw new Exception("Report configuration not found");
return path;
}
o
Customer GetCustomerAndVerifyActive(int id)
{
Customer customer = Db.GetCustomerById(id);
if(!customer.IsActive) throw new Exception("Customer is not active");
return customer;
}
È una buona pratica? Mi è stato detto che normalmente non è una buona idea che un metodo faccia più cose, o che un metodo abbia effetti collaterali (come la creazione di directory). Ma se divido, per esempio l'ultimo metodo per GetCustomer (id) e VerifyActive (cliente), dovrò fare:
var customer = GetCustomer(id);
VerifyActive(customer);
consecutivamente in diversi luoghi, e penso che contenga la violazione di DRY. E 'questa una buona idea? Qualche idea su come aiutare con i nomi dei metodi lunghi?