Какой лучший способ сделать нижеприведенную программу (c # 3.0) - PullRequest
0 голосов
/ 17 июня 2010

Рассмотрим приведенную ниже программу

private static bool CheckFactorPresent(List<FactorReturn> factorReturnCol)
{
    bool IsPresent = true;
    StringBuilder sb = new StringBuilder();

    //Get the exposure names  from Exposure list.
    //Since this will remain same , so it has been done outside the loop

    List<string> lstExposureName = (from item in Exposures
                    select item.ExposureName).ToList<string>();


    foreach (FactorReturn fr in factorReturnCol)
    {
    //Build the factor names from the ReturnCollection dictionary
    List<string> lstFactorNames = fr.ReturnCollection.Keys.ToList<string>();

    //Check if all the Factor Names are present in ExposureName list
    List<string> result = lstFactorNames.Except(lstExposureName).ToList();

    if (result.Count() > 0)
    {
        result.ForEach(i =>
        {
        IsPresent = false;
        sb.AppendLine("Factor" + i + "is not present for week no: " + fr.WeekNo.ToString());        
        });
    }

    }
    return IsPresent;
}

В основном я проверяю, присутствуют ли все FactorNames [lstFactorNames] в списке

ExposureNames [lstExposureName] с помощью lstFactorNames.Except(lstExposureName).

А затем с помощью функции Count () (если count ()> 0) , я пишу сообщения об ошибках

String Builder (sb)

Я уверен, что кто-то определенно может написать лучшую реализацию, чем представленная.

И я с нетерпением жду того жеузнайте что-то новое из этой программы.

Я использую c # 3.0 и dotnet framework 3.5

Спасибо

1 Ответ

0 голосов
/ 17 июня 2010

За исключением некоторых проблем с соглашениями об именах, я бы сказал, что это выглядит хорошо (для того, что я могу понять, не видя остальной части кода или цели в работе. Соглашения об именах, тем не менее, требуют некоторой работы. Сочетание ntnHungarian, PascalCase, camelCase и abbrv немного дезориентирует. Попробуйте просто назвать ваши локальные переменные исключительно как camelCase, и все будет выглядеть намного лучше.

- РЕДАКТИРОВАТЬ - Кроме того, вы можете очистить итерацию в конце, просто запустив простой foreach:

...
foreach (var except in result)
{
    isPresent = false;
    builder.AppendFormat("Factor{0} is not present for week no: {1}\r\n", except, fr.WeekNo);
}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...