VS Code的产品做的很优秀,其源码也质量颇高,清晰、整洁、富有美感。
下面是 src\vs\workbench\common\notifications.ts 文件中的两段代码,大家感受一下:
get sticky(): boolean {if (this._sticky) {return true; // explicitly sticky}const hasActions = this.hasActions;if ((hasActions && this._severity === Severity.Error) || // notification errors with actions are sticky(!hasActions && this._expanded) || // notifications that got expanded are sticky(this._progress && !this._progress.state.done) // notifications with running progress are sticky) {return true;}return false; // not sticky
}
是不是感觉命名准确、层次分明、逻辑清晰,看起来一目了然。
逻辑块之间用空行分隔,多个判断条件的时候,每个条件单独成行。
变量定义紧跟变量使用,放到一个逻辑块里面。
不太能直接看出含义的地方加注释说明。
还有这段:
private get hasActions(): boolean {if (!this._actions) {return false;}if (!this._actions.primary) {return false;}return this._actions.primary.length > 0;
}
大家注意看它的判断语句的写法,这两条判断其实可以写成一个,但是作者没有这么做,而是分开来写,这样更加清晰,易于阅读和理解。
另外,先判错,再判对,避免代码嵌套,也是个常用的最佳实践。
像这样的代码,在VS Code源码中比比皆是,常看看有助于提高代码品味和编程水平。
欢迎关注公众号:清晰编程,获取更多精彩内容