【发布时间】:2009-01-17 22:20:07
【问题描述】:
你认为 x、y、z 是好的变量名吗?你将如何解释一个新程序员编写可读的代码?
【问题讨论】:
-
这方面有很多话题:stackoverflow.com/questions/…
标签: naming-conventions variables
你认为 x、y、z 是好的变量名吗?你将如何解释一个新程序员编写可读的代码?
【问题讨论】:
标签: naming-conventions variables
可读代码是指 cmets 与变量和函数命名的某种组合,它允许我阅读代码一次并理解它。如果我必须不止一次地阅读它,或者花时间处理复杂的循环或函数,那么还有改进的余地。
文件和类顶部的良好摘要描述有助于为读者提供上下文和背景信息。
清晰的名称很重要。冗长的名称使得用更少的 cmets 编写可读的代码变得更加容易。
编写可读代码是一项需要一些时间来学习的技能。我个人喜欢过于冗长的名称,因为它们会创建自我记录的代码。
【讨论】:
如前所述,x、y 和 z 是 3D 坐标的好变量,但可能对其他任何东西都不好......
如果有人不认为名称很重要,只需在某些代码上使用代码混淆器,然后让他们调试它:-)。
(顺便说一句,恕我直言,这是代码混淆器有用的唯一情况)
【讨论】:
每种编程语言的约定似乎略有不同;然而,这些天来的共识是......
这是 Microsoft 发布的 .NET 标准命名约定的 decent recap
python 的发明者发布了一个包含命名约定的style guide。
曾经有一段时间,Microsoft VC++ 开发人员(包括我自己)实际上围绕着所谓的Hungarian Notation 团结起来
【讨论】:
当然,对此有多种思想流派,但我只会将这些用于计数器,并建议为任何其他变量提供更具描述性的名称。
【讨论】:
x、y 和 z 可以是非常好的变量名。例如,您可能正在编写参考 3D 笛卡尔坐标系引用它们的代码。这些名称通常用于此类系统中的三个轴,因此非常适合。
【讨论】:
我会给他们一些代码的维护工作,其中包含名为 x、y、z 的变量,并让他们自己意识到可读性是至关重要的......
95% 的代码查看的不是作者,而是每个人都忘记的客户——下一个程序员。你有责任让她过上轻松的生活。
【讨论】:
好的变量名准确地描述了它们是什么,而不会过于复杂。我总是使用描述性名称,即使在循环中也是如此(例如,index 而不是 i)。它有助于跟踪正在发生的事情,尤其是当我正在重写一段特别复杂的代码时。
【讨论】:
好吧,给他们一大块糟糕的代码,然后让他们调试它。
取如下代码(简单示例)
<?php $a = fopen('/path/to/file.ext', 'w');$b = "NEW LINE\n";fwrite($a, $b);fclose($a);?>
错误是:文件应该是日志时只包含 1 行 问题:fopen 中的 'w' 应该是 'a'
这显然是一个超级简单的例子,如果你想给他们一个更大更复杂的例子,给他们WMD source 并要求他们在 2 小时内给你可读的代码,它会明白你的意思。
【讨论】:
只要 x、y 和 z 是 (3D) 笛卡尔坐标,那么它们就是好名字。
类似地,i、j 和 k 对于循环变量也是可以的。
在所有情况下,变量名都应该与数据相关
【讨论】:
如果 x,y 和 z 表示 3d 坐标,或者如果它们用于迭代 2 或 3 维数组,则它们是可接受的变量名称。
就我而言,这段代码很好:
for(int x = 0; x < xsize ; x++)
{
for(int y = 0; y < ysize ; y++)
{
for(int z = 0; z < zsize ; z++)
{
DoSomething(data[x][y][z]);
...
【讨论】:
这是一个简短的答案,但对我来说效果很好:
如果它将需要一个代码注释来描述它,那么重新考虑变量名。
所以如果很明显,为什么选择“x”,那么它们就是好名字。例如。 “i”作为循环中的变量名(通常)非常明显。
【讨论】:
理想的变量名既简短(使代码更紧凑)又具有描述性(有助于理解代码)。
对于两者中哪一个更重要,意见不一。就个人而言,我会说这取决于变量的范围。仅在 3 行循环内使用的变量可以避免成为单个字母。 500 行类中的类字段最好是非常具有描述性的。 Spartan Programming 理念说,所有代码单元都应尽可能小,以使变量名可以非常短。
【讨论】:
可读的代码和好的命名约定不是一回事!
一个好的变量名称是让您在不查看使用它的上下文的情况下理解(或合理猜测)变量的用途和类型的名称。因此,“x”、“y”和“z”表示坐标,因为这是一个合理的猜测。相反,一个坏名字会导致你做出错误的猜测。例如,如果“x”、“y”和“z”代表人。
函数的一个好名称是传达您需要了解的有关它的所有信息,而无需查阅其文档。这并不总是可能的。
可读代码首先是其结构可以理解的代码,即使您混淆了所有变量和函数名称。如果您这样做并且无法轻松弄清楚控制结构,那您就完蛋了。
一旦您拥有可读的代码和良好的命名,那么也许您将拥有真正可读的代码。
【讨论】: