You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

变量命名与类或ID同名是否为不良编程实践?原因是什么?

变量命名与类/ID同名是否属于不良编程实践?

嘿,这个问题问得挺接地气的——其实变量命名和类/ID同名算不算不良实践,不能一概而论,得看具体场景和你要规避的风险。先拿你给的示例代码来说:

var slideshowSlides = document.getElementsByClassName("slideshowSlides");

这种把变量名和类名完全对齐的写法,很多开发者都在用,直观性拉满,一眼就能看出这个变量存的是对应类的元素集合,其实没啥毛病。但如果不注意一些细节,它确实可能变成坑,下面给你拆解下:

可能踩坑的情况

  • 全局作用域下的冲突风险:如果在全局作用域定义这类变量,很容易和其他脚本、甚至浏览器的隐式全局变量撞车。比如旧版IE会自动把页面里的ID作为全局变量挂载,要是你有个ID叫slideshowSlides,同时又定义了同名全局变量,就会出现覆盖或被覆盖的诡异bug。就算是现代浏览器,多个脚本共用全局作用域时,同名变量也会引发冲突。
  • 语义模糊的隐患:如果后续你修改了变量的用途,比如把它改成存储单个激活的元素:var slideshowSlides = document.querySelector(".slideshowSlides.active");,这时候变量名和类名一致,但实际内容从“元素集合”变成了“单个元素”,就会让其他看代码的人(包括未来的你)产生误解,增加维护成本。
  • 团队协作的规范冲突:如果你的团队有统一的命名规范,比如要求元素类的变量加前缀(比如el_或者$)来区分普通变量,那违背规范的同名写法就会降低代码的一致性,拖慢团队协作的效率。

适合用的场景

如果满足下面这些条件,同名写法反而很合适:

  • 变量的用途非常明确,就是存储对应类/ID的元素(集合或单个),没有后续变更用途的计划;
  • 变量处于局部作用域(比如函数内部、模块内部),不会和全局或其他作用域的变量冲突;
  • 团队没有明确禁止这种命名方式,大家都认可这种直观的命名逻辑。

总的来说,这不算绝对的不良编程实践,核心是要平衡可读性、冲突风险团队规范。只要能保证代码清晰、不会引发意外冲突,这种命名方式完全可以放心用。

内容的提问来源于stack exchange,提问作者DaveJones

火山引擎 最新活动