Выделение бенформы Menustrip для повышения ремонтопригодности кода

StackOverflow https://stackoverflow.com/questions/3121007

Вопрос

В формах Windows, C #, .NET 3.5, VS2008 ...

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

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

Запуск метрик кода на весь мой проект, форма попадает в качестве наихудшего индекса ремонтопригодности любого файла проекта. Обычно я не буду слишком догматично послушниму направлению инструмента метрики кода, но в этом случае я полностью согласен.

Согласно метрикам кода, форма нарушает эти лучшие практики:

  1. Слишком много классной муфты
  2. Слишком много строк кода
  3. Общая низкая ремонтопригодность

Возможные решения для изоляции метро от остальной части вида:

  1. Наполните его в усердно
  2. Другие идеи?
Это было полезно?

Решение

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

Убедитесь, что ваши метрики кода не касаются сгенерированного кода или не обращают внимания на плохие метрики в автогенерированном коде.

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

Можете ли вы отключить или отфильтровать вашу кодометрию от Grabbing * .designer.cs, например,?

Если нет, я бы использовал заводский класс, чтобы вы могли создавать эти структуры в одной строке. Сверху вниз к этому, состоит в том, что она снижает функциональность дизайнера. На заводе вы можете назвать каждый компонент на основе шаблона String + «_filemenu», например, чтобы вы могли установить базовое «имя» в заводском конструкторе.

Чтобы уменьшить код SPEW в вашем файле form.cs, рассмотрите больше подходов MVC, чтобы при генерировании дизайнера, скажем private void button1_Click Способ, вы абстрактные бизнес-логики для других методов других классов. Поэтому вместо перемещения всех ваших файлов, button1_Click позвоню InitiateMoveFileMethod( string source, string destination ), Например.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top