Мне нужно провести некоторый рефакторинг для приведенного ниже кода, так как я ищу замену метода throw invalidoperationexception другим, возвращающим объект operationresult, также мне нужно вернуть объект json. Мне также нужен ваш совет относительно рефакторинга приведенного ниже кода в целом.
в поисках нескольких шаблонов проектирования, и у меня появилась идея заменить ожидание броска возвращением объекта с логическим флагом, если операция выполнена успешно или нет, истрока с сообщением об ошибке, если какие-либо правила исключений.
//Method to return json with operation result
public void UpdateNINByID(int ID)
{
try
{
m_logger.Log(LogLevel.Info, string.Format("UpdateNINByID is Started for ID {0}", ID));
o_tdsAlert = new tdsAlert();
o_dmAlert.GetSrcDestDataByID(o_tdsAlert, ID);
if (o_tdsAlert.DATA_SEARCH_EFGHEGCA_SI_HAS_ACC.Count == 0)
{
m_logger.Log(LogLevel.Trace, string.Format("UpdateNINByID - No data found in source for ID {0}", ID));
return;
}
ConvertNinToUpperCase(o_tdsAlert);
var drSrc = o_tdsAlert.DATA_SEARCH_EFGHEGCA_SI_HAS_ACC.FirstOrDefault();
//I need to refactor this
oALRTNINExtractionConfig = oALRTNINExtractionConfig.GetALRTNINConfig(drSrc.Country, drSrc.MethodType);
SourceData srcIDs = CreateValidListSrcList(drSrc, drSrc.MethodType);
List<CleansedIDs> cleansedIDs = GetCleansedIDs(drSrc, srcIDs);
TransformToDTCC_Client_DATA(o_tdsAlert, drSrc, cleansedIDs);
o_dmAlert.updateDtcc_Client_DataByID(o_tdsAlert);
if (oALRTNINExtractionConfig.IsHandleAlertRowUpdates)
AlertCleansing();
if (oALRTNINExtractionConfig.IsSendNotification)
SendNotification(srcIDs);
m_logger.Log(LogLevel.Info, string.Format("UpdateNINByID - is Finished for ID {0}", ID));
}
catch (Exception ex)
{
m_logger.LogException(LogLevel.Error, "UpdateNINByID - NIN ByID Exception", ex);
throw;
}
}
//I need to refactor
public ALRTNINExtractionConfig GetALRTNINConfig(string Country, string MethodType)
{
var ALRTNINExtractionConfigs = JsonConvert.DeserializeObject<ALRTNINExtractionConfigCollection>(
File.ReadAllText(ConfigurationManager.AppSettings["ALRTNINExtractionConfig"]));
if (ALRTNINExtractionConfigs == null)
throw new InvalidOperationException("ALRTNINExtractionConfigs is null");
IEnumerable<ALRTNINExtractionConfig> oALRTNINExtractionConfiglst = ALRTNINExtractionConfigs.ALRTNINExtractionConfiglst;
if (!oALRTNINExtractionConfiglst.Where(r => r.Country == Country).Any())
Country = MethodType = Default;
oALRTNINExtractionConfiglst = oALRTNINExtractionConfiglst.Where(r => r.Country == Country);
if (!oALRTNINExtractionConfiglst.Any())
throw new InvalidOperationException("Country isnot set in configuration");
if (!oALRTNINExtractionConfiglst.Where(r => r.MethodType.Contains(MethodType)).Any())
throw new InvalidOperationException("MethodType isnot set in configuration");
var aLRTNINExtractionConfig = oALRTNINExtractionConfiglst.Where(r => r.MethodType.Contains(MethodType)).FirstOrDefault();
return aLRTNINExtractionConfig;
}
Я исключаю некоторые рекомендации по рефакторингу кода, также я могу поделиться всем кодом, если это необходимо.