Где "найти" структуры С#?/как организовать структуры внутри проекта

Я пытаюсь понять, что такое соглашение для размещения структур С# и/или С++ внутри проекта. В нем собственный исходный файл? Если да, существуют ли какие-либо соглашения, которые я должен соблюдать?

В первый год соглашения не обсуждались на самом деле, но, как правило, мы "застревали" структуру везде, где она использовалась, или "чувствовали" наиболее актуальную...

В моем конкретном случае у меня есть пара структур, явно составленных из типов значений, которые будут передаваться по всему конкретному приложению, и это классы, поэтому я не могу сказать, что любой конкретный "area" может требовать любой вид собственности.

Спасибо заранее.

Ответ 1

Вы должны просто создать отдельный файл для каждой структуры или каждой группы связанных структур (я бы рекомендовал по одному для каждой структуры, но иногда это утомительно - если вы их группируете, обязательно запишите его задумчиво).

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

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

Ответ 2

В С++, если структура "принадлежит" определенному классу или интерфейсу или тому подобному, я предпочитаю объявлять его как внутренний тип тому, что ему принадлежит. Если struct является общим протоколом, которым пользуются многие разные классы, я помещаю его в свой собственный .h файл. Если структура является одним из связанных наборов малой структуры, я создаю пространство имен для таких вещей и объявляю все структуры внутри одного файла .h, который предоставляет это пространство имен.

В С# я, вероятно, сделаю эквивалент, как в С++.

Ответ 3

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

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

Ответ 4

Если структура используется для нескольких классов, я помещаю ее в свой собственный файл. Stylecop не жалуется в любом случае. И reshaper имеет рефакторинг для перемещения структуры в собственный файл.