Предположим, что у вас есть enum
типа так:Пустой случай по умолчанию в частичном переключатель против, если предложение
public enum Type
{
A, B, C, D, E, F
}
Затем вы хотите сделать что-то в зависимости от некоторых значений, так что вы создать переключатель предложение:
switch (type)
{
case Type.A: // Do something
break;
case Type.B: // Do something
break;
case Type.C: // Do something
break;
}
Это компилируется и работает нормально, но затем Sonarqube 5.2 (с правилами по умолчанию для C#) проверяет код и жалуется на switch
, не имеющий случая по умолчанию (он квалифицирует его как серьезную проблему). Таким образом, вы измените код на это:
switch (type)
{
case Type.A: // Do something
break;
case Type.B: // Do something
break;
case Type.C: // Do something
break;
default: // Do nothing
break;
}
Но тогда это SharpDevelop, кто жалуется, поседение дела по умолчанию, и говорят вам, что код не должен быть там, так как он не делает ничего.
Таким образом, вы в конечном итоге изменить код на if
предложение:
if (type == Type.A) // Do something
else if (type == Type.B) // Do something
else if (type == Type.C) // Do something
С помощью этого кода, ни SonarQube, ни SharpDevelop жалуются на всех. Ну, SharpDevelop любезно предлагает, чтобы if
можно было преобразовать в switch
.
Итак, какой путь лучше? Должен ли я добавить случай по умолчанию к switch
и игнорировать SharpDevelop? Должен ли я игнорировать проблему в SonarQube? Или я должен просто пойти на предложение if
? Есть ли другой способ сделать это более правильно?
серьезно, у вас не должно быть нескольких расширений для VS, которые конфликтуют друг с другом. я предлагаю удалить их все и просто установить resharper;) ... использовать переключатель без по умолчанию. также используйте свой мозг !. –
@ M.kazemAkhgary Я не использую Visual Studio, но SharpDevelop. И SonarQube является частью нашей непрерывной среды интеграции, мы не используем его как плагин. – Charlie
о. простите за это. Я этого не знал. но ваш вопрос основан на мнениях. –