Форум программистов, компьютерный форум, киберфорум
nio
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  

Оформление кода и группировка partial-классов

Запись от nio размещена 12.04.2013 в 13:32
Показов 8523 Комментарии 3
Метки c#

Как известно, хороший стиль программирования в том числе подразумевает "удобное" оформление кода.
Вот некоторые принципы:
-размер метода 20+-5 строк
-каждый класс в отдельном файле
-в одном файле не боле 500 строк (дальше разбивка на части c помощью partial)
-объединение(группировка) членов класса по назначению (с помощью region)

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

На данный момент эту проблему удалось решить. Привожу пример создания части к классу Form1 с названием Form1.Add
Итак, порядок действий следующий:
1) Добавляем в проект новый класс с именем Form1.Add.cs
2) Файл создастся как обычный класс, поэтому в коде обязательно нужно добавить ключевое слово partial (имя класса останется Form1)
C#
1
2
3
    partial class Form1
    {
    }
3)Сохраняем и закрываем проект.
4)Открываем блокнотом файл проекта "<project_Name>.csproj" и находим такой код
XML
1
2
3
    <Compile Include="Form1.Add.cs">
      <SubType>Form</SubType>
    </Compile>
5) Строку
XML
1
      <SubType>Form</SubType>
заменяем строкой
XML
1
      <DependentUpon>Form1.cs</DependentUpon>
6) Сохраняем изменения.
7) Открываем проект и наблюдаем сгруппированный класс

Я для удобства перемещаю код приведенный в п.4 в то место, где расположен код файла Form1.cs, но это не обязательно - работает и так

Также следует учитывать, что при работе с файлами вложенными в папки в тег <DependentUpon> указывается только имя класса без указания имени папки
XML
1
2
3
4
    <Compile Include="testfolder\Class3.cs" />
    <Compile Include="testfolder\Class3.1.cs">
    <DependentUpon>Class3.cs</DependentUpon>
    </Compile>
З.Ы. Таким образом можно группировать не только файлы относящиеся к одному классу
Метки c#
Размещено в Без категории
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 3
Комментарии
  1. Старый комментарий
    Аватар для СyberSpec

    Как вариант

    Ну это файл-ориентированный подход какой то. Можно использовать Class View для удобной навигации если уж куча файлов и классов. А по поводу рефакторинга неужели мало встроенных фич самой Visual Studio?
    А в общем взял на заметку, спасибо.
    Запись от СyberSpec размещена 25.07.2013 в 15:32 СyberSpec вне форума
  2. Старый комментарий
    Аватар для ksk
    Спасибо, полезно, пригодилось.
    Запись от ksk размещена 06.11.2013 в 19:26 ksk вне форума
  3. Старый комментарий
    Аватар для ViterAlex
    Спасибо. Давно думал, как навести порядок с partial классами
    Запись от ViterAlex размещена 27.10.2014 в 23:01 ViterAlex вне форума
 
Новые блоги и статьи
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber. Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru