我刚刚毕业的AI(大约2年)为温和的操作工作。 它已跌至我(主要是因为我在系里的第一个“收养人)来创建一个基本(读有用吗?)C#编码标准文档。
我想我应该解释一下,我可能是最初级的软件工程师去,但我期待着这个任务,希望我也许真的能够产生半可用的东西。 我已经做了相当广泛的搜索互联网和阅读什么编码标准文件应该/不包含的文章。 这似乎是一个好地方一样,要求一些建议。
我意识到,我可能打开大门分歧的整个世界关于“做事情的最好方法”。 我都理解和尊重不可否认的事实是每个程序员都有解决每个人的任务的首选方法,因此我不希望写东西这么draconianly禁止性的扼杀个人的天赋,但是,试图得到的一般方法,并同意标准(如命名约定),以帮助个人代码更易读。
所以这里去....有什么建议? 任何在所有?
Answer 1:
我们先从
- 微软的.NET准则: http://msdn.microsoft.com/en-us/library/ms229042.aspx (链接更新的.NET 4.5)
- 微软的C#准则: http://blogs.msdn.com/brada/articles/361363.aspx 。
然后从文件到该基准的差异和补充。
Answer 2:
■设计有常用一个C#编码标准文档。 也看到了框架设计指南第二版 。
Answer 3:
具有讽刺意味的设置实际的标准很可能是比较容易的部分。
我的第一个建议是从其他工程师征求关于他们的感觉应该被覆盖,并且他们觉得什么准则的重要建议。 实施任何形式的指引,需要从人的程度的买入的。 如果你突然在其拖放文档指定如何编写代码,你会遇到阻力,无论你是最初级或高级的家伙。
之后,你有一组的建议,然后再将其发送给团队进行反馈和审查。 再次,让人们都买放进去。
有可能已经是被采用(例如,前缀的成员变量,驼峰函数名)非正式的编码实践。 如果存在,大部分代码符合它,然后它会支付给其正式使用。 采用相反的标准将会导致更多的悲伤比它的价值,即使它一般推荐的东西。
这也是值得考虑的重构现有的代码,以满足新的编码标准的。 这似乎是在浪费时间,但其代码不符合标准可以适得其反,你将有不同样式的大杂烩。 这也使人们左右为难一定的模块中的代码是否符合新标准或遵循现有的代码风格。
Answer 4:
我一直用朱瓦尔·洛的PDF做编码标准/最佳做法的内部时作为参考。 它遵循非常接近的FxCop / 来源分析 ,这是另一种宝贵的工具,以确保该标准被遵循。 这些工具和参考文献之间,你应该能够拿出一个很好的标准,所有开发人员不会介意以下,并且能够强制执行。
Answer 5:
其他海报已经指出你在基线,所有我想补充的是让您的文档很短,甜甜的,重要的是,采用斯特伦克和白色的大剂量,从“这将是很好IFS区分“必备” ”。
编码规范文件的问题是,没有人真正读他们应该像他们,当他们这样做阅读他们,他们不跟着他们。 这样一个文件的可能性被读取并随后与它的长度成反比。
我同意的FxCop是一个很好的工具,但过多的这种可以采取一切的乐趣右出节目,所以要小心。
Answer 6:
不要写你自己的编码标准使用MS的人(或太阳的人或...适合您的语言)。 线索是在这个词的标准,世界将是一个更容易的地方,如果每一个组织还没有决定自己写的代码英寸 谁真的认为,学习一套新的“标准”,每次变更团队/项目/角色的时间是一个很好用的任何人的时间。 你曾经做的最重要的是总结的临界点,但我建议反对这样做甚至认为原因是什么关键从因人而异。 我想其他两个点使上编码标准
- 关闭足够好 - 更改代码遵循编码标准的信是在浪费时间,只要代码是足够接近。
- 如果您要改变代码,你没有写遵循“本地编码标准”,即让你的新代码看起来像周围的代码。
这两点是事实我的愿望,每个人会写,看起来相同的代码。
Answer 7:
我发现下面的文档非常有帮助,简洁。 它来自idesign.net网站,它是由朱瓦尔·洛撰写
C#编码标准
注:上面的链接是已经死了。 为了得到你需要给他们自己的电子邮件地址(但他们不会将其用于营销...诚实)的.zip文件试试这里
Answer 8:
我刚开始在一个地方的编码标准要求的成员变量,P_参数和前缀类型,如字符串“STR”使用M_的。 所以,你可能有这样的事情在方法的主体:
m_strName = p_strName;
可怕。 真是太可怕了。
Answer 9:
我想补充的代码完成2到列表中(我知道杰夫是一种这里风扇)......如果你是一个初级开发者,这本书就派上用场了建立你的头脑中,设置了基础的最佳方式代码编写规范和软件建设也有。
我不得不说,我在我的职业生涯来到有点晚,但它排除了很多我想编码和框架发展我的职业生涯的方式。
这是值得一试;)
Answer 10:
微软自己的规则是一个很好的起点。 你可以用的FxCop强制执行。
Answer 11:
我会被诱惑执行微软的了StyleCop为标准。 它可以在构建时执行。 但如果你有旧的代码然后就执行新的代码中使用了StyleCop。
http://code.msdn.microsoft.com/sourceanalysis
最终,将有一个重构的选择,以清理代码。
http://blogs.msdn.com/sourceanalysis/
Answer 12:
我个人比较喜欢的是一个■设计放在一起。 但是,这不是为什么我张贴...
在我的公司的有点棘手正在采取各种不同语言的考虑。 我知道我的公司是不是独自在此。 我们使用C#,C,组件(我们做的设备),SQL,XAML等。虽然会有在标准有些相似之处,每一个通常处理方式不同。
另外,我认为,更高层次的标准,对最终产品的质量有较大影响。 例如:如何以及何时使用意见,当例外是强制性的(例如,用户发起的事件),是否(或者)使用异常与返回值,目标是什么方法来确定应该是什么控制器代码VS演示代码,等等。不要误解我的意思,还需要低级别的标准(格式是可读性重要!)我只是对整体结构的偏差。
另一块要记住的是买入和执行。 编码标准是巨大的。 但是,如果没有人与他们同意和(可能更重要的是)没有人强制他们,那么这是徒劳的一切。
Answer 13:
正如我写了两个一个公布了飞利浦医疗系统和一个上http://csharpguidelines.codeplex.com我可能有点偏颇,但我对写作,维修器材和促进编码标准10年以上。 我试图在脑海中的不同意见写一个CodePlex上,花了广大如何在您的特定组织处理的介绍。 读它,并给我提供反馈.....
Answer 14:
SSW规则
它包含一些C#标准+一大堆更多....主要集中在微软开发者
Answer 15:
你最有可能被设置为失败。 欢迎业内人士。
我不同意 - 只要他创建文档,可能发生的最糟糕的是,它就会被大家遗忘。
如果其他人有内容的问题,那么你可以要求他们对其进行更新,以显示他们会喜欢什么。 这样,这是你盘子里的,和其他人有责任证明自己的变化。
Answer 16:
我最近发现Encodo C#手册 ,其中包括来自许多其他来源(■设计,飞利浦,MSDN)的想法。
另一个来源可以是专业C#/ VB .NET编码准则 。
Answer 17:
我是弗朗切斯科Balena书“的大风扇实用指南和最佳实践VB和C#开发人员 ”。
这是非常详细,涵盖了所有的基本主题,它不只是给你的规则,而且也解释了规则背后的原因,甚至还提供了防统治那里可能是两个对立的最佳实践。 唯一的缺点是,它是为.NET 1.1开发人员编写的。
Answer 18:
我们整个编码标准大致读取,“使用了StyleCop。”
Answer 19:
看到这一点: http://www.noesispedia.com/post/2008/11/28/C-Coding-Guidelines-and-Best-Practices.aspx 。
Answer 20:
我要建议dotnetspider.com文件。
这是一个伟大的,详细的文件,任何地方是非常有用的。
Answer 21:
我以前用过Juval的,这就是通过如果不是矫枉过正,但我很懒,现在只是顺应意志ReSharper的 。
Answer 22:
你可以看看这个,前7编码标准和指导性文件对于C#/。NET开发http://www.amazedsaint.com/2010/11/top-6-coding-standards-guideline.html希望这有助于
Answer 23:
我想我在这里附和其他意见已链接的MS guidlines是一个很好的起点。 我在我的代码模型主要是那些。
因为我的经理告诉我,在过去这是有趣的是,他是不是对他们太渴望:d
就在你面前,你一个有趣的任务,我的朋友。 祝你好运,并请询问如果你需要什么更多的:)
Answer 24:
从飞利浦医疗系统的标准写得很好,而且大多遵循微软的准则:www.tiobe.com/content/paperinfo/gemrcsharpcs.pdf
我的标准是在此基础上有一些调整,并为.NET 2.0的一些更新(飞利浦标准是.NET 1.x中这么写是有点过时了)。
Answer 25:
我也跟着ReSharper的。 另外,引导线斯科特Guthrie的博客中提到http://weblogs.asp.net/scottgu/archive/2007/10/08/october-8th-links-asp-net-asp-net-ajax-silverlight-and-net的.aspx和http://csharpguidelines.codeplex.com/releases/view/46280
Answer 26:
在代码我写我通常遵循.NET Framework设计准则的公然公开的API和单声道编码准则为私人部件壳体和缩进 。 Mono是.NET的一个开源实现,我认为那些家伙知道他们的业务。
我讨厌微软如何代码浪费空间:
try
{
if (condition)
{
Something(new delegate
{
SomeCall(a, b);
});
}
else
{
SomethingElse();
Foobar(foo, bar);
}
}
catch (Exception ex)
{
Console.WriteLine("Okay, you got me");
}
你可能会发现奇怪的单准则,是他们使用8个空格的标签。 然而,一些练习之后,我发现,它实际上帮助我通过强制执行一种压痕限制少写杂乱代码。
我也很喜欢他们如何把空间打开括号之前。
try {
if (condition) {
Something (new delegate {
SomeCall (a, b);
});
} else {
SomethingElse ();
Foobar (foo, bar);
}
} catch (Exception ex) {
Console.WriteLine ("Okay, you got me");
}
但是,请不要执行类似的东西,如果你的同事不喜欢它(除非你是愿意为单声道;-)
文章来源: Are there any suggestions for developing a C# coding standards / best practices document? [closed]