Что должно быть включено в стандарт программирования C#?

Мне было поручено написать стандарт программирования на C# для нашего отдела (включая рекомендации). Какие стандарты / руководящие принципы я должен включить? Я уже взял фрагменты из различных стандартов в сети (и фрагменты из Code Complete), но я хотел бы услышать от разработчиков в этой области.

У меня уже есть: Соглашения об именах - Общие / Переменные / Классы / Методы / Интерфейсы / Элементы управления

Общие методы программирования - документация (комментарии и т. д.), [WIP]

Практики объектно-ориентированного программирования - инкапсуляция, [WIP]

Что еще было бы полезно? Что я не должен включать?

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
0
440
3

Ответы 3

Вы уже предлагали всем прочитать «Рекомендации по дизайну для разработчиков библиотек классов»? Это покрывает большую часть этого. Кроме этого, я бы хотел забить домой:

  • Вы должны очень редко создавать свои собственные структуры. Не думайте о них как о легких классах.
  • Структуры никогда не должны быть изменяемыми.
  • Поля всегда должны быть закрытыми, за исключением полей только для чтения, где тип поля неизменяемый.
  • Пытайтесь программировать без блокировок только в том случае, если вы уверены, что более простое решение будет слишком медленным - и у вас есть доказательства!
  • Читаемость - это король
  • Помните о культурных проблемах - в частности, прочтите Microsoft Рекомендации по обработке строк

Я буду добавлять больше, когда думаю о них ...

Информация о том, как обрабатывать пространства имен, соглашения об именах сборок / проектов / решений, соглашения об именах файлов .. группировка элементов (например, у вас есть и элемент, и элемент, они находятся в одном файле?)

  • Рекомендации по именам файлов
  • Рекомендации по именованию / организации пространств имен
  • Рекомендации по дизайну и архитектуре, такие как использование интерфейсов для создания сцепления вшей и упрощения юнит-тестирования (например, для внедрения зависимостей и имитации)
  • Консультации по поводу того, когда нужно проводить рефакторинг (длинные методы и т. д.)
  • Именование и регистр для параметров
  • Рекомендации по модульному тестированию (если вы его используете) и по издевательству
  • Группировка элементов (например, у вас есть как общая, так и не универсальная реализация класса, находятся ли они в одном файле или в отдельных файлах в соответствии с соглашением об именах?)
  • Как обрабатывать сторонние зависимости
  • Содействие использованию таких инструментов, как FxCop, StyleCop и других показателей.

Просто пара вещей из моей головы

Полезны руководства по максимальной длине метода, максимальному размеру класса и максимальному местоположению в исходном файле.

Кроме того, вы можете установить некоторые рекомендации по отступам, макету кода и тому подобному, но мне было проще просто сделать это с настройками в Visual Studio, а затем попросить ваших разработчиков импортировать для этого тот же файл настроек. Таким образом, людям не нужно думать об этом, и Visual Studio сделает всю работу за них.

FXCop и подобные инструменты также могут автоматически проверять лучшие практики. Поэтому полезно распространять рекомендации по этому поводу, просто делая доступные файлы FXCop, которые проверяют все правила, которые вас интересуют. Не вводите большие проверки FXCop в большой существующей кодовой базе, хотя попытайтесь увеличить количество проверок в течение определенного периода времени, чтобы люди не столкнулись с тысячами ошибок FXCop.

Суммируя:

Постарайтесь, чтобы рекомендации были краткими, включайте только то, что действительно важно. Сделайте их легкими для чтения (вы можете написать соглашения об именах в качестве примера класса, например, где вы выделяете все правила с некоторыми дополнительными полями с текстом) И используйте инструменты для автоматизации проверок, где вы можете, чтобы разработчики могли легко и быстро получить обратную связь.

Другие вопросы по теме