Лучшая практика - доступ к элементам словаря C # - PullRequest
0 голосов
/ 09 марта 2011

Вот мой код

public void DoSomethin(IEnumerable<string> values)
{
    Dictionary<string, string> d = GetDictionary();

    foreach(var value in values)
    {
         if(d.Contains(value))
         {
              //Do something
         }else{
              // What now ?
         }
    }
}

Сбор значений происходит из веб-интерфейса, поэтому могут быть некоторые недопустимые данные.

Мой вопрос: что делать, если в словаре нет текущего значения?

Должно ли быть сгенерировано исключение или просто пропущен токовый цикл?

Этот код генерирует строки для сетки ..

Ответы [ 4 ]

2 голосов
/ 09 марта 2011

Вы должны использовать TryGetValue , который будет возвращать ноль, если элемент не существует.Я бы избежал исключений для этого типа вещей, поскольку они могут быть дорогостоящими.

1 голос
/ 09 марта 2011

Исключения - для связи с программным обеспечением, а не с пользователями.Учитывая то, что вы нам показали, я не могу вспомнить ни одной ситуации, в которой было бы целесообразно выдавать исключение.

Поскольку вы генерируете сетку, этот код должен создать пустую ячейку илив ячейке отображается «не указано», в зависимости от того, что вы хотите, чтобы пользователь испытал.

Если вы не можете продолжить работу без значения, отобразите для пользователя сообщение об ошибке.

1 голос
/ 09 марта 2011

Зависит от 3 вариантов:

  1. Если пользователь должен знать, что что-то не так, и вы хотите отменить генерацию строки - бросьте что-нибудь
  2. если пользователь должен знать, что он ввел что-то неправильно, и вы не хотите отменять генерацию строки - добавьте все не найденные значения в список и покажите их как ошибки.
  3. Если пользователь не должен знать, что-то не так, просто игнорируйте его.
1 голос
/ 09 марта 2011

Мой вопрос: что делать, если в словаре нет текущего значения? Должно ли быть сгенерировано исключение или просто пропущен токовый цикл?

Вы не предоставили нам достаточно информации о домене, чтобы ответить на этот вопрос. Это действительно сводится к требованиям / ожиданиям вашей программы. Являются ли недостающие данные ожидаемым обстоятельством? Может ли ваша программа справиться с этим и при этом соответствовать собственным требованиям? Если ответ «да», обращайтесь с ним соответствующим образом. Если ответ отрицательный, то это фатальное исключение, и ваши руки связаны.

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