Куди подіти загальні спільні методи


9

У мене є маса методів, які часто використовуються скрізь. Зараз код файлу названий глобальними, щоб представити той факт, що вони ... насправді ... глобальні.

Однак мені це не подобається.

Я хочу згрупувати їх у клас і передати інтерфейс навколо. Я зроблю лише один екземпляр, але я тут не потрапляю в сингл-пастку.

Перш за все, що я повинен назвати клас. Я хочу уникати глобальної назви, бо боюся, що суб'єкти господарювання отримають неправильну думку.

Крім того, як я повинен розглянути поділ такого набору методів, щоб поведінка могла змінюватися та адаптуватися?

Набір методів містить такі речі, як:

  • Таблиці переходів
  • Буфер обміну взаємодія
  • Управління вбудованими шрифтами
  • Загальні методи малювання
  • Надання інтерфейсу з доступом до часто використовуваних ресурсів

Це такі, як чисті методи Util, які не зберігають стан або вони зберігають стан?
TheLQ

+1 за те, що не потрапляє в сингл-пастку.
Калеб

@TheLQ Вони не обов'язково зберігатимуть стан, але для зручності зберігатимуть дані про const (наприклад, графіки конверсій).
Лі Лув'є

Відповіді:


4

Простір імен може бути [application].Common.Shared

Класи можна назвати:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

Я би розбив класи, тому що це звучить так, як вони роблять різні речі.


1

Якщо ви збираєтеся зробити один екземпляр, у вас майже сингл. Крім того, те, про що люди зазвичай посилаються, якщо вони говорять про однотонну пастку, це те, що одинаки є глобальними, а більшості класів краще не бути глобальними. Тож у вас може бути сингл. Якщо ви можете обґрунтувати інтерфейс навколо об'єктів, які, можливо, захочуть викликати його, то він насправді не є глобальним.

Крім того, внесення все це в один мішок глобальних методів ускладнює зміну поведінки та адаптацію, оскільки не тільки кожна зміна одного методу потребує нового підкласу, але для кожної комбінації змін знадобиться власний підклас.

Я рекомендую мати одинакові для кожного, який справді є глобальним (я візьму ваше слово, вони всі є) і якийсь реєстр чи завод, який дає вам примірник (це означає, що ви можете реалізувати як одиночний чи ні, оскільки інтерфейс буде не обіцяйте). Я б назвав їх на основі того, що вони роблять з позиції абонента.


1

Я, як правило, розміщую такі типи речей у своїх власних назвах складання, як-то на зразок "foo.Common" під просторами імен, як "foo.Common.Collections" або "foo.common.UI" тощо. Мені вони потрібні.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.