Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Coding style 在循环/异常中使用单个字符作为变量名_Coding Style - Fatal编程技术网

Coding style 在循环/异常中使用单个字符作为变量名

Coding style 在循环/异常中使用单个字符作为变量名,coding-style,Coding Style,我和一位同事讨论过在我们的代码库中的某些情况下使用单字母变量名的问题,我们都不同意 他赞成对这些文件采用更详细的命名约定,而我不赞成 我认为使用单字母变量名的情况有三种: 循环(int i=0;ix==5) 异常-e:尝试{…}捕获(异常类型e){/*使用'e'*/} 这些是我将使用它的唯一的场景,我显然在其他地方使用了更详细的命名约定 我的同事对异常和循环提出了以下论点: i-它没有任何意义 e-这是英语中最常见的字母。如果您想在解决方案中搜索异常,您会发现许多不需要的e实例 我接受这

我和一位同事讨论过在我们的代码库中的某些情况下使用单字母变量名的问题,我们都不同意

他赞成对这些文件采用更详细的命名约定,而我不赞成

我认为使用单字母变量名的情况有三种:

  • 循环(int i=0;i<10;i++){…}
  • C#-
    x/y/z
    。其中(x=>x==5)
  • 异常-
    e
    尝试{…}捕获(异常类型e){/*使用'e'*/}
这些是我将使用它的唯一的场景,我显然在其他地方使用了更详细的命名约定

我的同事对异常和循环提出了以下论点:

  • i
    -它没有任何意义
  • e
    -这是英语中最常见的字母。如果您想在解决方案中搜索异常,您会发现许多不需要的
    e
    实例
我接受这些论点,但反驳说,如果一个人不知道for循环中的
I
是什么意思,那么他们可能不应该是程序员。它是循环和异常的一个非常常见的术语,就像
e
一样。我还提到,如果需要,他们可以在异常情况下搜索
catch

我意识到这是主观的,但是,有人可能会说编码标准只是一种观点,尽管是学术界的观点

无论哪种方式,我都会很高兴,并将结果转发给他,但我更希望我们(我们的公司)继续使用单一的编码标准,而不是让两个开发人员在使用什么方面有不同的意见


提前谢谢。

我不是什么意思

是的。它是for循环或计数器中的索引

e是英语中最常见的字母。如果您想在解决方案中搜索异常,您会发现许多不需要的e实例

这根本没有任何意义。如果要查找异常的实例,为什么要搜索
e

说真的,我会嘲笑任何提出这些论点的人。每个人都知道
i
e
在这些场景中代表什么。它们是公认的公约。在我看来,你的同事只是想做个聪明人


编辑-这个问题提醒了我。

如果变量的词法范围超过20或25行,那么该变量可能不应该有一个字母名称。如果代码库中的大量变量的词法范围大于25行(大约),那么代码库的问题将比使用详细命名约定所能解决的问题大得多

我应用的规则的另一个异常是需要抛出的异常变量的命名。例如,代码应为:

Exception yourToys = new Exception(...);
throw yourToys;


我最近和某人谈过这件事

我的观点是,对于功能抽象的操作,使用“有意义的”名称可能被夸大了

例如,在JavaScript中:

myArrayOfNames.forEach ( function ( name ) { } );
myArrayOfNames.map ( function ( name ) { } );
myArrayOfNames.filter ( function ( name ) { } );
对于这类事情,我通常使用“each”、“obj”或“d”,因为我将其视为课程粒度的抽象。“name”实际上告诉我的只是一组名字中的一个名字

谁在乎呢?因为我看到开发人员迭代评论,争论什么是“有意义的”。不止一次

所以多年来,我一直倾向于解决这个问题,我说,这个操作是一个应用于某种特定列表的函数抽象(迭代)。在代码中反映该语言和用法:

myUsefullyNamedArray.filter ( function ( d ) {
    return ( 'someval' in d ); 
} );

问得好,但也许更适合你?@Paul R:谢谢!我刚刚在这里重新提到-。这个问题可以标记为关闭,但老实说,我认为它在这里仍然有效。如果你想搜索异常的解决方案,你会发现很多不想要的e。为什么要通过猜测变量名来搜索类型的实例@恐惧冲击星球:我也问了这个问题,并用“搜索
捕获
”来回答。只搜索
异常
有什么错?
myUsefullyNamedArray.filter ( function ( d ) {
    return ( 'someval' in d ); 
} );