我知道每种编程语言都有一定的指导和风格。我的问题是关于我编写代码的两种语言,这种语言不是很受欢迎或记录在案。
我知道这个话题非常广泛,每个人都有自己独特的做事方式。我想要的是听到某些风格的优点,缺点。
为了探索这个问题,想象一下你正在编写自己的编程语言,根据你过去的经验,最好的方法是什么?
请记住,基于特定语言可能有起伏,所以请考虑这种语言是否无关紧要。我仍然很喜欢编程,所以我想养成使代码可读且易于理解的最佳习惯。
有很多话题需要讨论,我可以通过基础知识运行:
全局变量
它们应该以_开头并全部大写吗?
本地变量
它们应该以_结尾并始终是小写的吗?
变量名称
如果我定义的是雇员的小时工资,那么它应该是EmployeeHourlyWage,Employee_Hourly_Wage吗?
变量类型
如果你在名称中包含变量的类型,例如,如果我定义$ Hours并且它已经存储了一个整数,我应该将它命名为$ Hour_INT,以便我知道它何时引用它是什么类型?谁知道,我可能有$ Hours_FLOAT
Curly Brackets
括号应该与自己排列这样的话,还是什么?哪一个是最好的,首选的,最具可读性的?
IF ($Test) {
//code
} ELSE {
//code
}
IF ($Test)
{
//code
} ELSE {
//code
}
IF ($Test)
{
//code
}
ELSE
{
//code
}
对齐
我一直在排列变量和它们的值,所以我知道它在哪里。这是不好的做法:
// Assuming GUI(TOP, LEFT, HEIGHT, WIDTH)
GUI( 23 , 44 , 245 , 2323 )
GUI( 232 , 4332 , 22 , 6576 )
GUI( 21 , 4 , 1 , 5 )
GUI( 34235 , 13 , 31237 , 4564665 )
// OR
GUI(23,44,245,2323)
GUI(232,4332,22,6576)
GUI(21,4,1,5)
GUI(34235,13,31237,4564665)
缩进
为什么有些程序员使用空格而不是标签?是否有推荐的空间?
我理解所有这些都可能是他们自己的问题。我不知道从哪里获得所有这些知识?我可以花几个小时来问你最好的方法是什么。我相信我接受的大学课程越多,就会越多(或没有)。
如果有一个网站,各种程序员谈论/讨论/评价/维基编程的最佳方法和实践,那将是非常棒的。还有助于服务未来的语言,以更好地满足需求。我想如果有一种正确的方法,那么语言和风格就不会有那么多变化。我只是想知道你的论点和主流是什么,所以我的同事知道我在编码。
答案 0 :(得分:8)
这些都是非常主观的问题 - 人们大多数不同意关于这些事情,说实话,这真的无关紧要! : - )
我会说你唯一能做错的事情就是你对使用的模式不一致。
答案 1 :(得分:1)
我认为这完全取决于个人品味。
尽可能使用您认为符合的编码风格。
当您在团队中工作时,尽量使用相同的编码约定,除非您希望代码混乱。
如果你真的不知道选择什么样的惯例,请选择一个受欢迎的惯例:无论是google,Richard Stallman还是无所谓:只是尽量保持一致。
在过去的几年里,我的演变很可能也是如此。
以下是我的建议:您应该首先专注于编写良好且可维护的代码;存在修复/改变编码风格的工具。
答案 2 :(得分:0)
在您的团队中拥有一个共同的标准,并始终如一地遵循您的团队。确保它是可读和可理解的。在所有代码供我们人类阅读之后.. :)无论如何计算机使用目标代码..
按照这些并记录下来。
如果守则可以理解就足够了。
如果新的木匠能够根据您提供的文件了解您的代码,那么您就擅长了。
我认为这已经足够了。虽然这是我的意见.. :)
答案 3 :(得分:0)
对于Java,大多数人似乎遵循基于本文档中描述的事实标准的样式:Code Conventions for the Java Programming Language。
对于变量名,这意味着使用驼峰大小写,从小写字母开始,例如:employeeHourlyWage
。对于static final
值(常量),请使用全部大写和单独的下划线,例如:EMPLOYEE_HOURLY_WAGE
。
不要使用下划线启动全局变量,不要使用下划线结束局部变量。不要在变量名称中包含变量类型的某些缩写(这样做称为Hungarian notation)。
我更喜欢以下支架样式:
if (condition) {
// do something
}
else {
// do something else
}
在Java中最常使用4个空格缩进。
我同意其他答案,即一致性比您选择的特定风格更重要。对于Java,最好选择基于上述文档的样式,因为这将是大多数Java程序员所期望的样式,以及标准Java库和几乎所有开源Java库中使用的样式。
对于C,GNU coding standards可能是一件好事。
答案 4 :(得分:0)
以下是我的想法。其他人会不同意,但正如我认为已经指出的那样,最重要的是要保持一致。
全局变量:我没有特殊的命名约定,主要是因为我尽量避免使用它们。在我的C代码中,我确实使用具有静态范围的变量,即在编译单元中可见,但我再也不打扰任何命名约定。
我倾向于使用Java大小写约定,即实例,变量,成员等使用带有小写首字母的camelCase。类,结构,typedef类型使用带有大写首字母的CamelCase。
我避免使用任何类型的前缀和后缀。事实上,自从我不得不调试一个有大约二十个实例变量的C ++类以来,我厌恶前缀,所有这些变量都以“m_lpsz”开头,因此几乎无法区分。我知道查尔斯西蒙尼是一个天才,但他应该为匈牙利乐谱而被枪杀。
为您提供有关变量的信息的前缀和后缀也是不可维护的。您需要能够更改变量的类型或变量的范围,而无需进行全局搜索并替换其名称,因为您可以保证有一天某个人急于做一个没有另一个然后然后这个变量就在说它是什么。
大括号:我认为,如果K& R第1版没有使用K& R支架式并且有人试图现在介绍它,我们会认为它们是疯了。当终端有25行(或者实际上是打印输出的电传打字机)时,我可以看到它的理由,但是没有理由再使用那种风格。我发现它使代码看起来密集而混乱。
对齐:您的第一个示例更易于阅读。您认为答案是什么?
Spaces,tabs:我使用标签,因为输入1个标签比4个空格更快。我认为我可能在这方面有错,但另一方面,使用代码重新格式化,标签导致的问题(有些人设置每四个停止的标签,有些人每8个空格)可以很快纠正。
答案 5 :(得分:0)
我认为你能做的最好的事情是尝试一些记录良好的编码风格,选择你最喜欢的,然后始终如一地使用它。
有很多样式:http://en.wikipedia.org/wiki/Indent_style
也许以K& R为基础的款式最受欢迎,所以尝试其中之一并不是一个坏主意 我个人的选择是KNF。