Категории: Все - код - объекты

по Дмитрий Сергеевич Петров 2 лет назад

143

Рекомендация по написанию кода C#

При разработке на C# важно придерживаться рекомендаций, чтобы создать качественный и поддерживаемый код. Используйте ключевое слово dynamic только для объектов этого типа, и избегайте LINQ для простых выражений.

Рекомендация по написанию кода C#

Рекомендация по написанию кода C#

РЕКОМЕНДАЦИИ ПО ПРОЕКТИРОВАНИЮ

AV1240 Используйте общие ограничения, если возможно а
AV1235 Не отправляйте null в качестве аргумента при вызове события
AV1230 Использование событий уведомления об изменении свойств
AV1225 Для обработки каждого события используйте защищенный виртуальный метод тема
AV1220 Всегда проверяйте делегат обработчика события на null
AV1205 Генерируйте настолько специфичное исключение, насколько это возможно
AV1200Генерируйте исключение вместо возвращения статусного сообщения
AV1215 Обрабатывайте исключения в асинхронном коде должным образом
AV1210 Не игнорируйте ошибку путем обработки общих исключений
AV1202 Обеспечьте полное и осмысленное сообщение об исключении

РЕКОМЕНДАЦИИ ПО ПРОЕКТИРОВАНИЮ ЧЛЕНОВ КЛАССА

AV1137 Определяйте параметры настолько специфичными, насколько это возможно
AV1135 Свойства, методы или аргументы, которые представляют из себя строку или коллекцию, никогда не должны быть равны null
AV1125 Не выставляйте объекты, описывающие состояние, посредством статических членов
AV1115 Метод или свойство должны иметь единственное предназначение
AV1110 Не используйте взаимоисключающие свойства
AV1105 Используйте метод вместо свойства
AV1100 Свойства класса должны иметь возможность быть установленными в любом порядке

РЕКОМЕНДАЦИИ ПО ОФОРМЛЕНИЮ

AV2407 Будьте осторожны с использованием ключевого слова #region
AV2406 Располагайте члены класса в строго определенном порядке
AV2402 Располагайте и группируйте пространства имен в соответствии с названием компании
AV2400 Используйте общие правила оформления

РЕКОМЕНДАЦИИ ПО СОЗДАНИЮ ДОКУМЕНТАЦИИ

AV2318 Не используйте комментарии для отслеживания работы, которая должна быть сделана позднее
AV2316 Пишите комментарии только для того, чтобы объяснить комплексные решения и алгоритмы
AV2310 Избегайте инлайновых комментариев
AV2307 Используйте MSDN стиль написания документации
AV2305 Документируйте все public, protected и internal типы и члены
AV2306 При написании XML документации помните о другом разработчике
AV2301Пишите комментарии и документацию на американском английском

ПО ПРОЕКТИРОВАНИЮ КЛАССОВ

AV1025 Классы должны иметь состояние и поведение
AV1020 Избегайте двунаправленной зависимости
AV1014 Объект должен обладать ограниченным знанием о других объектах, которые не имеют непосредственного отношения к этому объекту
AV1013 Не ссылайтесь на производные классы из базового класса
AV1008 Избегайте статических классов
AV1011Функции, которые используют базовый тип, должны иметь возможность использовать подтипы базового типа, не зная об этом
AV1010 Не скрывайте унаследованные элементы за ключевым словом new
AV1005 Используйте интерфейс для реализации слабой связанности между классами
AV1004 Используйте интерфейс, а не базовый класс, чтобы поддерживать несколько реализаций
AV1003 Интерфейс должен быть небольшим и должен быть сфокусирован на решении одной задачи
AV1001 Создавайте новые экземпляры класса с помощью конструктора таким образом, чтобы в результате вы получили полностью готовый к использованию объект
AV1000Класс или интерфейс должны иметь единственное предназначение

РЕКОМЕНДАЦИИ ПО ИСПОЛЬЗОВАНИЮ ФРЕЙМВОРКА

AV2235 Старайтесь использовать async/await вместо Task
AV2230 Используйте ключевое слово dynamic только при работе с объектами этого типа
AV2221 Используйте лямбда-выражения вместо делегатов
AV2220 Избегайте использования LINQ для простых выражений
AV2215 Тщательно заполняйте атрибуты в файле AssemblyInfo.cs
AV2210 Осуществляйте сборку с наивысшим уровнем предупреждений
AV2207 Не оставляйте в коде строки, которые должны быть изменены во время развертывания приложения
AV2205 Тщательно задавайте названия свойств, переменных или полей, ссылающихся на локализованные ресурсы
AV2201 Используйте псевдонимы типов C# вместо типов из пространства имен System

РЕКОМЕНДАЦИИ ПО ПОВЫШЕНИЮ ПРОИЗВОДИТЕЛЬНОСТИ

AV1830 Избегайте использования await/async с Task.Wait
AV1835 Опасайтесь взаимной блокировки async/await в однопоточном окружении
AV1825 Используйте Task.Run для высокоинтенсивных задач
AV1820 Используйте async только для долговременных и низкоинтенсивных задач
AV1800 Используйте Any(), чтобы проверить IEnbmerable на пустоту

РЕКОМЕНДАЦИИ ПО ИМЕНОВАНИЮ

AV1709 При именовании параметров универсальных типов используйте описательные имена
AV1745 Именуйте группы методов расширений в классе с использованием суффикса Extentions
AV1725 В названиях пространств имен используйте имена собственные, названия модулей (слоев), глаголы и слова, описывающие особенности данного пространства имен
AV1715 Не ленитесь давать подходящие названия свойствам
AV1712 Избегайте коротких имен или имен, которые можно спутать с другими наименованиями
AV1704 Не включайте числа в наименования переменных, параметров и типов
AV1709 При именовании параметров универсальных типов используйте описательные имена
AV1710 Не повторяйте имя класса или перечисления в названиях их членов
AV1705 Не используйте префиксы в названиях полей
AV1702 Для каждого элемента языка используйте соответствующую нотацию
AV1701 Используйте американский английский язык
AV1708 Именуйте типы, используя словосочетания из существительных или прилагательных
AV1711 Давайте элементам такие названия, которые схожи с элементами связанных с ними классов .NET Framework
AV1710Не повторяйте имя класса или перечисления в названиях их членов

РЕКОМЕНДАЦИИ ПО УЛУЧШЕНИЮ СОПРОВОЖДАЕМОСТИ КОДА

AV1537 Заканчивайте каждый блок if-else-if объявлением else
AV1532 Избегайте вложенных циклов
AV1523 Предпочитайте инициализаторы объектов и коллекций раздельной установке свойств и раздельному добавлению новых объектов в коллекцию
AV1502 Избегайте двойного отрицания
AV1564 Не создавайте методы, которые принимают в качестве параметра логическое значение
AV1540 Старайтесь избегать нескольких объявлений return
AV1555 Избегайте использования именованных аргументов
AV1568 Не используйте параметры в качестве временных переменных
AV1561Не допускайте, чтобы метод или конструктор принимал более трех параметров
AV1545 Не используйте блок if-else вместо простого (условного) присваивания
AV1535 Всегда используйте конструкции if, else, while, for, foreach и case с фигурными скобками
AV1553Используйте необязательные аргументы только для того, чтобы заменять перегрузки
AV1525 Не производите явного сравнения с trueили false
AV1530 Не изменяйте переменную цикла for или foreach внутри тела цикла
AV1522Присваивайте значение каждой переменной в отдельном объявлении
AV1520 Используйте var только тогда, когда тип переменной очевиден
AV1521 Объявляйте и инициализируйте переменные как можно позже
AV1515Не используйте «магические» числа
AV1510 Используйте using вместо указания полной ссылки на тип из другого пространства имен
AV1508 Наименование файла с исходным кодом, который содержит частичный тип данных, должно отражать назначение этой части
AV1505 Наименование сборки в её названии должно идти после наименования её пространства имён
AV1507Ограничивайте содержимое файла с исходным кодом одним типом данных
AV1506 Называйте файлы с исходным кодом в соответствии с тем типом данных, который он содержит
AV1501 Создавайте все члены класса private, а типы internal по умолчанию
AV1500В методе не должно быть более 7 объявлений