linux 机器格式化_为什么机器人应该为我们格式化代码

linux 机器格式化

by Artem Sapegin

通过Artem Sapegin

为什么机器人应该为我们格式化代码 (Why robots should format our code for us)

I used to think that a personal code style is a good thing for a programmer. It shows you are a mature developer who knows what good code should look like.

我曾经认为个人代码样式对程序员来说是一件好事。 它表明您是一个成熟的开发人员,他知道好的代码应该是什么样。

My college professors told me that they knew when some of my classmates used my code in their work because of the different code style. Now I think it was because my code was at least somehow formatted and everyone else’s was a mess.

我的大学教授告诉我,由于某些代码风格不同,他们知道我的一些同学何时在工作中使用我的代码。 现在,我认为这是因为我的代码至少已以某种方式进行了格式化,而其他所有人都陷入了混乱。

Since then I’ve spent a lot of time arguing code style and configuring tools to enforce it. It’s time for a change.

从那时起,我花了很多时间争论代码风格并配置工具来实施它。 现在该进行更改了。

一些例子 (A few examples)

After reading the The Programmers’ Stone I put braces like this for a long time:

看完《程序员的石头》之后,我放了很长时间这样的括号:

if (food === 'pizza'){    alert('Pizza ;-)');  }else{      alert('Not pizza ;-(');}

But then I realized that I may be the only one who did it that way in the front-end community. Everybody else uses this style:

但是后来我意识到,我可能是前端社区中唯一这样做的人。 其他人都使用这种风格:

if (food === 'pizza') {    alert('Pizza ;-)');  } else {    alert('Not pizza ;-(');}

Or this:

或这个:

if (food === 'pizza') {    alert('Pizza ;-)');  }else {      alert('Not pizza ;-(');}

So I’ve changed my style to the last one.

因此,我已将样式更改为上一个样式。

I like this style for chaining very much:

我非常喜欢这种链接样式:

function foo(items) {  return items    .filter(item => item.checked)    .map(item => item.value)  ;}

I see the same refactoring benefits as for trailing commas:

我看到了与尾随逗号相同的重构优势:

const food = [  'pizza',  'burger',  'pasta',]

But I’m probably even more lonely with this style than I was with braces. Nobody would ever send me code for review with this style, no linter can enforce it. So I have to stop using it too to be closer to the real world.

但是我可能比使用牙套更孤单。 没有人会以这种样式向我发送代码以供审查,没有短毛绒犬可以强制执行它。 因此,我也必须停止使用它以更接近真实世界。

There’s another thing that nobody else does except me . I always put two spaces before end-of-the-line comment:

除了我以外,没有人能做的另一件事。 我总是在行尾注释前放置两个空格:

const volume = 200;  // ml

I thought it improves readability. But it actually makes the codebase inconsistent because other developers only put one space.

我认为它可以提高可读性。 但这实际上使代码库不一致,因为其他开发人员只放置了一个空格。

JavaScript开发人员的工作 (What JavaScript developers do)

Unfortunately JavaScript has no official code style. There are a few popular code styles like Airbnb or Standard. You could use them to make your code look familiar to other developers.

不幸的是,JavaScript没有官方代码风格。 有一些流行的代码样式,例如Airbnb或Standard 。 您可以使用它们使您的代码看起来对其他开发人员熟悉。

You could use ESLint to enforce code style and even autoformat code in some cases. But it won’t make your code base 100% consistent. ESLint with Airbnb config would normalize only my first example and allow inconsistency in the other two examples.

在某些情况下,您可以使用ESLint强制执行代码样式,甚至自动格式化代码。 但这不会使您的代码库100%一致。 带有Airbnb配置的ESLint仅会规范我的第一个示例,而在其他两个示例中允许不一致。

JavaScript开发人员应该做什么 (What JavaScript developers should do)

Some languages have strict code styles and tools to format code. So developers don’t waste time arguing code style. Look at Refmt for Reason and Rustfmt for Rust.

一些语言具有严格的代码样式和格式化代码的工具。 因此,开发人员不会浪费时间争论代码风格。 在Refmt中查找原因,在Rustfmt中查找Rust。

It looks like JavaScript finally has a solution to this problem. A new tool called Prettier will reformat your code using its own rules. It completely ignores how the code was written in the first place.

看来JavaScript终于可以解决此问题。 一个名为Prettier的新工具将使用其自己的规则重新格式化您的代码。 首先,它完全忽略了代码是如何编写的。

Let’s try Prettier on my examples:

让我们在示例中尝试更漂亮 :

if (food === 'pizza') {  alert('Pizza ;-)');} else {  alert('Not pizza ;-(');}function foo(items) {  return items.filter(item => item.checked).map(item => item.value);}const volume = 200; // ml

You can disagree with this style. For example I don’t like the else placement and writing function chains in one line is questionable. But I see huge benefits in adopting Prettier:

您可以不同意这种风格。 例如,我不喜欢else放置和在一行中编写函数链是有问题的。 但是我发现采用Prettier具有巨大的好处:

  • Almost no decisions to make — Prettier has few options.

    几乎没有任何决定-Prettier几乎没有选择。
  • No arguing about particular rules if you’re working in a team.

    如果您在团队中工作,则无需争论特定的规则。
  • No need to learn your project’s code style for contributors.

    无需为贡献者学习项目的代码风格。
  • No need to fix style issues reported by ESLint.

    无需修复ESLint报告的样式问题。
  • Possible to set up autoformat on file save.

    可以在文件保存时设置自动格式化。

结论 (Conclusion)

Prettier has been already adopted by some popular projects like React and Babel. And I’m starting to convert all my projects from my custom code style to Prettier. I will recommend it instead of the Airbnb code style.

Prettier已被React和Babel等一些受欢迎的项目采用。 我开始将所有项目从我的自定义代码样式转换为Prettier。 我会推荐它而不是Airbnb代码样式。

At first I had a lot of “Ugh, that’s ugly” moments with Prettier. But when I think that I’d have to, for example, manually reformat JSX code from a single-line to multi-line when I add another prop and it doesn’t fit on one line — I realize that it’s totally worth it.

起初,我和Prettier在一起经历了很多“丑陋,丑陋”的时刻。 但是,当我认为我必须(例如)在添加另一项道具时将JSX代码从单行手动重新格式化为多行时,又不适合一行,我意识到这是完全值得的。

Read how to set up Prettier in your project.

阅读如何在项目中设置Prettier 。

P. S. Have a look at my new tool that will simplify adding ESLint, Prettier, and other tools to your project, as well as keeping their configs in sync.

PS 看看我的新工具 ,它将简化向您的项目中添加ESLint,Prettier和其他工具的过程,并使它们的配置保持同步。

Subscribe to my newsletter: https://tinyletter.com/sapegin

订阅我的新闻通讯: https : //tinyletter.com/sapegin

翻译自: https://www.freecodecamp.org/news/why-robots-should-format-our-code-159fd06d17f7/

linux 机器格式化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/395245.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Pytest高级进阶之Fixture

From: https://www.jianshu.com/p/54b0f4016300 一. fixture介绍 fixture是pytest的一个闪光点,pytest要精通怎么能不学习fixture呢?跟着我一起深入学习fixture吧。其实unittest和nose都支持fixture,但是pytest做得更炫。 fixture是pytest特有…

mysql 慢日志报警_一则MySQL慢日志监控误报的问题分析

之前因为各种原因,有些报警没有引起重视,最近放假马上排除了一些潜在的人为原因,发现数据库的慢日志报警有些奇怪,主要表现是慢日志报警不属实,收到报警的即时通信提醒后,隔一会去数据库里面去排查&#xf…

用css实现自定义虚线边框

开发产品功能的时候ui往往会给出虚线边框的效果图,于是乎,我们往往第一时间想到的是用css里的border,可是border里一般就提供两种效果,dashed或者dotted,ui这时就不满意了,说虚线太密了。废话不多说&#x…

无限复活服务器,绝地求生无限复活模式怎么玩 无限复活新手教程

相信不少的绝地求生玩家们最近都听说了其无限复活模式吧?因此肯定想要知道这种模式究竟该怎么玩,所以下面就来为各位带来此玩法的攻略相关,希望各位在看了如下的内容之后恩呢狗狗了解到新手教程攻略一览。“War”模式的设定以及玩法规则如下&#xff1a…

lua math.random()

math.random([n [,m]]) 用法:1.无参调用,产生[0, 1)之间的浮点随机数。 2.一个参数n,产生[1, n]之间的整数。 3.两个参数,产生[n, m]之间的整数。 math.randomseed(n) 用法:接收一个整数n作为随即序列的种子。 例&…

零基础学习ruby_学习Ruby:从零到英雄

零基础学习ruby“Ruby is simple in appearance, but is very complex inside, just like our human body.” — Matz, creator of the Ruby programming language“ Ruby的外观很简单,但是内部却非常复杂,就像我们的人体一样。” — Matz ,R…

windows同时启动多个微信

1、创建mychat.bat文件(文件名任意),输入以下代码,其中"C:\Program Files (x86)\Tencent\WeChat\"为微信的安装路径。以下示例为同时启动两个微信 start/d "C:\Program Files (x86)\Tencent\WeChat\" Wechat.exe start/d "C:\P…

mysql date time year_YEAR、DATE、TIME、DATETIME和TIMESTAMP详细介绍[MySQL数据类型]

为了方便在数据库中存储日期和时间,MySQL提供了表示日期和时间的数据类型,分别是YEAR、DATE、TIME、DATETIME和TIMESTAMP。下面列举了这些MSL中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。从上图中可以看出,每种日期和时…

九度oj 题目1380:lucky number

题目描述:每个人有自己的lucky number,小A也一样。不过他的lucky number定义不一样。他认为一个序列中某些数出现的次数为n的话,都是他的lucky number。但是,现在这个序列很大,他无法快速找到所有lucky number。既然这…

安装Tengine

1.安装VMware2.安装CentOS6.53.配置网络a.修改 /etc/sysconfig/network-scripts/ifcfg-eth0配置文件,添加如下内容DEVICEeth0HWADDR00:0C:29:96:01:6BTYPEEthernetUUID41cbd943-024b-4341-ac7a-e4d2142b4938ONBOOTyesNM_CONTROLLEDyesBOOTPROTOnoneIPADDRxxx.xxx.x.xxx#例如:IP…

node seneca_使用Node.js和Seneca编写国际象棋微服务,第2部分

node seneca处理新需求而无需重构 (Handling new requirements without refactoring) Part 1 of this series talked about defining and calling microservices using Seneca. A handful of services were created to return all legal moves of a lone chess piece on a ches…

【OCR技术系列之八】端到端不定长文本识别CRNN代码实现

CRNN是OCR领域非常经典且被广泛使用的识别算法,其理论基础可以参考我上一篇文章,本文将着重讲解CRNN代码实现过程以及识别效果。 数据处理 利用图像处理技术我们手工大批量生成文字图像,一共360万张图像样本,效果如下:…

mysql 修改字段类型死锁_mysql数据库死锁的产生原因及解决办法

数据库和操作系统一样,是一个多用户使用的共享资源。当多个用户并发地存取数据 时,在数据库中就会产生多个事务同时存取同一数据的情况。若对并发操作不加控制就可能会读取和存储不正确的数据,破坏数据库的一致性。加锁是实现数据库并 发控制…

openwrt无盘服务器,搭建基于 OpenWrt/gPXE/iSCSI 的 Windows 无盘工作站

本文要介绍的是如何在 OpenWrt 平台上面搭建无盘工作站服务器以及 Windows 的 iSCSI 部署。当然,由于 OpenWrt 也可以算得上一种 Linux 发行版了,所以本文所介绍的一些方法,在其它 Linux 发行版上面仍有一定的参考价值。整个过程大概分为以下…

Ralink5350开发环境搭建

一、安装虚拟机(Oracle VM VirtualBox 或 VMware Workstation) 二、在虚拟机中安装linux操作系统(当前使用的是Ubuntu1204桌面版) 三、配置linux相关服务 安装、配置、启动ftp服务apt-get install vsftpd 改动 vsftpd 的配置文件 /etc/vsftpd.conf,将以…

figma下载_Figma重新构想的团队库

figma下载一个新的,功能更强大的界面,用于在整个组织中共享组件 (A new, more powerful interface for sharing Components across your organization) The Team Library in Figma is a set of shared Components across all files in a Team. Component…

boost python导出c++ map_使用Boost生成的Python模块:与C++签名不匹配

我正在使用名为Mitsuba的软件。它附带了一个用Boost包装的Python实现。 Python中的这一行:使用Boost生成的Python模块:与C签名不匹配scene SceneHandler.loadScene(fileResolver.resolve("model.xml"), paramMap)产生一个错误。根据文档&…

CSU-1982 小M的移动硬盘

CSU-1982 小M的移动硬盘 Description 最近小M买了一个移动硬盘来储存自己电脑里不常用的文件。但是他把这些文件一股脑丢进移动硬盘后,觉得这些文件似乎没有被很好地归类,这样以后找起来岂不是会非常麻烦? 小M最终决定要把这些文件好好归类&a…

杜比服务器系统安装教程,win10杜比音效如何安装?win10安装杜比音效的详细教程...

杜比音效想必大家都不陌生,听歌或者看电影开启杜比音效可以给人一种身临其境的感觉。不少朋友都升级了win10系统却不知道如何安装杜比音效?如何为自己的系统安装杜比音效呢?感兴趣的小伙伴请看下面的操作步骤。win10安装杜比音效的方法&#…

剑指Offer_52_正则表达式匹配

题目描述 请实现一个函数用来匹配包括.和的正则表达式。模式中的字符.表示任意一个字符,而表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与…