2009-09-15 83 views
3

我在寻找关于编码约定的建议。我使用的主要语言按频率排序为C#,JavaScript和ActionScript。它们都是基于ECMA的语言,因此大部分语法是可以互换的。我想要做的是标准化我编写代码的方式。跨语言编码标准?

我四处寻找编码标准的文档,发现一些作者,包括微软,Adobe,Doug Crockford和我拥有的各种书籍的作者。许多个人标准是相同的。例如,不要使用大写来区分对象标识符。好的听起来不错。

但是,它们在某些方面有所不同,最明显的是我在命名约定中。例如,在命名私有属性时使用下划线,或者在方法名称中使用驼峰套管与Pascal套管。

C#的建议往往会比ActionScript和JavaScript之间的差异更大,这使得它对我来说更加困难,因为它的语言更多,而编写的代码量更大。在IDE中也存在自动格式化的问题(例如,在JavaScript和C#中的功能中放置开放花括号)。

有关如何解决此问题的任何建议?我没有看到任何大的陷阱?我意识到我可能会很迂腐,并且我很幸运能够在一个不需要符合别人标准的环境中工作。我希望能够提高生产力和更多可读代码。谢谢。

+3

C#(ECMA-334)由ECMA标准化,但它不基于ECMAScript(ECMA-262)像JavaScript和ActionScript一样。 – dtb 2009-09-15 16:26:10

+0

开放花括号的放置是IDE中的一个配置选项,默认设置不一定是大多数开发人员遵循的惯例 - 它可能默认使用IDE开发人员使用的方法。您不会说哪种语言与其他语言做的不同,但无论哪种方式,您都可以配置IDE以匹配您的首选方法。如果你不能,改变你的IDE ;-) – NickFitz 2009-09-15 16:33:21

回答

7

尽管事实上都使用尖括号和分号,但在C#中有意义的成语在Javascript中不一定有意义(反之亦然)。

我们使用不同的编码风格 - 大多数情况下,C#的标准Microsoft风格和大部分标准jQuery风格的Javascript。它可能有点奇怪(Pascal与驼峰案例的不相交意味着你有一些C#对象具有“不适当”的外壳,因为它们几乎就像JSON容器一样),但我不会试图去扯皮什么是两种离散语言融合成一个语法。

+0

我已经决定提出自己的编码标准(受到社区的严重影响),但不是试图以所有语言的一种风格来使用shoehorn,我要去创造两个;一个用于C#,另一个用于Javascript/Actionscript(因为它们足够接近我)。感谢每个人的好答案。 – user50494 2009-09-16 20:55:16

6

我会坚持社区或语言创建者提出的标准,而不是试图创建一个跨越边界的标准。否则会导致开发人员对围绕该语言的社区充满热情并积极参与其中。

我们试图在我的一位雇主用Delphi和C#做到这一点,没有人高兴。

0

我很幸运在一个环境中工作,在那里我没有符合别人的标准

我个人不遵循C#微软标准:不是,我所有的方法名称和属性名称使用camelCase(尽管我的类型仍然使用UpperCase)。而且,我装饰我的成员数据(以便它不能与局部变量,属性和/或参数混淆)。

我不明白为什么有必要遵循微软的命名约定; IMO甚至偶尔也是一件好事:不是:当我继承Microsoft类型时,案例(例如'add')将我的方法与Microsoft方法(例如'Add')区分开来,并将其隐藏在底层基类中。当我编写C++时,我不遵循与标准库作者(使用lower_case作为它们的类型,而我使用UpperCase)相同的命名约定。

然而,其他开发者可能/不喜欢它;例如,有人对我在SO上发布的一些答案发表了一些C#代码示例进行了评论,以批评它不是为了它的内容,而是为了它的命名约定。

+2

我不是故意的,但我很高兴我不和你一起工作:-P虽然一致性是编码标准的一个原因,但另一个原因是开发人员熟悉。如果您符合针对特定语言普遍接受的编码标准,那么新开发人员可以更轻松地调整您的代码库。 – 2009-09-15 17:22:23

0

这确实是一个优先选择的问题,因为这正是编码标准:标准。在这里没有明显的对与错,强制每种语言的社区标准都有很多要求,除非你经常使用5种不同的语言,这些语言都有细微差别。你将无法跟上并开始追随任何标准。

我之前做过的是在相同的球场(PHP,Java,Ruby)中使用相同的语言标准,如果使用相同的一组标准是绝对不切实际的,不同的你的大脑也可以做出开关(例如BASH脚本)。

但实际上这是你(和你的团队的其他人)同意的。您无法从一组特定的编码标准中获得生产力,您可以通过与您工作的人员拥有相同的标准来获得生产力。如果你想充分利用顶部有下划线的匈牙利骆驼案例:给你更多的权力,只要确保整个团队这样做;)