2008-09-06 80 views
5

我正在为约15名开发人员编写一个编码标准文档,每年的项目负载为10至15个项目。在其他章节中(我可能会在这里发帖),我正在编写一段代码格式。所以,首先,我认为明智的是,无论出于何种原因,我们都建立了一些基本的,一致的代码格式/命名标准。标准文件

我已经看过过去3年中写过的大约10个项目,显然我找到了很多风格。承包商有时进出,有时甚至是团队规模的两倍。

我正在寻找一些代码格式化和命名标准的建议,这些建议确实得到了回报......但这也确实是有道理的。我认为一致性和共享模式可以大大提高代码的可维护性......但是,在定义所述标准时,我还应该考虑其他事情吗?

  • 你如何排列括号?在处理类,方法,尝试catch块,switch语句,if else块等时,你遵循相同的括号指导原则吗?

  • 你是否在列上排列字段?你是否用下划线注释/前缀私有变量?你是否遵循任何命名规则,以便更容易地找到文件中的详细信息?你如何订购你的班级成员?

那么对名称空间,包装或源代码文件夹/组织标准的建议呢?我倾向于开始是这样的:

<com|org|...>.<company>.<app>.<layer>.<function>.ClassName 

我很好奇,看看是否有其他的,比较公认的,实践比我习惯了 - 之前我冒险离开支配这些标准。已经在线发布的标准的链接也会很好 - 即使我已经做了一些。

回答

3

首先找到一个适用于您的语言的自动代码格式化程序。原因:无论文件如何,人们都会不可避免地违反规则。通过格式化程序运行代码要比在代码审查中挑选代码要容易得多。

如果您使用的是具有现有标准(例如Java,C#)的语言,那么最简单的方法就是使用它,或者至少从第一份草稿开始。 Sun在格式化规则中考虑了很多,你不妨利用它。

无论如何,请记住,许多研究表明,支撑位置和空白使用等不同的事物对生产力或可理解性或流行性缺陷没有可衡量的影响。只要有任何标准是关键。

1

这显然取决于语言和技术。通过你的示例名字空间的外观,我将猜测java,在这种情况下,http://java.sun.com/docs/codeconv/是一个非常好的开始。你可能也想看看maven的标准目录结构,这将使你的所有项目看起来很相似。

2

我要第二个杰森的建议。

我刚刚完成了一个主要用于perl的10-12团队的标准文档。该文件表示使用“类似于复杂数据结构的类似于缩进的缩进”。我们还向每个人提供了可以清理他们的代码以满足此标准的示例perltidy设置。这个语言非常清晰并且非常符合行业标准,所以我们在团队中有很大的收获。

在着手撰写本文档时,我问了一些有关我们仓库中优秀代码的示例,并搜索了一些其他标准文档,这些文档比我更聪明,以构建模板。这是艰难的简洁和务实,没有跨越微管理区域,但非常值得;有任何标准确实是关键。

希望它能解决问题!

3

从汽车行业的到来,这里是用于具体原因几个风格标准:

控制结构始终使用大括号,然后把它们放在单独的行。这消除了人们添加代码并将其包括在内的问题,或者将其错误地包含在控制结构中。

if(...) 
{ 

} 

所有开关/选择都有一个默认情况。如果不是有效路径,则默认情况下会记录错误。

出于与上述相同的原因,任何if ... elseif ...控制结构必须以其他默认值结束,如果它不是有效路径,也会记录错误。单个if语句不需要这个。

在环形或控制结构有意为空的偶然情况下,总是放置一个分号以表示这是有意的。

while(stillwaiting()) 
{ 
    ; 
} 

命名标准对typedef,定义的常量,模块全局变量等有很不同的样式。变量名包括类型。你可以看看这个名字,并且了解它的属性,范围和类型。这使得它很容易检测到类型相关的错误等。

还有其他的,但这些都是我的头上。

-Adam