专栏名称: Fundebug
Fundebug为JavaScript、微信小程序及Node.js开发团队提供专业的线上代码bug监控和智能分析服务。
目录
相关文章推荐
前端大全  ·  从 DeepSeek 看25年前端的一个小趋势 ·  昨天  
前端大全  ·  10年了,开发人员仍然不明白 ... ·  昨天  
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  2 天前  
歸藏的AI工具箱  ·  终于有给设计师用的 Cursor 了 ·  2 天前  
前端大全  ·  前端行情变了,差别真的挺大。。。 ·  3 天前  
51好读  ›  专栏  ›  Fundebug

我为什么推荐Prettier来统一代码风格

Fundebug  · 公众号  · 前端  · 2017-10-23 09:25

正文

译者按: 关于代码风格,不同的人有不同的偏好,其实并没有什么绝对的对错。但是,有2条原则应该是对的: 少数服从多数;用工具统一风格。

  • 原文: Why robots should format our code for us

  • 译者: Fundebug

为了保证可读性,本文采用意译而非直译。另外,本文版权归原作者所有,翻译仅用于学习。

我曾经以为,程序员有自己独特的代码风格挺好的。因为,一个成熟的程序员应该清楚,好的代码应该是怎样的。

我的大学教授告诉我,他的学生在用我的代码,因为我的代码风格不一样。我想了一下,也许是因为我的代码至少是有风格的,而其他人的代码一团糟。

一些示例

示例1:

读了The Programmers’ Stone之后,我把大括号这样写:

if (food === 'pizza')

{

alert('Pizza ;-)');

}

else

{

alert('Not pizza ;-(');

}

但是,我意识到在前端社区里,也许只有我一个人这样写的。而其他人都是这样写的:

if (food === 'pizza') {

alert('Pizza ;-)');

} else {

alert('Not pizza ;-(');

}

或者这样:

if (food === 'pizza') {

alert('Pizza ;-)');

}

else {

alert('Not pizza ;-(');

}

于是,我改变了风格,采用了最后一种写法。

示例2

将多个方法链接起来时,我喜欢这样写:

function foo(items) {

return items

.filter(item => item.checked)

.map(item => item.value)

;

}

示例3

读了Why you should enforce Dangling Commas for Multiline Statements,我意识到了trailing commas写法更加易于重构:

const food = [

'pizza',

'burger',

'pasta',

]

但是,这种写法非常少见。我审查过的代码中,没人这样写。于是,我只能放弃这种写法,向现实世界低头。

示例4

我还有一个不合群的习惯。在行尾写代码注释之前,我习惯敲2个空格:

const volume = 200;  // ml

我觉得这样写好看些。但是,这会导致代码不一致,因为其他人只敲一个空格。

JavaScript开发者是怎样做的

很遗憾,JavaScript没有官方的代码风格。业界有一些流行的代码风格,比如Airbnb和Standard。使用它们的话,团队成员之间的代码会更易读。

你也可以使用ESLint 来统一风格。但是它并不能保证代码100%一致。比如,ESLint的Airbnb配置,只能统一 示例1 的代码风格,而不能统一后面两者。

JavaScript开发者应该怎么做?

有一些语言有非常严格的代码风格,并且有工具可以用于统一风格。因此,开发者不需要浪费时间去争论代码风格的优劣。例如,Reason语言的Refmt,和Rust语言的Rustfmt。

现在,JavaScript终于有了一个解决方案。有一个新工具,叫做Prettier,它运用自身的规则将你的的代码重新格式化。无论你之前的代码风格是怎样。

我们不妨试用一下Prettier。

输入代码是这样的:

if (food === 'pizza')

{

alert('Pizza ;-)');

}

else

{

alert('Not pizza ;-(');

}

function foo(items) {

return items

.filter(item => item.checked)

.map(item => item.value)

;

}

const food = [

'pizza',

'burger',

'pasta',

]

Prettier处理之后的代码是这样的:

if







请到「今天看啥」查看全文