语法糖和语法盐
Le Mon 03 February 2025
语法糖(Syntactic sugar),英国计算机科学家彼得·兰丁发明的术语,指计算机程序设计语言中添加的某种语法,这种语法对语言的功能没有影响,只是程序员更方便地使用。语法糖让程序更简洁,可读性更好。
语法盐(Syntactic salt),是指在计算机程序设计语言中为了降低程式设计师撰写出不良程式码的设计,但其中仍会有潜藏错误存在的可能。语法盐有可能会违背它的初衷,使程式码的可读性降低或浪费程式码的空间占用。
语法糖示例 ES5语法:
function Point(x, y) {
this.x = x;
this.y = y;
}
Point.prototype.toString = function () {
return '(' + this.x + ', ' + this.y + ')';
};
ES6语法:
class Point {
constructor(x, y) {
this.x = x;
this.y = y;
}
toString() {
return '(' + this.x + ', ' + this.y + ')';
}
}
两者的功能完全相同,底层实现一致,但ES6中的定义更加清晰,可读性更高,也适合其他语言程序员理解。ES6中增加了不少这样的语法糖,如arrow function(=>)、spread operator(...)等。
另外一个例子: C中采用 a[i][j] 表示 ((a+i)+j),免去了指针的繁琐。
语法盐示例
C#中,switch-case 语句中如果没有goto、return、throw 等跳离语法,需要带有break,否则会编译错误。但C、C++无此语法盐。
https://kaifage.com/notes/190/syntactic-sugar-and-syntactic-salt.html