Честно говоря, одна из самых больших проблем здесь - это только длина имен ваших переменных.
Очевидно, вы должны указать переменные / типы / и т.д.описательные имена.Но есть момент, когда это становится немного экстремальным.Один парень на моей работе известен тем, что называет методы такими именами, как:
DoSomethingVerySpecificHereIsOneOfItsSideEffectsAndHereIsAnother
В вашем случае я замечаю большую избыточность.Например, у вас есть класс с именем RequestReportsCalculatingStoredProcedures
, а затем в этом классе вы, кажется, имеете перечисление с именем RequestReportStoredProcedureType
.Поскольку перечисление уже является вложенным типом в RequestReportsCalculatingStoredProcedures
, возможно, вы могли бы просто назвать его Type
?
В качестве альтернативы, очень эффективный способ сократить эти имена (по крайней мере вfile) будет использовать простое объявление using
:
using E = RequestReportsCalculatingStoredProcedures.RequestReportStoredProcedureType;
Тогда посмотрите, что происходит с вашим кодом:
using RRCSP = RequestReportsCalculatingStoredProcedures;
using E = RRCSP.RequestReportStoredProcedureType;
// ...
// Note: RRCSP = RequestReportsCalculatingStoredProcedures, and
// E = RRCSP.RequestReportStoredProcedureType
switch ((E)Enum.Parse(typeof(E), ihdType.Value))
{
//REF:This can (but should it?) be refactored through strategy pattern
case E.ReportPlanWithEffects:
grvEconomicCriteria.DataSource = RRCSP.ReportsDataParser(
RRCSP.ReportPlanWithEffects(
requestNo,
RRCSP.GetAlgorithmNoByRequestNo(requestNo)
)
);
break;
case E.ReportPlanWithEffectsForFacts:
DateTime factDate;
try
{
factDate = Convert.ToDateTime(ihdDate.Value);
}
catch(FormatException)
{
grvEconomicCriteria.DataSource = RRCSP.ReportsDataParser(
RRCSP.ReportPlanWithEffectsForFacts(
requestNo,
RRCSP.GetAlgorithmNoByRequestNo(requestNo),
DateTime.MinValue
)
);
break;
}
grvEconomicCriteria.DataSource = RRCSP.ReportsDataParser(
RRCSP.ReportPlanWithEffectsForFacts(
requestNo,
RRCSP.GetAlgorithmNoByRequestNo(requestNo),
factDate
)
);
break;
default:
break;
}
Это более читабельно?На мой взгляд, да, в первую очередь потому, что на это просто не так сложно смотреть.Очевидно, что вы делаете компромисс, хотя, поскольку используемые псевдонимы менее сразу очевидны, чем исходные имена.Как и все остальное, в конечном итоге все сводится к личному суждению.