10.别再乱起变量名
新手入门实战教程
第 10 集《别再乱起变量名:三个口诀治好你的坏习惯》
大家好,我是村长。 上节课,我们学习了创建变量, 今天这集只干一件事:用三个口诀,彻底帮你把变量名起明白。 很多新手都会有个错觉:变量名嘛,能用就行。 如果你也这么想,那我必须提醒你——
别觉得无所谓,这会直接暴露你的编程段位。
乱起变量名,绝对是程序员最容易养成的坏习惯,没有之一。
从这节课开始,让你的变量名配得上你的代码。听完就能上手!
咱们直接开讲。
(LOGO 动画)
今天的内容分四块: 一、一个好名字到底有多重要? 二、不报错是底线(口诀一) 三、见名知意是修养(口诀二) 四、分清驼峰还是帕斯卡(口诀三)
一、一个好名字有多重要?
《代码整洁之道》的作者 Bob 大叔,曾经说过一句特别经典的话:
“你给变量起名的时候,应该像给自己第一个孩子起名一样用心。”
一点不夸张。在编程世界里,一个好名字,能让代码一目了然; 一个烂名字,能让阅读者抓狂骂娘。
请看这两段代码。逻辑一模一样。
左边这版:变量名全是a、b、c、d ,能看懂吗?能。但费脑子,全靠猜。
int a = 28;
double b = 55.5;
bool c = true;
string d = "张三";
if (a >= 18 && c)
{
Console.WriteLine($"{d} 满足条件");
}
再看右边,变量名换成有意义的英文单词,同样的逻辑,需要注释吗?完全不需要。
int age = 28;
double weight = 55.5;
bool isMarried = true;
string userName = "张三";
if (age >= 18 && isMarried)
{
Console.WriteLine($"{userName} 满足条件");
}
一眼就知道代码在干什么。 好名字,胜过十行注释;烂名字,坑自己、坑队友。 所以,变量命名这事儿,绝对不能随心所欲、放飞自我。
接下来,掌握变量命名的三个口诀,一个一个讲。
【口诀一:不报错是底线】
什么是底线?就是变量名首先要合法,编译器能正常编译,这是最基本的要求。
要做到合法,记住下面四条语法规则:
第一,变量名的合法字符只有三种:字母、数字、下划线。 (空格、横线、标点符号等其他字符,统统不能用,否则直接报错。)
userName user_name userName123 _privateField
user-name user name 123user user@name
第二、数字不能开头。 (也就是说,首字符只能是字母或下划线。如果你用数字开头,直接报错)
第三、不能使用关键字。 (像 int、class、if、for 这些 C# 语法已经占用的单词,不能用作变量名,否则直接报错。)
奇奇:
村长:如果你非要玩点"骚操作",C# 确实留了一个后门——你可以在变量名前加个 @ 前缀,强制使用关键字,比如 @class、@int。 语法上合法,但老铁们,真心没必要! 语法允许归允许,可实际项目中几乎没人这么写。能不用就不用。别自己给自己埋雷。
第四、区分大小写。 一定要注意,小写age、首字母大写的Age和全大写的AGE 在 C# 里是三个完全不同的变量名。 你定义的是小写age,后面写成首字母大写的Age,编译器找不到变量,直接报错。
总之,不报错,是编译器的硬性底线,触碰就报错,没商量。
【口诀二:见名知意是修养】
所谓见名知意,就是看到变量名,不用猜、不用问、不用翻注释,立刻知道它代表什么。
这条原则就一句话:优先使用有意义的英文单词,别用拼音,别用缩写。
这里有几组真实的命名对比:
| 错误 | 正确 | 说明 |
|---|---|---|
| yhm | userName | 用户名 |
| lastName | 姓 | |
| ming | firstName | 名 |
| nl | age | 年龄 |
| csrq | birthDate | 出生日期 |
| zje | totalAmount | total 汇总 + amount 金额 |
| sl | quantity | 购物车用 itemCount 更精确 |
| pjf | averageScore | 平均分,一眼就懂 |
userName和 yhm——意思相同,观感天壤之别。 “看到这组对比,相信你已经明白——好的变量名,就是最好的注释。
奇奇:
村长:一个词能说清楚,就用一个词;说不清楚,就果断加词。
例如:
你看这些,能够清晰传递含义,一个词就够了:
表示布尔状态的
flag —— 通用布尔开关,用于标识某种状态。
ok —— 操作成功标志,常用于 TryParse 模式。
done —— 循环结束或异步任务完成标识。
表示临时占位符
item 集合遍历中的当前元素
result 方法返回值或异步等待结果
temp 临时缓存值,常用于交换变量
value 泛指的数值或字典取值
表示数学统计
sum 累加总和。
avg 计算平均值时的中间变量。
max / min 记录最大/最小值的追踪变量。
count 记录元素数量
name、age、count、price、time、list、result
但如果是这些,必须加单词。
FirstName —— 名字(string)。
LastName —— 姓氏(string)。
userId —— 用户唯一标识(通常为 int/long/string)。
userName —— 用户名称(string)。
currentIndex —— 当前索引位置(int)。
maxValue —— 最大值(double/int)。
totalAmount —— 总金额(decimal)。
averageScore —— 平均分(double)。
submitButton —— 提交按钮(Button)。
errorMessage —— 错误提示文本(string)。
所以记住:短不代表好,清楚才是王道。
村长小贴士:布尔变量几乎总是多个单词,因为它要表达“是不是、有没有、能不能”。
记住这三个开头单词:is、has、can。
例如:
isMarried:是否已婚
isActive:是否激活
isVisible:是否可见
hasError:有无报错
hasPermission:有无权限
canLogin:能否登录
见名知意考验的不是语法,而是修养。 好名字,说白了就是——让人一眼看懂,不给别人添堵。 每一个看似“无所谓”的命名,其实都在悄悄透支团队对你的信任。
【口诀三:分清驼峰和帕斯卡】
口诀三,解决最后一个问题—— 当你要表达“用户名称”时,user 和 name 这两个单词,怎么连接在一起?
变量名不能有空格。你不能写成
user name
编译器不认。
于是就有了两种约定写法:
小驼峰命名法(camelCase)
该命名法规定:变量名的第一个单词的首字母必须小写,后面的所有单词首字母都必须大写。
例如:
studentAge
maxCount
isAvailable
userScore
inputValue
currentPage
中间的大写,像骆驼凸起的驼峰,所以叫小驼峰。
普通变量名,一律使用小驼峰命名法。
帕斯卡命名法(PascalCase)
该命名法规定:变量名的每个单词的首字母,都必须大写。
例如:
// 类名
StudentManager
UserInfo
GetScore
SaveData
Age
FullName
IsEnabled
它和小驼峰只有一个区别:首字母大写,就是帕斯卡;首字母小写,就是小驼峰。
在 C# 中,类名、方法名、属性名统一使用帕斯卡。
例如:
最后,记住一句话:
普通变量名用小驼峰,类/方法/属性名用帕斯卡。
这就是 C# 的命名规范,也几乎是所有 C# 项目都会遵守的约定。 软性约定,是写给人看的温柔;不遵守,便成了对同行者的粗鲁。
村长小贴士 不报错是底线。 见名知意是修养。 分清驼峰和帕斯卡是风格
结束语
本期视频就到这里。我是村长。听懂不算会,敲出来才算。
如果这个视频对你有帮助,记得点赞、收藏、关注。 感谢观看,我们下期见。
下期视频《注释的用法:注释到底怎么写》
备用文案
不遵守软性约定的后果是:恶心别人,坑自己。
不遵守这些约定,轻则恶心队友,重则坑哭自己。
you see see you.偏要玩点"骚操作"。如果你非要这么干,
不报错是编译器的底线,是硬性规则,触碰底线就报错,没商量。
但变量名换成了有明确含义的英文单词,
所以今天不跟你讲虚的,直接给你三个实战口诀
第一,不报错是底线; 第二,见名知意是修养; 第三,分清驼峰还是帕斯卡,是风格。
听完就能用,上手不绕弯。
这就是好名字的价值。
在 C# 中,变量命名有两套标准:硬性规则和软性约定。
硬性规则是底线,碰了就报错;