80LevelElf about IT Записи Мои проекты Обо мне
__Upd: Добавил еще одну конструкцию__ Все мы любим иногда взять да и разрушить прекрасную архитектуру какой-нибудь маленькой деталькой, которая не то, чтобы нужна здесь, но как сделать по-другому не понятно. Например: IEnumerable<int> GetEnumerable() { if (!isEverythinkOk) return new List<int>(); //new int[0] //Main logic } Согласитесь, 'new List<int>()' здесь ну совсем не к месту, просто "заглушка". Но в C# есть много удобных языковых конструкций которые помогают избежать таких неловких ситуаций. __Надо вернуть пустой IEnumerable?__ Не надо: if (!isEverythinkOk) return new List<int>(); //new int[0] Надо: if (!isEverythinkOk) yield break; Если метод является итерационным и return Enumerable.Empty<int>(); Если это обычный метод. __Надо передать пустой IEnumerable?__ Не надо: toDo(new List<int>()); Надо: toDo(Enumerable.Empty<int>()); __Надо вернуть пустую строку?__ Не надо: return ""; Надо: return string.Empty; __Надо проверить строку на null(на пустоту)?__ Не надо: if (str != null & str != "") Надо: if (string,IsNullOrEmpty(str)) __Надо получить коллекцию чисел? __ Не надо: int[] array = new int[10]; for (int i = 0; i < 10; i++) { array[i] = i; } Надо: Enumerable.Range(0, 10); __Надо захардкодить имя переменной(обычно в исключении)?__ Не надо: static void Main(string[] args) { throw new ArgumentOutOfRangeException("args"); } Надо: static void Main(string[] args) { throw new ArgumentOutOfRangeException(nameof(args)); } Последняя фича, правда, доступна только в C# 6/Net. 4.6
(19.10.2016)

blog comments powered by Disqus