[Javascript] 编程实践之1: Google的Javascript代码风格4:格式化

攻防世界 Crypto 新手练习区 1-12 全详解 本篇是攻防世界 Crypto 新手练习区的全解 阅读详情

4 格式化

术语注释:类块构造是指类,函数,方法或用大括号分隔的代码块的主体。 请注意,通过5.2 数组文法和5.3 对象文法,可以将任何数组或对象文法视作一个类似于块的构造。

提示:使用clang格式。 JavaScript社区投入了很多精力来确保clang格式对JavaScript文件执行正确的操作。 clang格式已与几种流行的编辑器集成。

4.1 大括弧

4.1.1 在所有的控制结构中都使用大括弧

即使主体仅包含单个语句,所有控制结构(即 if, else, for, do, while,以及其他任何操作)都必须使用大括号。 非空块的第一条语句必须以其自己的行开始。

不允许:

if (someVeryLongCondition())
  doSomething();

for (let i = 0; i < foo.length; i++) bar(foo[i]);

例外:一个简单的if语句可以完全放在一行中而没有换行(并且没有其它),当它提高可读性时,可以放在一行中而没有大括号。 这是控件结构可能省略花括号和换行符的唯一情况。

if (shortCondition()) foo();
4.1.2 非空块的K&R风格

对于非空块或者类似块,大括弧遵循Kernighan和Ritchie style (Egyptian brackets) :

  • 左括弧之前没有换行。
  • 左括弧之后换行。
  • 右括弧前有换行。
  • 如果右括号终止一个语句或函数或类语句的主体或类方法,则在右括号后换行。 具体来说,如果在括号之后紧跟着else,catch,while或逗号,分号或右括号,则没有换行符。

例如:

class InnerClass {
  constructor() {}

  /** @param {number} foo */
  method(foo) {
    if (condition(foo)) {
      try {
        // Note: this might fail.
        something();
      } catch (err) {
        recover();
      }
    }
  }
}
4.1.3 空块:可能更精炼

空块或者类似块的构造:在打开后立即关闭,中间不能有字符,空格或者换行符(即{}),除非它是多块语句的一部分(例如直接包含多个区块:if/else或者try/catch/finally)。

例如:

function doNothing() {}

禁止:

if (condition) {
  // …
} else if (otherCondition) {} else {
  // …
}

try {
  // …
} catch (e) {}

4.2 块缩进:+2个空格

每次打开新的块或类似块的构造时,缩进量都会增加2个空格。 当块结束时,缩进将返回到先前的缩进级别。 缩进级别适用于整个块中的代码和注释。 (请参见4.1.2 非空块的K&R风格)。

4.2.1 数组文法:可类似于块

可以选择将任何数组常量格式化为好像是“类似块的构造”。 例如,以下全部有效(并非详尽列表):

const a = [
  0,
  1,
  2,
];

const b =
    [0, 1, 2];
const c = [0, 1, 2];

someMethod(foo, [
  0, 1, 2,
], bar);

允许其它组合,尤其是在强调元素之间的语义分组时,但不应仅用于减少较大数组的垂直大小。

4.2.2 对象文法:可类似于块

可以选择格式化任何对象文字,就好像它是“类似块的构造”一样。 相同的示例适用于4.2.1 数组文法:可类似于块。例如,以下全部有效(并非详尽列表):

const a = {
  a: 0,
  b: 1,
};

const b =
    {a: 0, b: 1};
const c = {a: 0, b: 1};

someMethod(foo, {
  a: 0, b: 1,
}, bar);
4.2.3 类文法

类文字(无论是声明还是表达式)都缩进为块。 不要在方法之后或类声明的右括号后添加分号(包含类表达式的语句(如赋值)仍以分号终止)。 除非该类扩展了模板化类型,否则请使用extend关键字,而不要使用@extends JSDoc注释。

示例:

class Foo {
  constructor() {
    /** @type {number} */
    this.x = 42;
  }

  /** @return {number} */
  method() {
    return this.x;
  }
}
Foo.Empty = class {};
/** @extends {Foo<string>} */
foo.Bar = class extends Foo {
  /** @override */
  method() {
    return super.method() / 2;
  }
};

/** @interface */
class Frobnicator {
  /** @param {string} message */
  frobnicate(message) {}
}
4.2.4 函数表达式

在函数调用的参数列表中声明匿名函数时,函数的主体缩进比前面的缩进深度多2个空格。

示例:

prefix.something.reallyLongFunctionName('whatever', (a1, a2) => {
  // Indent the function body +2 relative to indentation depth
  // of the 'prefix' statement one line above.
  if (a1.equals(a2)) {
    someOtherLongFunctionName(a1);
  } else {
    andNowForSomethingCompletelyDifferent(a2.parrot);
  }
});

some.reallyLongFunctionCall(arg1, arg2, arg3)
    .thatsWrapped()
    .then((result) => {
      // Indent the function body +2 relative to the indentation depth
      // of the '.then()' call.
      if (result) {
        result.use();
      }
    });
4.2.5 Switch语句

与其他任何块一样,切换块的内容缩进+2。

在开关标签之后,出现换行符,并且压痕级别增加了+2,就像在打开一个块一样。 如果词汇作用域需要,可以使用显式块。 以下开关标签将返回到先前的缩进级别,就好像一个块已被关闭一样。

在中断和以下情况之间,空行是可选的。例:

switch (animal) {
  case Animal.BANDERSNATCH:
    handleBandersnatch();
    break;

  case Animal.JABBERWOCK:
    handleJabberwock();
    break;

  default:
    throw new Error('Unknown animal');
}

4.3 语句

4.3.1 每行一条语句

每条语句之后都有一个换行符。

4.3.2 分号是必须的

每个语句必须以分号结尾。禁止依靠自动分号插入。

4.4 列数限制:80

Javascript代码的列数限制为80个字符。除非另有说明,否则超出此限制的任何行都必须进行换行,如4.5 换行中所述。

例外:

  1. goog.module,goog.require和goog.requireType语句(请参见3.3 goog.module语句和3.6 goog.require和goog.requireType语句)。
  2. ES模块从语句导入和导出(请参加3.4.1 导入 和3.4.2.4 export from语句)。
  3. 不能遵守列限制或者妨碍列数限制的例子包括:
    • 需要在源中点击的一个长URL;
    • 用户复制和粘贴的shell命令;
    • 可能需要完全复制或者搜索的长字符串文字(例如长文件路径)。

4.5 换行

术语注释:换行将代码块分成多行以遵守列数限制,否则该代码块可以合法地容纳在一行中。

没有全面的确定性公式可以准确显示在每种情况下的换行方式。 通常,有几种有效的方法可以对同一段代码进行换行。

提示:提取方法或局部变量可以解决问题,而无需换行。

4.5.1 在哪里做行中断

换行的主要指令是:更倾向于在更高的语法级别上做行中断。

倾向于:

currentEstimate =
    calc(currentEstimate + x * currentEstimate) /
        2.0;

而不是:

currentEstimate = calc(currentEstimate + x *
    currentEstimate) / 2.0;

在前面的示例中,从最高到最低的语法级别如下:赋值,除法,函数调用,参数,数字常数。

运算符的包装如下:

  1. 当一行在一个操作符处结束时,在该操作符之后中断。 (请注意,这与Java的Google风格不同)
    - 这不适用于实际上不是运算符的点(.)。
  2. 方法或构造函数名称保持附加在其后的括号(()中。
  3. 逗号(,)始终附加在其前面的令牌上。

注意:换行的主要目的是要有清晰的代码,而不必是适合最少行数的代码。

4.5.2 缩进连续线至少+4个空格

换行时,第一行(每条连续行)之后的每一行都应从原始行开始缩进至少+4,除非它属于块缩进规则。

当有多个连续行时,缩进可以适当地更改为超过+4。 通常,在更深的句法级别上的连续行以4的较大倍数缩进,并且当且仅当它们以句法上平行的元素开始时,两条行才使用相同的缩进级别。

4.6.3 水平对齐:不鼓励:不鼓励使用不固定数量的空格将某些标记与前几行对齐。

4.6 空格

4.6.1 垂直空格

出现一个空白行:

  1. 在类或对象文字中的连续方法之间
    • 例外:对象文字中两个连续属性定义之间的空白行(它们之间没有其他代码)是可选的。 根据需要使用此类空行来创建字段的逻辑分组。
  2. 在方法主体内,谨慎地创建语句的逻辑分组。 在功能主体的开头或结尾处不允许有空行。
  3. 可选地,在类或对象文字中的第一个方法或最后一个方法之后(既不支持也不反对)。
  4. 根据本文档其他部分的要求(例如3.6 goog.require和goog.requireType语句)。

允许使用多个连续的空行,但从不要求(也不鼓励)。

4.6.2 水平空格

水平空白的使用取决于位置,分为三大类:前导(在行的开头),尾随(在行的结尾)和内部。 前导空格(即缩进)在其他地方介绍。 禁止尾随空格。

除了语言或其他样式规则的要求之外,除了文字,注释和JSDoc外,单个内部ASCII空间也仅出现在以下位置。

  1. 将函数和超级除外的所有保留字(例如if,for或catch)与该行后跟的开放括号(())分开。
  2. 将任何保留字(例如else或catch)与该行之前的右花括号(})分开。
  3. 在任何大括号({)之前,但有两个例外:
    • 在对象常量之前,该对象常量是函数的第一个参数或数组常量中的第一个元素(例如foo({a:[{c:d}]})。
    • 在模板扩展中,如语言所禁止(例如有效:ab $ {1 + 2} cd,无效:xy $ {3} z)。
  4. 在任何二元或三元运算符的两侧。
  5. 在逗号(,)或分号(;)之后。请注意,这些字符之前绝对不允许有空格。
  6. 对象文字中冒号(:)之后。
  7. 在双斜杠(//)的两边,开始行尾注释。在此,允许多个空格,但不是必需的。
  8. 在开放块注释字符之后和在封闭字符的两侧(例如,用于简短形式的类型声明,强制类型转换和参数名称注释):
    this.foo = / ** @type {number} * /(bar);或函数(/ *字符串 / foo){;或baz(/ * buzz = * / true))。
4.6.3 水平对齐:不鼓励

术语注:水平对齐是在代码中添加可变数量的附加空格的一种做法,目的是使某些标记直接出现在前几行中其他标记的下面。

允许这种做法,但Google风格通常不鼓励这样做。 甚至不需要在已经使用过的地方保持水平对齐。

这是一个不带对齐的示例,然后是一个带对齐的示例。 两者都允许,但不鼓励后者:

{
  tiny: 42, // this is great
  longer: 435, // this too
};

{
  tiny:   42,  // permitted, but future edits
  longer: 435, // may leave it unaligned
};

提示:对齐可以提高可读性,但会给以后的维护带来麻烦。 考虑未来的变化,只需要触碰一条线。 此更改可能会使原本令人愉悦的格式受到干扰,这是允许的。 通常,它会提示编码员(也许是您)也调整附近行的空白,可能触发一系列级联的重新格式化。 单行更改现在具有爆炸半径。 在最坏的情况下,这可能会导致毫无意义的繁忙工作,但在最佳情况下,它仍会破坏版本历史记录信息,减慢审阅者的速度并加剧合并冲突。

4.6.4 函数参数

最好将所有函数参数与函数名称放在同一行。 如果这样做会超过80列的限制,则必须以可读的方式将参数换行。 为了节省空间,您可以尽可能地将其换行为80,或者将每个参数放在自己的行上以提高可读性。 缩进应为四个空格。 允许与括号对齐,但不鼓励这样做。 以下是参数包装的最常见模式:

// Arguments start on a new line, indented four spaces. Preferred when the
// arguments don't fit on the same line with the function name (or the keyword
// "function") but fit entirely on the second line. Works with very long
// function names, survives renaming without reindenting, low on space.
doSomething(
    descriptiveArgumentOne, descriptiveArgumentTwo, descriptiveArgumentThree) {
  // …
}

// If the argument list is longer, wrap at 80. Uses less vertical space,
// but violates the rectangle rule and is thus not recommended.
doSomething(veryDescriptiveArgumentNumberOne, veryDescriptiveArgumentTwo,
    tableModelEventHandlerProxy, artichokeDescriptorAdapterIterator) {
  // …
}

// Four-space, one argument per line.  Works with long function names,
// survives renaming, and emphasizes each argument.
doSomething(
    veryDescriptiveArgumentNumberOne,
    veryDescriptiveArgumentTwo,
    tableModelEventHandlerProxy,
    artichokeDescriptorAdapterIterator) {
  // …
}

4.7 括弧分组:推荐

可选的分组括弧只有在作者和审阅者一致认为,没有括弧时代码仍然不会被误读, 以及省略括弧也不会使得代码更易于阅读时,才会被省略。假设每个读者都记住了整个运算符优先级表是不合理的。

不要为如下这些词后面的表达式上添加不必要的括弧:delete,typeof,void,return,throw,case,in,of以及yield。

对于类型转换,括弧是必须的,例如:/** @type {!Foo} */ (foo)。

4.8 注释

这部分描述实现注释。JSDoc则另外在7 JSDoc中进行详述。

4.8.1 块注释风格

块注释被缩进到与周围代码相同的级别。它们可能是/…/或//风格的。对于多行/…/注释,后面的行必须以与前一行的对齐的开始,这样注释就很明显,没有额外的上下文。可选的分组括号只有在作者和审阅者一致认为没有括号,代码就不会被误读的情况,以及有了代码也不会使得代码更易于阅读的情况下才被忽略。假设每个阅读者都记住了整个运算符优先表是不合理的。

/*
 * This is
 * okay.
 */

// And so
// is this.

/* This is fine, too. */

注释不包括在带有星号或其它字符的框中。

不要使用JSDoc(/**…*/)作为实现注释。

4.8.2 参数名注释

当值和方法名不能充分表达其含义,并且重构方法也不可以使得其更清晰时,应该使用“参数名”注释。它们的首选格式是在值之前添加=。

someFunction(obviousParam, /* shouldRender= */ true, /* name= */ 'hello');

为了与周围的代码保持一致,你可以把它放在后面没有=的后面。

someFunction(obviousParam, true /* shouldRender */, 'hello' /* name */);
【23】OpenCV C++实战篇——张正友相机标定【相机标定原理、相机标定流程、标定结果评价、图像畸变矫正】 R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。R是3×3的正交单位矩阵(即旋转矩阵),t为平移向量,R、t与摄像机无关,所以称这两个参数为摄像机的外参数(extrinsicparameter),可以理解为两个坐标原点之间的距离,因其受x,y,z三个方向上的分量共同控制,所以其具有三个自由度。 阅读详情

相关推荐

通达信强龙趋势幅图指标 - 精准捕捉趋势,把握强势行情,多角度分析个股,强弱一目了然

STICKLINE(趋势>0 AND SJTJ,4.8,5.8,1.5,0),COLORYELLOW;STICKLINE(资金>0 AND SJTJ,1.2,2.2,1.5,0),COLOR0080FF;STICKLINE(异动>0 AND SJTJ,0,1,1.5,0),COLORFF0080;STICKLINE(异动=0 AND SJTJ,0,1,1.5,1),COLORGRAY;

Q1809330692的博客 5631

Chrome谷歌浏览器在DevTools中调试JS代码格式化

格式化Chrome浏览器中DevTools视图中调试的JS

O(∩_∩)O哈哈~ 2350

Unified Access Control:从NAS到RRC的5G接入控制全流程解析

本文深入解析了5G统一接入控制(Unified Access Control)的全流程,从NAS到RRC的协同工作机制。通过身份核验、业务分类和动态决策三个核心步骤,UAC实现了智能调度和弹性决策,确保海量设备接入时的网络稳定性。文章详细介绍了USIM卡的身份凭证体系、NAS层的业务分类引擎以及RRC层的动态决策机制,并提供了实战案例和常见问题排查方法。

weixin_30855099的博客 589

goog.provide & Google Closure

问:Goog.provide和Goog.require有什么区别? 答:goog.provide创建一个名称空间; goog.require从给定的名称空间中“导入”代码,以便闭包编译器可以找到它。 通常,在创建类时,将为其提供一个名称空间,并需要您的类直接使用的所有名称空间。 goog.provide 规则1 goog.provide 语句放在前面,goog.require 放后面,两者用一行空行分隔。 所有引用按字母排序。 两种引用都不换行,即使超过列宽 80 的限制。 只提供顶级 symbol。

Antrn 2073

hpm6750evk2开发板(一)菜鸟入门

hpm6750与我们平时常用的stm单片机在开发环境和开发方法上有很大的区别,所以上手还是需要花一点时间的,拿到板子先不要急着上电调试,我们先找资料学习一下了,免得多走冤枉路,以下是我整理的一些学习资源,包括开发板使用手册、芯片SDK、开发工具、视频资料等,建议先把使用手册和学习视频先看了,再取搭建环境测试。最近刚入手一块hpm6750evk2开发板,花了几天时间学习,算是菜鸟入门了,今天分享一下学习过程。看完资料后,把开发工具安装上,下一篇文章我们分享一下调试工程的过程和遇到的问题。

Silas1750的博客 3085

Ubuntu零基础教学-如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

带你如何把Ubuntu20.04界面从英文修改为中文?| 超级详细,建议收藏

**My Coding Family** 5340

JS编码规范JavaScript Standard Style

这是 JavaScript standard 代码规范的全文。掌握本规范的最好方法是安装并在自己的代码中使用它。细则使用两个空格进行缩进。eslint: indentfunction hello (name) {  console.log('hi', name)}除需要转义的情况外,字符串统一使用单引号。eslint: quotesconsole.log('hello there')$("&lt;...

HiterCoder 740

agent实战专栏|日程管理Agent:智能时间管家

在快节奏的现代生活中,时间管理已成为每个人面临的核心挑战。根据全球知名调研机构 Gallup 的统计数据,现代职场人平均每天仅能有效专注工作 2 小时 23 分钟,剩余时间被会议、邮件、碎片化事务大量占据。微软的另一项研究显示,知识工作者平均每天需要处理 200 多条日程相关的信息,包括会议邀请、日历变更、提醒通知等。传统的日历工具(如 Google Calendar、Outlook Calendar、Apple Calendar)虽然在可视化展示和基础提醒方面表现出色,但在智能化方面仍存在明显短板:日程管

2201_76125393的博客 52

Google Java风格指南

原文地址:https://google.github.io/styleguide/javaguide.html 1简介 本文档作为Java编程语言中源代码的Google编码标准的完整定义。 当且仅当它遵守本文中的规则时,Java源文件被描述为在Google Style中。 与其他编程风格指南一样,所涵盖的问题不仅包括格式化的美学问题,也包括其他类型的约定或编码标准。

纸上得来终觉浅,绝知此事要躬行 2003

STM32F4 Flash数据的保存和读取。

STM32F4 Flash数据的保存和读取。

张一西的博客 9216

运行codex时出现登录失败:failed to start login server: 以一种访问权限不允许的方式做了一个访问套接字的尝试。 (os error 10013) 解决方案

的本质是Windows 系统端口保留策略而非代码 bug。推荐使用方案一(调整动态端口范围),一劳永逸解决。如果你安装了 Docker Desktop 或启用了 WSL2,调整端口范围后记得检查相关服务是否正常运行。

一键难忘的博客 4155

java中代码和注释缩进_java编码规范_缩进和注释

1.缩进排版(Indentation)4个空格常被作为缩进排版的一个单位。缩进的确切解释并未详细指定(空格vs.制表符)。一个制表符等于n个空格(视具体的编辑器而定,Eclipse默认一个制表符为4个字符)。3.1行长度(Line Length)尽量避免一行的长度超过80个字符,因为很多终端和工具不能很好处理之。注意:鉴于Eclipse开发工具工作区的左侧和右侧都被非代码编辑器所占据,因此建议每行...

weixin_30711615的博客 1142

手把手带你完成基于UNet的医学图像分割系统设计与实现,UNet网络架构讲解,UNet复现,使用vibe coding工具,开发一个完整系统,包含完整源码

哈喽,大家好,这里是落花不写码,本次教程讲一下 U-Net 分割篇,U-Net 它是一篇 2015 年发表的论文,那为什么到现在还需要讲呢?因为后续讲到 GAN、扩散模型时候是离不开 U-Net 架构的,所以今天先带大家使用 U-Net 模型完成一些图像分割。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 870

[Javascript] 编程实践之1: Google的Javascript代码风格8:一些策略

Google的Javascript风格指南8 一些策略8.1 Google样式指南未明确指出的问题:请保持一致性!8.2 编译器警告8.2.1 使用标准警告集8.2.2 如何处理警告8.2.3 在最窄的合理范围内禁止警告8.3 弃用8.4 代码不是Google风格8.4.1 重新格式化已有代码8.4.2 新加入的代码:请遵照Google风格8.5 本地风格规则8.6 生成的代码:大部分豁免 8 一些策略 8.1 Google样式指南未明确指出的问题:请保持一致性! 对于本规范未明确解决的任何样式问题,请优先

魔豆(Magicbean)的博客 326

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

[Javascript] 编程实践之1: Google的Javascript代码风格1:简介

Google的Javascript风格指南内容目录1、简介1.1、术语注意事项1.2、规范注意事项2、源文件基础2.1、文件命名2.2、文件编码:UTF-82.3、特殊字符2.3.1、空格字符2.3.2、特殊转义序列2.3.3、非ASCII字符3、源文件结构3.1、许可证或者版权信息(如果有)3.2、@fileoverview JSDoc (如果有)3.3、goog.module语句4、格式5、语...

魔豆(Magicbean)的博客 460

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

[Javascript] 编程实践之1: Google的Javascript代码风格5:语言特性

Google的Javascript风格指南5 语言特性5.1 局部变量声明5.1.1 const和let的使用5.1.2 每次只声明一个变量5.1.3 仅在需要时声明,并且尽快初始化5.1.4 根据需要声明类型5.2 数组文法5.2.1 使用拖拽逗号5.2.2 不要使用可变数组的构造函数5.2.3 非数值性质5.2.4 析构5.2.5 传播算子(Spread operator)5.3 对象文法5.3.1 使用拖拽逗号5.3.2 不要使用Object的构造函数5.3.3 不要混合使用含引号和不含引号的关键字5

魔豆(Magicbean)的博客 616

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

[Javascript] 编程实践之1: Google的Javascript代码风格3:源文件结构

Google的Javascript风格指南3 源文件结构3.1 许可证或者版权信息(如果有)3.2 @fileoverview JSDoc (如果有)3.3 goog.module语句3.3.1 层次结构3.3.2 goog.module.declareLegacyNamespace3.3.3 goog.module导出3.4 ES模块3.4.1 导入3.4.1.1 导入路径3.4.1.1.1 在路径导入中的文件名扩展3.4.1.2 多次导入同一文件3.4.1.3 名称导入3.4.1.3.1 名称模块导入3

魔豆(Magicbean)的博客 779

[Javascript] 编程实践之1: Google的Javascript代码风格7:JSDoc

Google的Javascript风格指南7 JSDoc7.1 通用形式7.2 Markdown7.3 JSDoc标签7.4 换行7.5 顶级/文件级注释7.6 类注释7.7 Enum和typedef注释7.8 方法和函数注释7.9 属性注释7.10 Type注释7.10.1 可空性7.10.2 类型转换7.10.3 模板参数类型7.10.4 函数类型表达式7.10.5 空格7.11 可见性注释 7 JSDoc JSDoc在所有类、域以及方法中被使用。 7.1 通用形式 在此示例中可以看到JSDoc块的基本

魔豆(Magicbean)的博客 1041

[Javascript] 编程实践之1: Google的Javascript代码风格9:附件

Google的Javascript风格指南9 附件9.1 JSDoc标签参考9.1.1 类型注释和其他Closure Compiler注释9.1.2 文档注释9.1.2.1 @author 或者 @owner - 不推荐9.1.2.2 @bug9.1.2.3 @code -弃用, 不推荐使用9.1.2.4 @desc9.1.2.5 @link9.1.2.6 @see9.1.2.7 @supported9.1.3 适用于特定框架的注释9.1.3.1 @ngInject 特定于Angular 19.1.3.2

魔豆(Magicbean)的博客 605

[Javascript] 编程实践之1: Google的Javascript代码风格6:命名规范

Google的Javascript风格指南6 命名规范6.1 所有标识符的通用规则6.2 标识符类型规则6.2.1 Package命名6.2.2 Class命名6.2.3 Method命名6.2.4 Enum命名6.2.5 Constant命名6.2.5.1 “constant”的定义6.2.5.2 本地别名6.2.6 非常量域名称6.2.7 参数名称6.2.8 局部变量名称6.2.9 模板参数名称6.2.10 模块局部名称6.3 驼峰案例:定义 6 命名规范 6.1 所有标识符的通用规则 标识符仅使用AS

魔豆(Magicbean)的博客 697

Google 编程风格:C++、Python、JavaScript、Shell、TypeScript

Google 编程风格:C++、Python、JavaScript、Shell、TypeScript

freeking101的博客 5万+

还在纠结JS代码风格? Google给你你答案了!

Google JavaScript 代码风格指南Google 和 Airbnb 是目前最流行的 JavaScript 代码风格,如果你长期使用 JavaScript 来写...

全栈空间 658

Google Java 代码风格指南详解

Google Java 代码风格指南详解 【免费下载链接】styleguide 项目地址: https://gitcode.com/gh_mirrors/st/styleguide ...

gitblog_00378的博客 491

Windows 家庭版/专业版多用户远程桌面:如何更新 rdpwrap.ini 与版本匹配方法

rdpwrap.ini 项目是 RDP Wrapper Library 的核心配置文件,它让 Windows 家庭版/专业版系统通过 Windows 远程桌面实现多用户连接,覆盖范围从 Windows 7 到 Windows 11 及 Windows Server 2019/2022。其核心机制是:每次 Windows 更新都会替换 termsrv.dll(远程桌面服务的核心模块),旧的补丁配置随

gitblog_00256的博客 1014

[Javascript] 编程实践之1: Google的Javascript代码风格2:源文件基础

Google的Javascript风格指南2 源文件基础2.1 文件命名2.2 文件编码:UTF-82.3 特殊字符2.3.1 空格字符2.3.2 特殊转义序列2.3.3 非ASCII字符 2 源文件基础 2.1 文件命名 文件名必须全部为小写,并且可以包含下划线(_)或者破折号(-),但不能包含其它标点符号。具体请遵循项目使用的约定。文件名的扩展名必须为.js。 2.2 文件编码:UTF-8 源文件编码方式为UTF-8。 2.3 特殊字符 2.3.1 空格字符 除行终止符序列外,ASCII水平空格字符(0

魔豆(Magicbean)的博客 275

[TypeScript] 编程实践之1: Google的TypeScript代码风格1:介绍

TypeScript语言规范1 介绍1.1 环境声明1.2 函数类型1.3 对象类型1.4 结构子类型化1.5 上下文类型推断1.6 类1.7 枚举类型1.8 字符串参数重载1.9 通用类型和功能1.10 命名空间1.11 模块 版本1.8 2016年1月 Microsoft自2012年10月1日起根据Open Web Foundation最终规范协议版本1.0(“ OWF 1.0”)提供此规范。OWF 1.0可以从http://www.openwebfoundation.org/legal/the-owf

魔豆(Magicbean)的博客 1398
上一篇: [Javascript] 编程实践之1: Google的Javascript代码风格3:源文件结构
下一篇: [Javascript] 编程实践之1: Google的Javascript代码风格5:语言特性
魔豆Magicbean
博客等级 码龄19年 146粉丝 742原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值