前端变量命名规范

访客4年前黑客工具1187

程序开发过程中变量命名不仅是一个头疼问题,也是一个对开发者综合素质的磨练,它会直接影响到代码的最终交付质量、代码Review职员心智承受力。若何写出具有创造性、优雅性、易读性的高质量代码,需要开发者在现实工作中不停总结、提炼,在阅读他人代码时不停地吸收,并在一定的编码规范上形成自己的编码气概。在代码一道除了资质和履历更需要一份详实的参考来辅助,这正是本系列文章的起点所在。

变量的命名不局限于JavaScript代码中的属性、方式和工具,也包罗了路由的命名,工程结构的命名,数据库表和字段的命名,样式中Class和ID选择器的命名,HTML米素的选择等。


命名规则

现在盛行的经典命名规则有:驼峰命名法、匈牙利命名法、下划线命名法、帕斯卡命名法

相关命名的详细规则请另行查阅。前端主要涉及到驼峰命名法,React组件会用到帕斯卡命名法。

然后是变量命名规则:

  • 变量名首字母必须为字母(a-z A-Z),下划线(_),或者美米符号($)更先
  • 变量名只能是字母(a-z A-Z),数字(0-9),下划线(_)的组合,而且之间不能包罗空格,数字不能放在变量名首位。
  • 变量名不能使用编程语言的保留字。好比在javascript中不能使用true, false, while, case, break保留字等等。


命名气概

这里给出一些在开发过程中约定成俗的通用规则,涉及JavaScript, Typescript, 框架组件, 样式及目录。在文章中将使用【强制】来示意必须严格遵守,【推荐】来示意建议,【参考】来给出多种命名方式的一种。

1. 【强制】在JavaScript中使用驼峰命名法来示意变量,不能以下划线或美米符号作为更先和竣事。

// 反例
_name
__name
name_
$name
name$
弥补:由于受框架和第三方库及语言限制,不可能完全避免。例如:在RxJs中通常命绅士的时刻是以 变量名 + $ 的形式,在Class中界说私有变量时通常以 _ + 变量名 的方式来示意,在Vue中内部实例方式所有以 $ 更先,在AngularJs中内部方式以 $$ 更先,而lodash直接使用 _ 作为其别名。


2. 强制】在代码中严禁使用拼音与中英文夹杂的方式,更不允许直接使用中文的方式。除了一些国际通用的中文名称,要视为英文外,其它克制使用。

// 正例
taobao
tmall
shanghai
coupons

// 反例
yhq [优惠券]


3. 【强制】类名使用大写驼峰命名法来示意,Typescript中枚举值使用大写驼峰命名法示意。

// 正例
class User {}
enum Color {Red = 1, Green, Blue}

// 反例
class user {}


4. 【强制】常量名所有大写,单词间使用下划线离隔,力图表达完整清晰,不要嫌名字长。

// 正例
GOOGLE_MAP_TOKEN

// 反例
TOKEN


5. 【建议】Typescript中抽象类使用 Abstract 或 Base 开头;异常类使用 Exception 末端。

abstract class BaseDepartment {}


6. 【建议】在TypeScript中,类型使用 Type 作后缀,接口使用 I 作为前缀。

type PropsType = {}
interface ILoginProps {}


7. 【建议】 接纳有意义的命名,在项目中坚持使用一种变量命名方式。不要 usr 与 user 混用

// 正例
users
getUserByUid()

// 反例
registerUsr()
copyUserInfo()


8. 【建议】方式名必须准确表达该方式的行为,在多数情况下以动词开头。

// 正例
fetchCoupons()
updateToken()
createAccount()
generateUniqueId()

// 反例
getData()


9. 【建议】可以使用单词简写,然则只局限于常用词汇,注重差别词汇的简写有可能冲突。

// 正例
setProps() [props -> property]
selectCouponsDlg() [dlg -> dialog]
readPkg() [pkg -> package]
previewTpl [tpl -> template]

// 反例
vehicleDesc [desc -> description]
vehicleDesc [desc -> descending]
vehicleAesc [aesc -> aescending]
fetchUsr() [usr -> user]


10. 【建议】在Vue和Angular中,模板语法中所有组件名使用中线命名法,在React中使用大写驼峰命名法来示意。

// Vue
<el-button type="text" @click="toDetail">详情</el-button>
<custom-component a-prop="prop" />

// Angular
<nz-sider [nzWidth]="200" style="background:#fff"></nz-sider>

// React
<SelectPicture data={this.images} />


11. 【推荐】统一使用中线命名法来命名目录。

|-- page-header
|   |-- PageHeader.vue

12. 【参考】在Vue模板语法中组件属性使用连字符命名法,在Vue中使用 *** X则属性使用驼峰命名法,而且文件文以”.jsx”为文件类型。

<Thumbnail
  withHeadPicture={true}
  data={this.selectedImages[0]}
  withDetail={this.enabledDetail}
/>


13. 【强制】在服务名上使用 Service 后缀

class UserService {}


14. 【建议】在Vue中组件文件名接纳大写驼峰命名方式,React同样云云,在Angular中以使用点和横杠来分开文件名,而且符号名后面追加约定的类型后缀。

// Vue
User.vue

// Angular
app.component.ts
hero-list.component.ts
validation.directive.ts
app.module.ts
user-profile.service.ts

// React
User.jsx


15. 【参考】在React中使用目录名称作为组件名,在目录内容直接使用index作为入口,在Vue中不可以,在Angular中可以将index作为模块的入口,固然也可以直接作为组件的入口,但这样和其整个命名气概有所背离。

// Vue
|-- user-info
|  |-- UserInfo.vue

// Angular
|-- user-info
|  |-- user-info.component.ts
|  |-- index.ts

// React
|-- user-info
|   |-- index.jsx


16. 【建议】在工程中文档使用全大写命名

README.md
CONTRIBUTORS.md
CHANGELOG.md


17. 【建议】在Vue中指令命名使用 filter 作为竣事。所有引用命名使用 ref 作为后缀

formatCouponsFilter
inputRef
selectRef


18. 【强制】测试文件以 .spec 或者 .test 作为命名的一部分。

selectPicture.spec.js
pageHeader.test.js


19. 【建议】复数化变量名称,而不是命名中包罗聚集类型名称。

// 正例
hosts
users
validUsers
hostText
hostJson
portNumber

// 反例
hostList
userList
hostStr
intPort


20. 【建议】在 for 循环中使用 i, j, k 来作为索引,使用 n 示意数目/次数/限制,使用 e 示意异常, 使用 evt 示意事宜工具, 使用 cb 示意回调函数

for (let i = 0; i < 10; i++) {
  for (let j = 0; j < 10; j++) {
    for (let k = 0; k < 10; k++) {
      // do something
    }
  }
}


21. 【强制】在解构时使用 const 来声明。

const [ foo, bar ] = { foo: 1, bar: 2 }


22. 【建议】在样式中Class命名可以使用一些常用简写来削减长度。

hd -> head
hdr -> header
ft -> foot
ftr -> footer
pg -> page
btn -> button
txt -> text
el -> element
opt -> option
bd -> border
cl -> clearfix
p -> padding
m -> margin
l -> left
r -> right
t -> top
b -> bottom
x -> horizontal
y -> vertical
px -> padding-left, padding-right
py -> padding-top, padding-bottom
pl -> padding-left
m -> margin
dlg -> dialog
sel -> select
img -> image
lbl -> label
chk -> checkbox
tpl -> template
tbl -> table
hoz -> horizontal
vert -> vertical
ref -> reference
wiz -> wizard
oh -> overflow: hidden
弥补:有些简写不能单独使用,终须组合才气使用,例如: p, m, x, y等单个词汇。


23. 【建议】在命名时接纳BEM的方式,并适当转变,详细参见后续文章。

.page-header__main
.dialog__content
.gallery-list--wrap
.thumbnail-image--info
.action__btn-group


24. 【建议】样式Class命名使用中线毗邻,ID命名接纳下划线毗邻。Class可以同时接纳中线和下划线,但要遵照一定的规则。

.thumbnail-item__image
#page_header


25. 【参考】样式Class接纳组合方式,通过外层Class名来限 *** 用局限。

// 正例
<div class="53fc-7255-ba73-6808 page-header">
  <div class="7255-ba73-6808-03c4 page-header__wrap common"></div>
  <div class="ba73-6808-03c4-e0af page-header__wrap tab"></div>
</div>

// 反例
<div class="06df-8f41-9b57-75ac page-header">
  <div class="8f41-9b57-75ac-d952 page-header__wrap page-header--common"></div>
  <div class="9b57-75ac-d952-2d22 page-header__wrap page-header--tab"></div>
</div>
弥补:这种方式的目的在于削减长度,通过 "主体 + 分类名词" 的方式,可以解释为 “带分类的主体”,然则有一个问题是全局样式要注重不要使用通用的词汇来界说样式,好比 title, action, header, footer, left, right等,否则会引起样式笼罩。


原文:https://segmentfault.com/a/1190000019887173


思源资源网:分类流动

1.阿里云: 本站现在使用的是阿里云主机,平安/可靠/稳固。点击领取2000米代金券、领会最新阿里云产物的种种优惠流动点击进入

相关文章

新年起一批新规将实施 这些钱以后可以省下了!

中新网客户端北京12月31日电 2020年已近在眼前,你准备好迎接它了吗?新年伊始,一大批与生活息息相关的新政策法规即将实施。 进口商品买买买更便宜、医药费用负担减轻、部分行政事业性收费降低……一起...

手机数据恢复大师免费版下载

可以在360安全卫士里面找下哇,如果不好找的话,也可以尝试下其他的数据恢复软件,不一定就要使用360数据恢复大师哈建。 如何才能恢复这些数据,建议找到合适的工具来恢复就可以了。下面这个应该很适合 可以...

黑客为什么可以入侵别人电脑(黑客ip入侵电脑教程)-黑客能看到别人的浏览记录吗

黑客为什么可以入侵别人电脑(黑客ip入侵电脑教程)-黑客能看到别人的浏览记录吗

黑客为什么可以入侵别人电脑(黑客ip入侵电脑教程)(tiechemo.com)一直致力于黑客(HACK)技术、黑客QQ群、信息安全、web安全、渗透运维、黑客工具、找黑客、黑客联系方式、24小时在线网...

qq封号怎么快速解除(免费强制解冻QQ软件工具)

qq封号怎么快速解除(免费强制解冻QQ软件工具)

QQ被无端禁封 15日下午,大量网民表明自身的QQ账户忽然提醒“因涉嫌业务流程违反规定”被无端禁封,被禁封的网民表明账户一直在自身手机上中一切正常应用,并沒有出現失窃的状况,忽然那样一个提醒...

刷単上当怎么找黑客-红客厉害照样黑客厉害(黑客跟红客哪个厉害)

怎么加入QQ网络黑客 怎祥根据手机号查身份证件后4位(手机号查身份信息) 千牛后台管理怎么拉黑顾客 网络黑客技艺在哪学(从零开始学网络黑客技艺) qq上如何找黑客 全世界最强...

黑客去的场所(黑客入侵违法吗)

黑客去的场所(黑客入侵违法吗)

密接去过的场所需要消毒吗 1、密接者去过的地方处理方法:一般是需要消毒的。严格对社区人群聚集的公共场所进行清洁、消毒和通风,改善环境卫生状况。2、密接去过的场所一般是需要消毒的,但具体情况是当地防控办...