airbnb编码风格_停止崇拜Airbnb风格

2023-11-11 12:20

本文主要是介绍airbnb编码风格_停止崇拜Airbnb风格,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

airbnb编码风格

JavaScript开发人员的愤怒情书

我喜欢函数式编程及其提出的概念。 我真的是 你知道我还真正爱什么吗? Javascript 。 它灵活,广泛且充满各种问题(就像我一样)。

在整理工作项目时,我发现抛出的整理错误中有近200个是由于使用for of迭代语法引起的。

作为我,一个合理的人(至合理的程度)决定检查他们的规格 。 当然,这对他们的团队来说真是太好了……

不。实际上,只是检查一下就让我生气。

观察以下两个代码块:

// synchronous  
function foo(args) {
return args.reduce((prev, arg) => prev.then(() => doSomethingAsync(arg), Promise.resolve())
}

async function fooStacking(args){
const stack = [];
let arg, item;
for (arg of args){
item = await someAsyncFunction(arg);
stack.push(item);
}
return stack;
}
// also, the concurrent version
async function fooConcurrent(args){
const stack = [];
for (let arg of args) stack.push(someAsyncFunction(arg));
return Promise.all(stack);
}

其中之一是功能上可读,明智且可自我记录的代码段。 另一个是由AirBnb的首席工程师撰写的 。

你猜怎么着? 他们俩都不对。

显然 ,不存在编写此函数的正确方法。

“嗨,这是道格拉斯·克罗克福德(Douglas Crockford)呼吁您一生如何做。”

这就是为什么我生气。 地球上每个JavaScript开发人员都将编写(并可能会担保)使您生气的代码,尤其是如果您不喜欢这种方式的话。

他们可能会大胆而野蛮地迫使Array.reduce方法执行它甚至不打算做的事情,或者也许他们编写的样式看起来很老旧,丑陋,看起来就像是1990年代的编程手册一样。

您(或我)无法采取任何措施阻止他们。

老实说,它是如此令人毛骨悚然,以至于没有任何意义。 甚至没有要战胜的战斗。

目前让我烦恼的事情(由于Airbnb的规格和棉绒准则):
循环显然是邪恶的 ,我应该选择使用使用循环遍历项目的函数。 您知道的... 因此,他们不必使用循环。
他们还比较break ,并continue语句GOTO 语句 ( 终极邪恶 ),但return报表基本上可以做同样的事情都breakcontinue (区别在于它的他们这样做的范围)。 AirBnb还做出了大胆的声明,即break语句仅在循环中使用。 我想这会使switchif语句也变得邪恶……
嘿,您是否正在通过Babel运行生产服务器代码? 没有? 好吧, Airbnb认为您应该做到。
还有其他一些事情,例如使用require不能接受(这对Babel项目有意义,但对Node项目不可行),并被要求在某些声明中添加过多的换行符。
为了更具建设性,我决定开始编写自己的eslint规范(并编写配套的how-to指导以告知其他人该如何做)。

编写代码时,拥有标准是很好的,结构也是如此。 但是不要让您的代码看起来像别人的代码,因为它很时髦。 制定自己的标准。 并停止关闭那些不同意您无法解释的选择的人 。

超过这一点的杂乱无章

自从我8年前开始使用JavaScript以来,它已经走了很长一段路。 我也看到了一些奇怪的地狱趋势。 当我开始的时候,就像一个狂野的JS意大利面条一样,以jQuery为王 ,而拟态统治了一切。

现在,我们生活在数字化意味着扁平化的时代。 明智地设计,显然在架构上也是如此。 设计模式正在出现,在这些函数越来越平坦的地方,甚至达到有时您甚至无法确定函数要做什么的程度。

我试图以遗留JS程序员的身份阅读某人的(夸张的)基于方法的代码。
公平地说,也许我们不再知道某个功能实际上是什么。 也许现在它超越了原始的数学根源(2015年成立)。

我认识一个人,尝试使用Object.assign直接分配给对象的__proto__ 。 每天感觉就像我进入暮光之城,在那里Object方法成为唯一的出行方式,每个人都开始看起来像Object方法。

也许我在地狱里。 不会。也许我和其他所有人一样,被风滚草的语言所困,拥有诸如TurboFans和优化器例程之类的神秘组件。

也许……也许就像您写分号的方式一样,这些都不重要。

翻译自: https://hackernoon.com/stop-worshipping-airbnb-styles-6f3e5958deee

airbnb编码风格

这篇关于airbnb编码风格_停止崇拜Airbnb风格的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/390016

相关文章

python编写朋克风格的天气查询程序

《python编写朋克风格的天气查询程序》这篇文章主要为大家详细介绍了一个基于Python的桌面应用程序,使用了tkinter库来创建图形用户界面并通过requests库调用Open-MeteoAPI... 目录工具介绍工具使用说明python脚本内容如何运行脚本工具介绍这个天气查询工具是一个基于 Pyt

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细

使用Python创建一个功能完整的Windows风格计算器程序

《使用Python创建一个功能完整的Windows风格计算器程序》:本文主要介绍如何使用Python和Tkinter创建一个功能完整的Windows风格计算器程序,包括基本运算、高级科学计算(如三... 目录python实现Windows系统计算器程序(含高级功能)1. 使用Tkinter实现基础计算器2.

解决IDEA报错:编码GBK的不可映射字符问题

《解决IDEA报错:编码GBK的不可映射字符问题》:本文主要介绍解决IDEA报错:编码GBK的不可映射字符问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录IDEA报错:编码GBK的不可映射字符终端软件问题描述原因分析解决方案方法1:将命令改为方法2:右下jav

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

VSCode中C/C++编码乱码问题的两种解决方法

《VSCode中C/C++编码乱码问题的两种解决方法》在中国地区,Windows系统中的cmd和PowerShell默认编码是GBK,但VSCode默认使用UTF-8编码,这种编码不一致会导致在VSC... 目录问题方法一:通过 Code Runner 插件调整编码配置步骤方法二:在 PowerShell

Python如何实现读取csv文件时忽略文件的编码格式

《Python如何实现读取csv文件时忽略文件的编码格式》我们再日常读取csv文件的时候经常会发现csv文件的格式有多种,所以这篇文章为大家介绍了Python如何实现读取csv文件时忽略文件的编码格式... 目录1、背景介绍2、库的安装3、核心代码4、完整代码1、背景介绍我们再日常读取csv文件的时候经常

C++ | Leetcode C++题解之第393题UTF-8编码验证

题目: 题解: class Solution {public:static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num &

C语言 | Leetcode C语言题解之第393题UTF-8编码验证

题目: 题解: static const int MASK1 = 1 << 7;static const int MASK2 = (1 << 7) + (1 << 6);bool isValid(int num) {return (num & MASK2) == MASK1;}int getBytes(int num) {if ((num & MASK1) == 0) {return

form表单提交编码的问题

浏览器在form提交后,会生成一个HTTP的头部信息"content-type",标准规定其形式为Content-type: application/x-www-form-urlencoded; charset=UTF-8        那么我们如果需要修改编码,不使用默认的,那么可以如下这样操作修改编码,来满足需求: hmtl代码:   <meta http-equiv="Conte