2008-09-10 2 views
2

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

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

Реальный вопрос: как мне заставить мою команду и других окружающих нас совершить, чтобы использовать ее?

ответ

2

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

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

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

1

Как только вы найдете решение, вы начинаете заставлять его просматривать отзывы. Если он не реализован в новом коде, скажите им, извините, но вам нужно вернуться и сделать это снова. Если у вас уже есть стандарты и обзоры, это намного проще реализовать.

+0

Мое понимание заключается в том, что это проблема кросс-команды. Если это так, то, если нет перекрестного обзора кода команды, я не уверен, что это решение будет работать. Даже с перекрестным обзором команды, почему другая команда не сделает то же самое и не заставит OP использовать свою библиотеку? – EBGreen 2008-09-10 18:58:46

0

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

Это всего лишь одна из тех мелочей, которые мешают всем. Работа над кодом команды C? Надо отследить их lib, которые таинственно не в ночных строениях (другая проблема, но независимо от этого). Просмотр работы другого разработчика? Нужно выяснить, как работает их парсер. Запуск нового проекта? Необходимо решить, какую библиотеку нужно импортировать.

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

Спасибо!

0

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

0

PowerShell предоставляет отличные возможности синтаксического анализа командной строки. Когда вы создаете командлет, вы определяете свойства и используете атрибуты для определения параметров командной строки. Затем среда исполнения PowerShell обрабатывает разбор входных данных.

Кроме того, поскольку PowerShell работает с объектами .NET, результатом ваших команд могут быть богатые объекты со свойствами и методами.

Here - хорошее сообщение в блоге, демонстрирующее командлеты и отладки командлетов.

0

Я рекомендую NDesk.Options. Это делает использование лямбда-функций/.NET 3.5, и это очень приятно :

http://www.ndesk.org/Options Что вы в основном это:

var p = new OptionSet() { 
    { "file=",  v => data = v },<br> 
    { "v|verbose", v => { ++verbose } },<br> 
    { "h|?|help", v => help = v != null },<br> 
}; 
List<string> extra = p.Parse (args); 

И вы сделали.

Он поддерживает пар ключ/значение с пользовательскими разделителями, списки опций отдельных значений и переключения опций

Вы не пожалеешь использовать его.

Смежные вопросы