Идея хорошая - поместите свой код в общую DLL и обратитесь к нему. Мы широко используем этот метод, и он работает. Очевидно, что некоторые проекты со временем будут несинхронизированы, поэтому способ, которым мы это делаем, таков:
- Будьте наименее конкретны, если вы можете использовать универсальные типы, сделайте это. Например, если вы хотите функцию, которая обрабатывает нулевые или нулевые значения и
возвращает что-то, реализуя NullConvert (o как объект, subst как объект) как объект лучше, чем NullConvert (o как объект, String) как
Строка. Затем вы можете добавить другие типы, оставив подпись без изменений. НО, если тип не обрабатывается, будьте конкретны в методе и генерируйте исключения для необработанных типов - не оставляйте на волю случая его работу. В приведенном выше примере проверьте тип возвращаемого значения и проверьте, обрабатывает ли ваша реализация этот тип.
Группировка функций по типу в вашем пространстве имен; MyGeneric.DateFns, MyGeneric.StringFns, MyGeneric.Comms и т. Д.
Не изменяйте функциональность после использования класса или метода, и это может быть небезопасно. Отметьте их как устаревшие и добавьте комментарии, чтобы указать, где был размещен новый / лучший класс.
Вы можете рассмотреть две или более библиотеки, например, Common Methods и Classes в базовой библиотеке, и доменные классы и
функции, которые используют общие методы (из базовой библиотеки) в другой библиотеке (на более высоком уровне). Таким образом, базовая библиотека не должна будет постоянно меняться.
- Рассмотрим использование "Реализации" вместо классов. Если у вас есть функция, которая обрабатывает ArrayList, например, установите
параметр вашего метода, чтобы взять вместо iList. Затем вы можете использовать другие типы списков, если они реализуют iList внутри них.
- Избегайте введения специфики, например, явного драйвера (Oracle 8.x). Оберните это чем-то другим, так что если оно изменится, измените
внутренности объекта-оболочки, а не сам объект.
- Узнайте, как использовать отражение. Допустим, вам нужна функция для получения значений Distinct из массива объектов. Вы можете использовать отражение и
затем передайте имя / имена свойств, для которых вам нужно различаться; GetDistinct (MyList как iList, «Имя») как список (из строки). Ваш код может выглядеть на
параметр под названием «Имя» через отражение (с небольшим снижением производительности).
- Узнайте, как писать расширения (компонентная модель). Например, если вы пишете функцию, которая всегда возвращает септически отформатированный
дата, превратить функцию в функцию расширения. Назовите разумно, если ваша компания называется ABC, то используйте, например, ABCDateFormat, чтобы различать, например, ваши функции и функции MS.
Слишком много нужно сделать, чтобы быть здесь в списке. Это шаг в правильном направлении.