Skip to main content

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,编译器找不到变量,直接报错。

总之,不报错,是编译器的硬性底线,触碰就报错,没商量。

【口诀二:见名知意是修养】

所谓见名知意,就是看到变量名,不用猜、不用问、不用翻注释,立刻知道它代表什么。

这条原则就一句话:优先使用有意义的英文单词,别用拼音,别用缩写。

这里有几组真实的命名对比:

错误正确说明
yhmuserName用户名
xinglastName
mingfirstName
nlage年龄
csrqbirthDate出生日期
zjetotalAmounttotal 汇总 + amount 金额
slquantity购物车用 itemCount 更精确
pjfaverageScore平均分,一眼就懂

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)。

所以记住:短不代表好,清楚才是王道。

村长小贴士:布尔变量几乎总是多个单词,因为它要表达“是不是、有没有、能不能”。

记住这三个开头单词:ishascan

例如:

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# 中,变量命名有两套标准:硬性规则和软性约定。

硬性规则是底线,碰了就报错;