采用标准库
我的团队有一个用于控制台应用程序的命令解析库。我们周围的每个团队也都有自己的团队。 BCL中没有任何内容,因此我想这很自然。
我看过Mono中的模块,它看起来很牢固,而CodePlex上的模块看起来也不错。可能还有其他一些可行的方法(我很想听听建议)。
真正的问题是:我如何让我的团队和我们周围的其他人承诺只使用一个团队?
解决方案
回答
找到解决方案后,便开始在代码审查中强制使用该解决方案。如果未在新代码中实现,请告诉他们,抱歉,但是我们必须返回并再次执行。如果我们已经有了标准和审查,则实施起来会容易得多。
回答
坦白地说,我们不能让所有人都选择一个解决方案。我们可以提出一个解决方案并指出它的好处,但是最终好处必须要大于他们在当前库中积累的惯性。
为了使他们能够集中在一个图书馆上,我们需要进行管理上的变更,直到找到负责管理所有相关小组的人员为止。说服那个人,为什么每个人都应该使用一个库,然后让它向下过滤。
既然我已经说过了,那为什么重要呢?团队是否通常需要处理其他团队的代码?其他团队是否正在使用会导致代码出现问题的库?这种标准化是纯粹出于标准化的目的,还是存在一些未标准化导致的特定问题?
回答
EBGreen,好点,我应该提到我为什么要这样做。我们的团队经常阅读和编辑周围团队的代码。我的意思是功能团队,而不仅仅是开发/测试/下午部门。
这只是使每个人都慢下来的那些小事情之一。使用团队C的代码?找到了他们的lib,这神秘地不在夜间构建中(另一个问题,但与此无关)。正在审查另一位开发人员的工作?需要弄清楚他们的解析器如何工作。开始一个新项目?需要确定要导入的库。
我认为回答确实表明了解决方案:将库放在非常方便的位置,以便可以将其用于新项目(我怀疑许多现有项目将被修改,或者如果工作正常也不会这样做),并明确使用它的优势。
谢谢!
回答
@ fatcat1111,在这种情况下,绝对要使用标准化的库。至于如何说服其他团队,我可以想到两种方法。首先要指出的是,整个团队的标准化总是会减少编码工作量(为刚接触标准化库的人员减少最初的投入)。其次,尝试说服他们使用功能。希望我们会选择功能最完备的库,这样它将优于其他所有人使用的库。
回答
PowerShell免费提供了出色的命令行解析选项。创建cmdlet时,可以定义属性并使用属性来确定命令行选项。然后,PowerShell运行时将为我们处理输入的解析。
另外,由于PowerShell与.NET对象一起使用,因此命令的结果可以是具有属性和方法的丰富对象。
这是一篇不错的博客文章,展示了如何编写和调试cmdlet。
回答
我推荐NDesk.Options。它利用Lambda函数/ .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);
这样就完成了。
它支持带有自定义分隔符,列表,单值选项和切换选项的键/值对
我们将不会后悔使用它。