Javascript 中的编码约定:括号之间使用空格

2024-01-15

根据 JSHint,Javascript 程序员不应在第一个括号之后和最后一个括号之前添加空格。

我见过很多添加空格的优秀 Javascript 库,如下所示:

( foo === bar )  // bad according to JSHint 

而不是这样:

(foo === bar)   // good according to JSHint 

坦率地说,我更喜欢第一种方式(更多空格),因为它使代码更具可读性。是否有充分的理由选择 JSHint 推荐的第二种方式?


这是我个人的偏好以及原因。

我将在已接受的答案中讨论以下项目,但顺序相反。

note-one不是针对 Alnitak,这些评论对我们所有人来说都很常见......

note-two代码示例不写为代码块,因为语法突出显示仅阻止空白的实际问题。

我一直都是这样做的。

这不仅不是为编程实践辩护的好理由,而且也不是为编程实践辩护的好理由ANY反对改变的想法。

JS 文件下载大小很重要[尽管缩小当然可以解决这个问题]

尺寸永远很重要Any要通过网络发送的文件,这就是我们进行缩小以删除不必要的空格的原因。由于现在可以减少 JS 文件,因此关于生产代码中的空格的争论是moot.

moot:几乎没有或没有实用价值或意义;纯粹学术性的。没有实际意义的定义 http://dictionary.reference.com/browse/moot

现在我们进入这个问题的核心问题。以下想法仅是我的,我知道可能会引发争论。我并不宣称这种做法是正确的,只是说它目前对我来说是正确的。如果这个想法被充分证明是一个糟糕的选择,我愿意讨论这个想法的替代方案。

它具有完美的可读性,并且遵循 Javascript 祖先语言中的绝大多数格式约定

该声明分为两部分:“它完全可读”; “并遵循 Javascript 祖先语言中的绝大多数格式约定”

由于同样的想法,第二项可以被驳回我一直都是这样做的。

所以我们只关注声明的第一部分它完全可读,”

首先,让我们对代码做一些说明。

  1. 编程语言不是供计算机阅读的,而是供人类阅读的。
  2. 在英语中,我们从左到右、从上到下阅读。
  3. 遵循英语语法的既定实践将使更多使用英语编写代码的程序员更容易阅读代码。

NOTE:我仅针对英语建立我的案例,但可能普遍适用于许多基于拉丁语的语言。

让我们通过删除副词来减少第一个语句完美因为它假设不可能有任何改进。让我们继续处理剩下的事情:“它是可读的”。事实上,我们可以全力以赴JS并创建一个变量:“isReadable”作为布尔值。

问题

该问题提供了两种选择:

( foo === bar )

(foo === bar)

如果缺乏任何上下文,我们可能会在英语语法方面犯错,并选择第二个选项,即删除空格。然而,在这两种情况下,“isReadable”很容易被true.

因此,让我们更进一步并删除所有空白......

(foo===bar)

我们还能主张吗可读是真实的?这是布尔值可能不那么普遍适用的地方。让我们将 isReadable 移至 Float,其中0 is 不可读 and 1 is 完全可读.

在前面的三个例子中,我们可以假设我们会从我们询问的每个人那里得到每个单独例子的 0 - 1 范围内的值的集合:“在 0 - 1 的范围内,您如何评价可读性这段文字?”

现在让我们向示例添加一些 JS 上下文...

  1. if ( foo === bar ) { } ;
  2. if(foo === bar){};
  3. if(foo===bar){};

我们的问题又来了:“按照 0 - 1 的标准,您如何评价本文的可读性?”

我在这里假设空白有一个平衡:空白太少,isReadable 接近 0;空白太多,isReadable 接近 0。

例如:“你好吗?”和“你好吗?”

如果我们在许多 JS 示例之后继续问这个问题,我们可能会发现可接受的空白的平均限制,这可能接近英语中的语法规则。

但首先,让我们看看 JS 中括号的另一个例子:函数!

function isReadable(one, two, three){};

function examineString(string){};

这两个函数示例遵循当前标准,即 () 之间没有空格(逗号后面除外)。下面的下一个参数并不关心在声明函数时如何使用空格(如上面的示例),而是关心代码可读性的最重要部分:代码在哪里被调用!

针对下面的每个示例提出这个问题......

“按照 0 - 1 的标准,您如何评价本文的可读性?”

  1. examineString(isReadable(string));

  2. examineString( isReadable( string ));

第二个例子使用了我自己的规则

  1. 单词之间括号之间可以有空格,但标点符号之间不能有空格。 即不是这样的examineString( isReadable( string ) ) ;但就像这样examineString( isReadable( string ));或这个examineString( isReadable({ string: string, thing: thing });

如果我们要使用英语语法规则,那么我们将在“(”之前留出空格,我们的代码将是......

examineString (isReadable (string));

我不赞成这种做法,因为它将函数调用与它应该属于的函数分开。

examineString(); // yes; examineString (): // no;

由于我们没有完全反映正确的英语语法,但英语语法确实说需要休息,那么也许在括号之间添加空格可能会让我们更接近1与 isReadable?

我将其留给大家,但请记住基本问题:

“这一变化是否会使其更具可读性,还是会降低可读性?”

这里还有一些支持我的案例的例子。

假设函数和变量已经声明...

input.$setViewValue(setToUpperLimit(inputValue));

这是我们写一个正确的英语句子的方式吗?

input.$setViewValue( setToUpperLimit( inputValue ));

更接近1?

config.urls['pay-me-now'].initialize(filterSomeValues).then(magic);

or

config.urls[ 'pay-me-now' ].initialize( fitlerSomeValues ).then( magic );

(空格就像我们对运算符所做的那样)

您能想象运算符周围没有空格吗?

var hello='someting';

if(type===undefined){};

var string="I"+"can\'t"+"read"+"this";

我做什么...

我之间的空间(), {}, and [];如以下示例所示

function hello( one, two, three ){

return one;

}

hello( one );

hello({ key: value, thing1: thing2 });

var array = [ 1, 2, 3, 4 ];

array.slice( 0, 1 );

chain[ 'things' ].together( andKeepThemReadable, withPunctuation, andWhitespace ).but( notTooMuch );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Javascript 中的编码约定:括号之间使用空格 的相关文章

随机推荐

  • VS2008可以调试COM dll吗?

    这可能是一个非常愚蠢的问题 是否可以在 VS2008 中调试我没有源代码的 COM dll 我想要这样做的原因是我将一个数组传递给 COM 方法 并且我希望该数组由该方法填充 然而 该数组并未被填充 所以我想进入 COM 方法看看发生了什么
  • async/await 函数的返回值

    我对这个 async await 的工作原理有点困惑 我有一些像这样的功能 async getDataFromDB let response await fetch let data await response json return d
  • 在每个环境的 Symfony 中禁用 swiftmailer 假脱机

    我无法通过控制台命令使用 symfony2 发送批量电子邮件 我想禁用控制台正在运行的环境的邮件假脱机完成 但保持它在默认环境中工作 所以我在 config yml 中有这个 swiftmailer transport mailer tra
  • ModuleNotFoundError:安装频道后没有名为“win32api”的模块

    我正在使用 WebSockets 和 django 通道构建一个聊天应用程序 我运行 pip installchannels 它安装成功 然后我安装 asgi redis 这也被安装了 现在 当我尝试导入channels asgi时 它给了
  • Ruby 上的 difflib [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有没有类似Python的库difflib http docs python org library difflib html关于鲁比 特别
  • FBSDKSharing回调不返回结果

    在我的 iOS 应用程序中 我有一个 Facebook 共享按钮 它会打开一个 FBSDKShareDialog IBAction post id sender FBSDKShareLinkContent content FBSDKShar
  • 是否已准备好并推荐在 Xcode 4.2 生产中使用故事板? (参见以前的 XIB 方法)

    是否已准备好并推荐在 Xcode 4 2 生产中使用故事板 也就是说 使用过 Storyboard 的 iPhone iPad 开发人员会建议 对于本机 iPhone iPad 应用程序 一定要使用 Storyboard 吗 或者这个概念仍
  • 覆盖内置函数[重复]

    这个问题在这里已经有答案了 我有一大块使用 print 语句的代码 可以这么说 print foo and not print foo 我想改变输出 我可以在不更改所有打印行的情况下执行此操作吗 例如通过覆盖函数 语句 Python dir
  • .nil? 和 .blank? 之间的区别和.空? [复制]

    这个问题在这里已经有答案了 可能的重复 Ruby on Rails 中 nil v empty v blank 的简明解释 https stackoverflow com questions 885414 a concise explana
  • OpenCV 中 Android Yuv420sp 转 ARGB

    我正在尝试将预览回调中的原始图像从手机发送到 PC 然后电脑将处理该图像 我使用 OpenCV 库来进行图像处理 目前我只是在 PreviewCallback 中编写一个函数来将字节数组保存到文件中 并将文件复制到电脑 我编写了一个简单的程
  • WordPress 3.0 自定义帖子类型与上传

    有没有一种方法可以在自定义帖子类型编辑页面上插入一个 或多个 上传字段 我不想使用包含所有字段和内容的媒体库 这是一个相当基本的示例 但它应该可以帮助您上路 function my upload field echo
  • 如何将 Tensorflow 数据集转换为 2D numpy 数组

    我有一个 TensorFlow 数据集 其中包含近 15000 个分辨率为 168 84 的彩色图像 每个图像都有一个标签 它的类型和形状是这样的 lt ConcatenateDataset shapes 168 84 3 types tf
  • RxSwift:onDispose 在 Alamofire 返回数据之前激活

    我正在尝试使用 rxSwift 和 Alamofire 从 REST swift 2 3 获取 JSON 数据 这是我的代码 func getArticles articlesReq ArticlesReq gt Observable lt
  • 在ggplot2中使用for循环排列多个图表

    我想生成一个 pdf 文件 其中显示多个图表 每个图表一个NetworkTrackingPixelId 我有一个与此类似的数据框 gt head data NetworkTrackingPixelId Name Date Impressio
  • mOffsetMatrix 在 Assimp 中实际上做了什么?

    我非常确定 mOffsetMatrix 将顶点从网格空间转换为骨骼空间 这一点已得到证实http assimp sourceforge net lib html structai bone html http assimp sourcefo
  • 被 robots.txt 禁止:scrapy

    在爬行网站时 例如https www netflix com https www netflix com 被 robots txt 禁止 https www netflix com gt 错误 没有下载响应 https www netfli
  • 即使我安装了 2.1,为什么“pip”需要“setuptools >= 0.8”?

    当我尝试时某些命令 https stackoverflow com q 20905350 656912 with pip 我收到一条错误消息 指出pip requires setuptools gt 0 8 for dist info 即使
  • 有没有办法使用 PHP 在 Windows 文件上切换“隐藏”或“只读”开关?

    UPDATED 正如标题所说 有没有办法使用 PHP 在 Windows 上切换 隐藏 或 只读 开关 我想在不打开外壳的情况下执行此操作exec 如果可能的话 一个文件不能是hidden 它总是在文件系统中 NIX 约定文件以 a 开头
  • Python3 - 以编程方式更改 PSD 图层的可见性

    是否可以在不使用 Photoshop 的情况下以编程方式更改 PSD 中的 PSD 图层可见性 我确实检查了 Python 的 PSD 库的各种实现 但它们最好的做法是返回可见性值 例如psd tools 但可见属性是只读的 所以我无法更改
  • Javascript 中的编码约定:括号之间使用空格

    根据 JSHint Javascript 程序员不应在第一个括号之后和最后一个括号之前添加空格 我见过很多添加空格的优秀 Javascript 库 如下所示 foo bar bad according to JSHint 而不是这样 foo