局部变量名称与 c 中的参数名称相同是一种不好的做法吗?
Is it a bad practice to have local variable name same as parameter name in c?
例如,在下面的代码范围内,局部变量 num 应该只在 else 中,但这是一种不好的做法吗?
typedef enum
{
FIRST,
SECOND,
THIRD,
} numbers;
void fun(int check, numbers *num)
{
if (check)
{
..........
.......
}
else
{
numbers num;
............
}
}
man gcc
-W影
每当局部变量或类型声明隐藏另一个变量、参数、类型或 class 成员(在 C++ 中),或每当内置函数时发出警告
被遮蔽了。请注意,在 C++ 中,编译器会在局部变量隐藏显式 typedef 时发出警告,但如果它隐藏 struct/class/enum.
则不会发出警告
名称完全匹配是不好的做法,但是,我经常看到并使用相同但类型具有大写字母的名称:
void func(Person person) { };
类型和变量的作用完全不同,您希望能够看出其中的区别。此外,您希望 IDE 能够“查找所有引用”,或跳转到 class。一些框架也依赖于大小写来使事情正确,即使语言本身并不介意。
从纯语言的角度来看,随着程序变大,您会变得更加困惑,并且您开始尝试在 IDE 中滚动或使用“查找”或“跳转到”。即使没有 IDE 问题,您也不知道在任何给定时间发生了什么,您最终可能会编辑错误的代码部分以修复其他地方的错误。
我想补充一点,在很多书上,我看到构造函数是这样写的:
private int x, y;
MyClass(int x, int y) {
this.x = x;
this.y = y;
}
我个人不喜欢这样,但似乎可以在两者之间做出选择,或者更改私有变量名。微软喜欢加下划线。
我会说是的,绝对是不好的做法。当然它会起作用,所以从 compilers/programs 的角度来看,这种方法本身并没有错。然而,随着您的项目变得越来越大和越来越复杂,保持这种做法肯定会导致更难的调试阶段、半混淆的可读性和更糟糕的文档。
如果你这样做并在几个月后拿起你的复杂软件,你会讨厌你自己:)
软件中的命名是一个敏感话题,每个开发人员都有自己的标准和个人喜好。我自己尝试编写不言自明的代码。使用长描述性易于理解的变量/函数名称是我的首选。
等各种代码标准中找到更多关于为什么要避免某些事情的原因
例如,在下面的代码范围内,局部变量 num 应该只在 else 中,但这是一种不好的做法吗?
typedef enum
{
FIRST,
SECOND,
THIRD,
} numbers;
void fun(int check, numbers *num)
{
if (check)
{
..........
.......
}
else
{
numbers num;
............
}
}
man gcc
-W影 每当局部变量或类型声明隐藏另一个变量、参数、类型或 class 成员(在 C++ 中),或每当内置函数时发出警告 被遮蔽了。请注意,在 C++ 中,编译器会在局部变量隐藏显式 typedef 时发出警告,但如果它隐藏 struct/class/enum.
则不会发出警告名称完全匹配是不好的做法,但是,我经常看到并使用相同但类型具有大写字母的名称:
void func(Person person) { };
类型和变量的作用完全不同,您希望能够看出其中的区别。此外,您希望 IDE 能够“查找所有引用”,或跳转到 class。一些框架也依赖于大小写来使事情正确,即使语言本身并不介意。
从纯语言的角度来看,随着程序变大,您会变得更加困惑,并且您开始尝试在 IDE 中滚动或使用“查找”或“跳转到”。即使没有 IDE 问题,您也不知道在任何给定时间发生了什么,您最终可能会编辑错误的代码部分以修复其他地方的错误。
我想补充一点,在很多书上,我看到构造函数是这样写的:
private int x, y;
MyClass(int x, int y) {
this.x = x;
this.y = y;
}
我个人不喜欢这样,但似乎可以在两者之间做出选择,或者更改私有变量名。微软喜欢加下划线。
我会说是的,绝对是不好的做法。当然它会起作用,所以从 compilers/programs 的角度来看,这种方法本身并没有错。然而,随着您的项目变得越来越大和越来越复杂,保持这种做法肯定会导致更难的调试阶段、半混淆的可读性和更糟糕的文档。 如果你这样做并在几个月后拿起你的复杂软件,你会讨厌你自己:)
软件中的命名是一个敏感话题,每个开发人员都有自己的标准和个人喜好。我自己尝试编写不言自明的代码。使用长描述性易于理解的变量/函数名称是我的首选。
等各种代码标准中找到更多关于为什么要避免某些事情的原因