Сообщение Re[2]: Трансформация коллекции от 29.05.2015 6:54
Изменено 29.05.2015 9:05 tyomchick
Здравствуйте, Sinix, Вы писали:
S>Пара замечаний:
S>1. Я бы поменял имя метода на Update. Transform обычно используется как "чистая" функция, которая возвращает новый результат. Вариант с Replace тоже неплох.
Да, пожалуй Update более удачное название.
S>2. Неплохо бы добавить дебаг-ассерты для индексов и для проверки на null. Всегда лучше, когда ошибка всплывает сразу, а не в середине перебора.
Это решается атрибутом [NotNull], решарперским анализатором, и административным запретом на комиты с решарперскими варнингами.
S>Ну и на отрицательный count ассерт нужен в любом случае, это баг. И checked() на вычисление endIndex.
Да, вы правы, но наверное я всё таки не дебажные ассерты, а исключения ArgumentOutOfRangeException кидать буду.
Я бы добавил ассерт и на count == 0 (или возвращал бы false, если перебор не удался). Если окажется, что большинство случаев с count==0 — не ошибка, всегда можно будет убрать.
Думаю всё же не буду. Вроде бы все функции что я знаю, лояльно относятся к нулевой длине, не хотелось бы рвать шаблон.
S>Пара замечаний:
S>1. Я бы поменял имя метода на Update. Transform обычно используется как "чистая" функция, которая возвращает новый результат. Вариант с Replace тоже неплох.
Да, пожалуй Update более удачное название.
S>2. Неплохо бы добавить дебаг-ассерты для индексов и для проверки на null. Всегда лучше, когда ошибка всплывает сразу, а не в середине перебора.
Это решается атрибутом [NotNull], решарперским анализатором, и административным запретом на комиты с решарперскими варнингами.
S>Ну и на отрицательный count ассерт нужен в любом случае, это баг. И checked() на вычисление endIndex.
Да, вы правы, но наверное я всё таки не дебажные ассерты, а исключения ArgumentOutOfRangeException кидать буду.
Я бы добавил ассерт и на count == 0 (или возвращал бы false, если перебор не удался). Если окажется, что большинство случаев с count==0 — не ошибка, всегда можно будет убрать.
Думаю всё же не буду. Вроде бы все функции что я знаю, лояльно относятся к нулевой длине, не хотелось бы рвать шаблон.
Re[2]: Трансформация коллекции
Здравствуйте, Sinix, Вы писали:
S>Пара замечаний:
S>1. Я бы поменял имя метода на Update. Transform обычно используется как "чистая" функция, которая возвращает новый результат. Вариант с Replace тоже неплох.
Да, пожалуй Update более удачное название.
S>2. Неплохо бы добавить дебаг-ассерты для индексов и для проверки на null. Всегда лучше, когда ошибка всплывает сразу, а не в середине перебора.
Это решается атрибутом [NotNull], решарперским анализатором, и административным запретом на комиты с решарперскими варнингами.
S>Ну и на отрицательный count ассерт нужен в любом случае, это баг. И checked() на вычисление endIndex.
Да, вы правы, но наверное я всё таки не дебажные ассерты, а исключения ArgumentOutOfRangeException кидать буду.
S>Я бы добавил ассерт и на count == 0 (или возвращал бы false, если перебор не удался). Если окажется, что большинство случаев с count==0 — не ошибка, всегда можно будет убрать.
Думаю всё же не буду. Вроде бы все функции что я знаю, лояльно относятся к нулевой длине, не хотелось бы рвать шаблон.
S>Пара замечаний:
S>1. Я бы поменял имя метода на Update. Transform обычно используется как "чистая" функция, которая возвращает новый результат. Вариант с Replace тоже неплох.
Да, пожалуй Update более удачное название.
S>2. Неплохо бы добавить дебаг-ассерты для индексов и для проверки на null. Всегда лучше, когда ошибка всплывает сразу, а не в середине перебора.
Это решается атрибутом [NotNull], решарперским анализатором, и административным запретом на комиты с решарперскими варнингами.
S>Ну и на отрицательный count ассерт нужен в любом случае, это баг. И checked() на вычисление endIndex.
Да, вы правы, но наверное я всё таки не дебажные ассерты, а исключения ArgumentOutOfRangeException кидать буду.
S>Я бы добавил ассерт и на count == 0 (или возвращал бы false, если перебор не удался). Если окажется, что большинство случаев с count==0 — не ошибка, всегда можно будет убрать.
Думаю всё же не буду. Вроде бы все функции что я знаю, лояльно относятся к нулевой длине, не хотелось бы рвать шаблон.