littleguga
@littleguga
Не стыдно не знать, а стыдно не интересоваться.

Как часто Вы разбиваете описание одного класса на несколько файлов через partial?

Чем плох этот подход? Пока я вижу только плюсы.
Также иногда разбиваю ui функции по отдельным файлам - нормально это? Или как и куда(в какой класс) прописывать функции ui(клик по кнопке, drag&drop на окно и т.д.)
  • Вопрос задан
  • 309 просмотров
Решения вопроса 4
petermzg
@petermzg
Самый лучший программист
В моих проектах partial присутствует только для классов описания форм в WinForms.
И явно он больше и не нужен. Классы нужны для какого-то конкретно функционала и если в одном классе кода становится столько, что у добнее разбить на файлы, то явно такой класс можно разбить и на более мелкие классы.
Ответ написан
Nipheris
@Nipheris Куратор тега C#
Поддержу Петр . В целом, если говорить более формально, partial удобен, если:
1) часть определения класса является генерируемой - что как раз и есть случай с WinForms. Другой пример - генерация интерфейса/определения класса для какого-нибудь веб-сервиса. На 100% не помню, но кажется генератор RAML для ASP.NET WebAPI именно так и делает.
2) когда класс настолько большой, что пора бы уже разбить на два, но вы не можете этого сделать (слишком сложный рефакторинг, или нужно поддерживать совместимость); ну т.е. эдакое грубое решение проблемы. Если вы пишете весь класс руками, то определенно лучше стремиться к тому, чтобы его определение можно было охватить в рамках одного не слишком большого файла.
Ответ написан
Комментировать
@carbon88
.NET developer/ORM developer
Разбиваем. Ничего плохого не вижу, все зависит от класса, как и везде главное не переборщить.

У нас есть классы, которые берут на себя много работы и, соответственно, в них много кода. его нужно как-то группировать по функциям. тут либо делать region-ы либо распихать по файлам и обозначить класс как partial

приведу простой пример когда я бы разделил. есть класс, у него есть какие-то методы отвечающие за работу, свойства, поля и сравнительно большое количество event-ов. вероятность того что эти самые эвенты будут часто просматривать не очень велика, в основном смотрят методы потому что в них основная работа. соответственно чтобы эти эвенты глаза не мозолили их можно:
1) запихать в region и свернуть. но! это дело у кого-то будет свернуто у кого-то нет, при поиске по файлу регион, опять таки, может быть развернут и его опять нужно свернуть. неудобненько.
2) договориться убирать эти эвенты в самый конец файла. но! они же когда-нибудь могут понадобится и листать в конец не очень приятно.
3) сделать класс partial и переместить часть с эвентами в отдельный файл. в какой нибудь SuperAwesomeClass.Events.cs. что мы этим добьемся? расчистим основной файл от редко просматриваемых членов класса, группируем некий код по смыслу, получаем быстрый доступ к эвентам если нам понадобится в них заглянуть и они точно будут все и в одном месте.

но это лишь мое имхо.
Ответ написан
Комментировать
@dmitryKovalskiy
программист средней руки
Еще один пример использования partial - расширение функциональности классов-сущностей из Entity Framework.
В собственных классах в 99% не использую, хотя в коде проекта видел контроллер MVC разделенный на 3 файла из-за разростания кол-ва Action, но я считаю это плохой практикой. Для схлопывания больших классов используем регионы (#region) с заранее согласованными именами( закрытые поля, события, публичные методы и т.д.)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
master2016
@master2016
Всё нормально.
Никогда в жизни не разбивал. Ни разу! Может быть потому, что никогда не кодил на C#? :-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы