Код компании - PullRequest
       3

Код компании

1 голос
/ 27 сентября 2010

Я думаю о создании базы кода для моей компании - для хранения библиотек, классов и т. Д., Разработанных сотрудниками внутри компании и вовремя используемых в различных приложениях. Целью будет повторное использование кода во времени. Платформа, на которую я нацеливаюсь - только .NET - winForms, WPF, WEB, Silverlight и другие. Я думал о создании решения, которое содержало бы 2 проекта для каждой технологии - один, содержащий код, а другой - в качестве тестовой площадки для этого кода. Каково было бы лучшее решение для обработки всех этих различных технологий и кода, как вы думаете?

Ответы [ 2 ]

4 голосов
/ 27 сентября 2010

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

Во-первых, вы, вероятно, не хотите создавать «каркас». У вас уже есть .NET Framework. Возможно, вы хотите договориться об общем наборе пользовательских элементов управления. Есть из чего выбирать. Я настоятельно рекомендую вам не писать собственный набор пользовательских элементов управления, которые будут использоваться во многих проектах. Разработка согласованной и согласованной пользовательской библиотеки управления - это огромная работа сама по себе, и наполовину меры, которые работают для конкретного проекта, с треском проваливаются, когда вы пытаетесь переместить их в другие проекты.

Я видел, как консалтинговая компания (которая в основном занималась созданием пользовательских бизнес-приложений .NET для клиентов) пыталась повторно использовать код, и в основном это было не красиво. Взять код, который был написан и работает в одном пользовательском приложении, и перенести его в другое пользовательское приложение гораздо сложнее, чем кажется. Слишком часто этот «общий» фрагмент кода делает предположения об общем приложении или зависит от некоторого кода, специфичного для приложения, и удалить эту зависимость очень сложно.

Теперь, если вы находитесь в среде, где все работают над программами, которые обрабатывают одни и те же типы данных, вы, вероятно, можете использовать общий набор модулей доступа к данным и отчетности, а также некоторые распространенные алгоритмы. Будь здесь осторожен. Любой общий код должен иметь как можно меньше зависимостей. В противном случае потенциальные клиенты (т. Е. Другие программисты) предпочтут кататься самостоятельно, а не «включать мир».

Вы говорите, что хотите создать кодовую базу, которая содержит «библиотеки, классы и т. Д., Разработанные сотрудниками внутри компании и используемые в разных приложениях во времени». Для меня это говорит о том, что вы хотите поделиться кодом между разрозненными проектами или, по крайней мере, взять код, написанный для одного проекта, и использовать его в другом. Это похвальная цель, но часто трудная. Как я указывал выше, существует большая разница между написанием кода, который работает для одного проекта, и написанием кода, который может использоваться несколькими проектами с минимумом зависимостей. Возможно, но сложно. И много времени.

4 голосов
/ 27 сентября 2010

Если вы после повторного использования кода, вы должны определить общность, независимо от того, является ли возможный пользовательский интерфейс WinForms, WPF, Silverlight, WebForms или чем-то еще.

Например, если у вас был класс, который рассчиталпогашение кредита, вы не хотите иметь версию для каждой технологии.Вы просто хотите, чтобы dll можно было использовать где угодно, передать запрос и получить результат.

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

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

...