Рефакторинг кода для замены метода исключения исключения на результат операции - PullRequest
0 голосов
/ 29 сентября 2019

Мне нужно провести некоторый рефакторинг для приведенного ниже кода, так как я ищу замену метода 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;
}

Я исключаю некоторые рекомендации по рефакторингу кода, также я могу поделиться всем кодом, если это необходимо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...