Мы пытаемся использовать стандарт кодирования IDesign С#. К сожалению, я не нашел исчерпывающего документа, объясняющего все правила, которые он дает, а также его книга не всегда помогает.
Вот открытые вопросы, которые остаются для меня (из главы 2, Практика кодирования):
- Нет. 26: Избегайте предоставления явных значений для перечислений, если они не являются целыми степенями 2
- Нет. 34: Всегда явно инициализировать массив ссылочных типов, используя цикл for
- Нет. 50: Избегать событий как членов интерфейса.
- Нет. 52: Предоставление интерфейсов в иерархиях классов
- Нет. 73: Не определять ограничения, специфичные для метода в интерфейсах
- Нет. 74: Не определяйте ограничения в делегатах
Вот что я думаю о них:
- Я думал, что предоставление явных значений было бы особенно полезно при добавлении новых членов перечисления в более поздний момент времени. Если эти члены добавляются между другими уже существующими членами, я бы предоставил явные значения, чтобы убедиться, что целочисленное представление существующих членов не изменяется.
- Не знаю, почему я хотел бы это сделать. Я бы сказал, что это полностью зависит от логики моей программы.
- Я вижу, что есть альтернативный вариант предоставления "Sink interfaces" (просто предоставление уже всех методов "OnXxxHappened" ), но в чем причина предпочтения друг от друга?
- Непонятно, что он здесь означает: может ли это означать "При реализации интерфейса явно в непечатаемом классе подумайте о том, чтобы обеспечить реализацию в защищенном виртуальном методе, который можно переопределить"? (см. Программирование компонентов .NET 2nd Edition, конец главы "Интерфейсы и иерархии классов" ).
- Я полагаю, что речь идет о предоставлении предложения "where" при использовании дженериков, но почему это плохо в интерфейсе?
- Я полагаю, что речь идет о предоставлении предложения "where" при использовании дженериков, но почему это плохо для делегата?