string i18n_EmployeeName = I18nUtility.GetGlobalResourceString("EmployeeName");
string i18n_CurrentRecipient = I18nUtility.GetGlobalResourceString("CurrentRecipient");
string i18n_SubmittedBy = I18nUtility.GetGlobalResourceString("SubmittedBy");
string i18n_Submitted = I18nUtility.GetGlobalResourceString("Submitted");
string i18n_EffectiveDate = I18nUtility.GetGlobalResourceString("EffectiveDate");
string i18n_Reason = I18nUtility.GetGlobalResourceString("Reason");
string i18n_OffCycleApprovalStatus = I18nUtility.GetGlobalResourceString("Status");
string dateFormat = "m/dd/yyyy";
.
.
.
byte[] ret = ExcelResultFromList.Create(
mapAction: map =>
{
map.Include(x => x.EmployeeName).Label(i18n_EmployeeName);
map.Include(x => x.CurrentRecipient).Label(i18n_CurrentRecipient);
map.Include(x => x.SubmittedBy).Label(i18n_SubmittedBy);
map.Include(x => x.Submitted).Label(i18n_Submitted).Format(dateFormat);
map.Include(x => x.EffectiveDate).Label(i18n_EffectiveDate).Format(dateFormat);
map.Include(x => x.ReasonCode).Label(i18n_Reason);
map.Include(x => x.OffCycleApprovalStatus).Label(i18n_OffCycleApprovalStatus);
},
mapActionForSecond: map =>
{
map.Include(x => x.EmployeeName).Label(i18n_EmployeeName);
map.Include(x => x.CurrentRecipient).Label(i18n_CurrentRecipient);
map.Include(x => x.SubmittedBy).Label(i18n_SubmittedBy);
map.Include(x => x.Submitted).Label(i18n_Submitted).Format(dateFormat);
map.Include(x => x.EffectiveDate).Label(i18n_EffectiveDate).Format(dateFormat);
map.Include(x => x.ReasonCode).Label(i18n_Reason);
map.Include(x => x.OffCycleApprovalStatus).Label(i18n_OffCycleApprovalStatus);
}
)
I don't want to create a separate class just to emphasize the related variables (e.g. labels), it's too ceremonial. I put prefix on those label variables so I can segregate them from business variables(i.e. variables use for computation, flow, etc), achieving separation of concerns via naming convention. Whether prefixing things is desirable or not is entirely another matter; but certainly, separation of concerns must be addressed.
And then I realize, I can do adhoc-y structure with anonymous type, and voila! naming convention is not necessary anymore to achieve separation of concerns. And suddenly, naming convention feels so WET
var i18n = new
{
EmployeeName = I18nUtility.GetGlobalResourceString("EmployeeName"),
CurrentRecipient = I18nUtility.GetGlobalResourceString("CurrentRecipient"),
SubmittedBy = I18nUtility.GetGlobalResourceString("SubmittedBy"),
Submitted = I18nUtility.GetGlobalResourceString("Submitted"),
EffectiveDate = I18nUtility.GetGlobalResourceString("EffectiveDate"),
Reason = I18nUtility.GetGlobalResourceString("Reason"),
OffcycleApprovalStatus = I18nUtility.GetGlobalResourceString("Status")
};
string dateFormat = "m/dd/yyyy";
.
.
.
byte[] ret = ExcelResultFromList.Create(
mapAction: map =>
{
map.Include(x => x.EmployeeName).Label(i18n.EmployeeName);
map.Include(x => x.CurrentRecipient).Label(i18n.CurrentRecipient);
map.Include(x => x.SubmittedBy).Label(i18n.SubmittedBy);
map.Include(x => x.Submitted).Label(i18n_Submitted).Format(dateFormat);
map.Include(x => x.EffectiveDate).Label(i18n.EffectiveDate).Format(dateFormat);
map.Include(x => x.ReasonCode).Label(i18n.Reason);
map.Include(x => x.OffCycleApprovalStatus).Label(i18n.OffCycleApprovalStatus);
},
mapActionForSecond: map =>
{
map.Include(x => x.EmployeeName).Label(i18n.EmployeeName);
map.Include(x => x.CurrentRecipient).Label(i18n.CurrentRecipient);
map.Include(x => x.SubmittedBy).Label(i18n.SubmittedBy);
map.Include(x => x.Submitted).Label(i18n.Submitted).Format(dateFormat);
map.Include(x => x.EffectiveDate).Label(i18n.EffectiveDate).Format(dateFormat);
map.Include(x => x.ReasonCode).Label(i18n.Reason);
map.Include(x => x.OffCycleApprovalStatus).Label(i18n.OffCycleApprovalStatus);
}
)
Happy Computing! ツ
No comments:
Post a Comment