React命名约定 - 整洁代码的基础
我们将深入探讨命名约定的关键主题,以及它们如何作为 React 中干净且可维护的代码的基础。
命名约定在提高代码可读性、可维护性、组织和通信方面发挥着至关重要的作用。它们有助于创建一个有凝聚力和结构化的代码库,该代码库更易于使用、减少错误并促进开发人员之间的协作。
在这一部分中,我们将特别关注 React 中的命名约定。我们将探索在 React 项目中命名组件、变量、函数和其他标识符的推荐方法。您将深入了解PascalCase、CamelCase、kebab-case和SCREAMING_SNAKE_CASE等流行约定,并了解何时何地应用它们。
(资料图)
我们还将讨论准确反映代码中元素的用途和功能的有意义的描述性名称的好处。
(更|多优质内|容:java567 点 c0m)
### 帕斯卡案例
> 帕斯卡大小写通常是指书写复合词的惯例,其中每个单词的第一个字母大写,并且单词之间没有空格或标点符号。
在 React 中,我们可以对以下元素使用帕斯卡大小写:
1. 反应组件
```
// React Component
const Todo = () => {
//...
}
```
类名
```
// CSS Class Names
```
3. 枚举
```
// Enums
const RequestType = {
//...
}
```
### 骆驼香烟盒
> 驼峰式大小写是指书写复合单词或短语的惯例,其中每个单词都以大写字母开头,第一个单词以小写字母开头。
在 React 中,我们可以对以下元素使用驼峰式大小写:
1. 变量名称
```
// Variable Name
const userName = "sathishskdev";
```
2. 函数名称
```
// Function Name
const getFullName = (firstName, lastName) => {
return `${firstName} ${lastName}`;
}
```
3. 对象属性
```
// Object Properties
const user = {
userName: "sathishskdev",
firstName: "Sathish",
lastName: "Kumar"
}
```
模块类名
```
// CSS Module Class Names
.headerContainer {
display: "flex";
}
```
5. 自定义挂钩
```
const useTodo = () => {
//...
}
```
6. 高阶组件
```
const withTimer = () => {
//...
}
```
### 烤肉串盒
> Kebab 大小写是指用小写字母书写复合词并用连字符(“-”)分隔的约定。
在 React 中,我们可以对以下元素使用 kebab case:
类名
```
// CSS Class Names
header-container {
display: "flex";
}
<div className="header-container">
//...
</div>
```
2. 文件夹名称
```
// Folder Names
src
todo-list // Folder name
todo-item // Folder name
```
### SCREAMING_SNAKE_CASE
> SCREAMING_SNAKE_CASE 指的是用大写字母书写复合单词或短语的约定,单词之间用下划线(“_”)分隔。
1. 常量
```
// Constants
const BASE_PATH = "/services/api";
```
2. 枚举属性
```
// Enumeration Properties
const RequestType = { // Name in Pascal Case
// Properties in Screaming Snake Case
GET: 'GET',
POST: 'POST',
PUT: 'PUT',
DELETE: 'DELETE',
};
```
3. 全局变量
```
// Global Variables
const ENVIRONMENT = 'PRODUCTION';
const PI = ;
```
### 高阶组件命名约定
以下是命名高阶组件的最佳实践:
1.使用“with”作为前缀
常见约定是使用前缀“with”,后跟 HOC 的功能或用途。
2.使用“原始组件”作为后缀
在 HOC 名称中包含原始组件名称,以指示它正在增强或包装的组件
```
// HOC: name have "with" as Prefix
// "Filter" is add as Suffix which is original component
const withFilter = () => {
//...
}
// Usage of the HOC
const Filter = withFilter(/*Component Name*/);
```
### 自定义 Hook 命名约定
以下是命名自定义挂钩的最佳实践:
1.使用“use”作为前缀
常见约定是使用前缀“use”,后跟自定义 Hook 的功能或用途。
2.使用“钩子的行为”作为后缀
命名准确描述自定义钩子的目的或行为的自定义钩子。
```
// Custom Hook: useTimer
// name have "use" as Prefix
// "Timer" is add as Suffix which is behaviour of hook
const useTimer = (initialTime) => {
// ... hook implementation
};
// Usage of the custom hook
const { time, start, stop, reset } = useTimer(60);
```
### 使用更具描述性和具体的名称
避免对组件、变量或函数使用通用或不明确的名称非常重要。
让我们举个例子来说明这一点:
```
// ❌ Pitfalls to Avoid
const MyComponent = () => {
// What kind of component is this?
const data = getData()
// What kind of data is this?
const onClick = () => {
// What does it do?
}
//...
}
```
在上面的示例中,组件名称、变量名称“data”和函数名称“onClick”是通用的,不传达它们的特定用途或上下文。
为了提高清晰度和可维护性,建议使用更具描述性和具体的名称。
这是一个最佳实践:
```
// ✅ Best Practice
const ProductDetails = () => {
const productInfo = fetchProductInfo();
// Fetches detailed product information
const addProductToCart = () => {
// Add the product to the shopping cart
};
//...
}
```
在改进的示例中,该组件被重命名为“ProductDetails”,这清楚地表明了其用途。变量名称“productInfo”表明它保存有关产品的详细信息。函数名称“addProductToCart”描述了将产品添加到购物车的操作。
从长远来看,通过使用描述性且有意义的名称,其他开发人员(包括您自己)可以更轻松地理解和维护代码。
### 选择单数或复数命名
决定对各种元素(例如组件、变量和函数)使用单数或复数名称可能会显着影响代码的清晰度。
让我们举个例子:
```
// ✅ Best Practice
const fetchConversation = () => {
// Fetch single conversation.
}
const fetchConversations = () => {
// Fetch multiple conversations.
}
// Use singular name for a single conversation
const conversation = { /*Conversation Details*/ }
// Use plural name for multiple conversation
const conversations = [
{ /*Conversation Details*/ },
{ /*Conversation Details*/ }
]
```
通过将组件、函数和变量名称的单数或复数形式与其预期目的保持一致,我们提高了代码的可读性,并有助于其他开发代码库的开发人员更好地理解。
### 避免过多缩写
下面的示例演示了避免在代码中使用过多缩写的重要性:
```
// ❌ Bad example
// Excessive abbreviation
const selUsr = {
usrId: '1',
usrNm: 'Sathish Kumar',
usrEmail: 'sathish@',
};
// Usage
```
在上面的示例中,对象selUsr包含选定的用户信息以及缩写属性名称usrId,例如usrNm、 和usrEmail。虽然此代码可能有效,但它缺乏清晰度,可能会给需要使用此对象和属性的其他开发人员造成混乱。
这是一个最佳实践:
```
// ✅ Best Practice
// Descriptive object and property names
const selectedUser = {
userId: 1,
userName: 'Sathish Kumar',
userEmail: 'sathish@',
}
// Usage
```
在此示例中,属性名称userId、userName和userEmail更具描述性,可以更清楚地了解所使用的数据。这使得代码更易于阅读、维护和协作,从而有助于提高整体代码质量。
我们对 中命名约定的探索到此结束。通过遵循这些最佳实践,您就可以在 React 项目中创建干净、可读且可维护的代码。
请记住,为变量、函数、组件和其他元素选择有意义且具有描述性的名称对于提高代码清晰度和改善开发人员之间的协作至关重要。整个项目中命名约定的一致性将使您的代码库更有条理且更易于理解。
在本系列的下一部分中,我们将深入研究React 中文件夹结构的关键主题。我们将讨论如何有效地组织项目的文件和目录,以及如何实现提高代码可重用性和可维护性的模块化方法。
请继续关注下一篇文章!
快乐编码!
(更|多优质内|容:java567 点 c0m)
标签:
- React命名约定 - 整洁代码的基础
- 香港二手楼市仍处于拉锯局面 整体楼价持续窄幅徘徊
- 扎克伯格打不赢马斯克?专业教练点评
- 速递!汽车类消费拉动强劲!1—5月江苏省社零总额达18906.5亿元
- 世界速读:长达数十小时的游戏故事如何成为电影?导演:索尼正考虑将其扩展
- 全球热消息:法布尔的简介及作品_法布尔的简介
- 无锡医保亲情账户就是医保共济吗?|当前头条
- 世界互联网大会数字文明尼山对话今日在山东曲阜召开_当前播报
- 2023浙江万里学院招生录取联系电话+咨询方式
- 环球信息:马克·扎克伯格支持欧盟人工智能监管方案
- 白酒龙头正式宣布:剥离!-当前报道
- 英超英冠英甲英乙英丙_英甲英冠英超的区别
- 建筑工程合同不公平条款 环球新动态
- 刀剑神域头上戴的那个叫什么_刀剑神域游戏头盔
- 环球微头条丨小于号在键盘上如何输入(小于号在键盘上怎么打)
- 每日视点!全国首艘海陆一体化智能FPSO开启交付之路
- 美育培元 天津四百名音美教师封闭苦练|天天微头条
- 今日视点:枣庄市举行2023年食品安全“你点我检、服务惠民生”启动仪式
- 最高检发布惩治麻醉药品、精神药品失管涉毒犯罪典型案例
- 观点:华安证券给予凯赛生物买入评级 定增引入招商局集团 生物基聚酰胺放量在即
- 俄国防部长绍伊古视察参加特别军事行动的西部部队前线指挥所
- 银行卡属地信息查询前六位后四位_银行卡属地信息查询
- 诸葛科技:溢价升温但仍处于历史低位 一线城市土拍热度领先
- 持续深化基础教育课程教学改革 | 大家谈⑩|每日看点
- 盲盒龙头股_盲盒龙头股票一览表(6/26)
- 中国女篮VS新西兰前瞻:全力争胜抢小组头名 对手3将凶猛考验防守|热资讯
- 【环球播资讯】为什么会有黑色分泌物(出现长时间排黑色血状分泌物怎么回事?)
- 环球快看:燃气灶行业市场分析2023
- 北宋是怎么灭亡的_北宋是如何灭亡的
- 今日热讯:安凯客车销量增幅转正揽4.38亿客车大单 获江淮汽车10亿融资负债率有望降至70%
- 天天快报!经济观察丨直播卖房需要更强的专业性和更高的责任感
- 游戏ETF(516010)、游戏沪港深ETF(517500)、影视ETF(516620)点评 世界新动态
- 环球滚动:【甘快看】甘肃白银:“跑起来”筑牢禁毒“防火墙”
- 14.99万元起,价格、配置卷出新高度,深蓝S7正式上市
- 复苏不是喊口号拼出来的:救楼市?还救股市?-今日观点
- “‘八八战略’在指引 浙里禁毒新征程”主题巡展暨“美好阳光路——浙江禁毒宣传万家行”在湖州启动_天天新资讯
- 【天天新视野】我国积极引导工业用地节约集约利用
- “瓦格纳事件”后 俄防长绍伊古首次公开露面:视察乌东前线指挥所|今头条
- 天天滚动:福彩3D第23167期晒票来了,来日可期,愿你前程似锦
- 摊牌了?太和水第二大股东起诉实控人,翻出隐秘对赌协议,公司回应
- 【全球播资讯】2023郑州市二七区绿地爱华学校需要摇号吗
- “洋柿子”里的“中国芯”
- 东芝开发出1.7秒测量二氧化碳浓度的技术
- 建科机械:6月21日公司高管陈振生减持公司股份合计3万股 焦点速递
- 焦点讯息:网络游戏上市公司龙头有哪些?(2023/6/26)
- 上海九院韦敏医生下颌角手术怎么样?磨骨三巨头之一/技术经验足! 环球今日讯
- 经纬股份:6月21日融资买入909.99万元,融资融券余额4365.83万元 当前看点
- 6月26日基金净值:工银新能源汽车混合A最新净值2.7897,跌0.56%
- 世界速讯:成功在日本股市“吃到肉”的基金经理:反弹可能在下半年夭折
- “蔚小理”美股盘前走高,小鹏汽车涨逾3% 天天热讯
- 《DOTA2》梦幻联赛S20 GG 3:2 BB夺冠|环球即时看
- 世界快看点丨9.09亿收官、80余部新片在路上 观影潮下电影资本回温
- 环球热消息:土豆兄弟游侠职业有什么特点能力
- 天天播报:烟火式电池断开装置潜在故障 特斯拉召回部分Model 3/Y
- 观速讯丨醋鸡蛋怎样煎更好吃?
- 「福州博润白癜风研究所」-白癜风医生王方预约挂号-白癜风医生王方介绍
- 每日动态!45分狂胜!单节轰22-2,中国女篮太强了,李梦成大腿,韩旭17+10
- 全球热头条丨2023武汉市汉阳人才公寓怎么线上申请选房?
- 环球微资讯!第十九届西博会在哪里举办?(附路线)
- 服装市场热回归-世界快播
- 新亚电子(605277)6月26日主力资金净卖出6378.39万元
- 浏阳在编人员可以领租房补贴吗? 当前独家
- 终身寿险能拿回本金吗?国寿乐盈一生终身寿险尊享版2023超全分析
- “备战”iPhone 15 富士康领衔 “果链”公司开启抢人大战
- 启辰大V DD-i超混动将于7月8日上市-热文
- 书写大时代也观照小人物,哪些上海出品剧集值得期待?
- 坐拥3辆奔驰Actros 张保军成运输圈“卷王”
- @广州司机,“左转”还是“直行”?途经可变导向车道请留意
- 环球观点:【小里帮忙】咸阳市民买到过期旺旺雪饼,因小票丢失索赔遭拒
- 【推荐名单】西安看白癜风正规医院:儿童白癜风用药注意什么 世界快讯
- 半导体材料巨头 JSR 宣布接受日本官民基金 JIC 的一万亿日元收购邀约
- 焦点短讯!第十四届夏季达沃斯论坛将开幕 中国声音、中国举措等受关注
- 袁飞云检查雅康高速公路营运工作开展情况(图)
- 全球讯息:又来!CardiB和Offset又婚姻危机!Offset指控CardiB出轨
- 硬核科技论|别被洗脑 双电机有时候并非你所想_焦点滚动
- 搜狐汽车全球快讯 | 大众汽车最新专利曝光:仪表支持拆卸 可用手机、平板替代_环球实时
- 【世界快播报】2008年的今天:公牛用状元签选中罗斯 超音速用4号签选中威少
- 陕西省宝鸡市市场监督管理局抽检70批次食品 不合格2批次
- 每日头条!重庆市铜梁区市场监督管理局关于一批次不合格食品风险控制情况的通告(2023年第02号)
- 摊牌了?太和水第二大股东起诉实控人,翻出隐秘对赌协议,公司回应
- 再出手!浙商银行23亿深圳买楼,有董事投出反对票
- 【报资讯】禾川科技06月26日获沪股通增持31.29万股
- 当我们的新房终将变成老破小,深圳统租武汉统购上海统建破解老旧小区更新难题
- 环球今日讯!盛世鬼医北枝寒(盛世鬼)
- 快报:Omdia:三星电子今年计划采购3800万块液晶电视面板
- 为什么鸭肉和鹅肉都有腥味?
- 热点在线丨新华社报道海南洋浦:探索自贸港“封关之路”!
- 水果怎么寄?
- 天天速讯:半导体设备快速拉涨,中科飞测涨超6%
- 长安马自达举办第五届粉丝盛典 推出“悦马臻享”五大服务
- 全球新动态:下个月记旧爱,缘分未尽,真爱难逃,4星座感情柳暗花明
- 每日视点!洛阳偃师区检察院组织开展“粽情诗意 传承经典”主题活动
- 万家乐燃气热水器打不着火哒哒(万家乐燃气热水器打不着火怎么办)
- 郑州人才公寓6月第三批都有哪些房源可以申请? 视点
- 2023世界半导体大会新闻发布会在北京召开
- 【天天快播报】饥荒精品礼物,饥荒礼物什么时候刷新?
- 长沙25.06亿成功出让2宗限价地 保利、美的各拿1宗
- 53只国家级保护动物非正常死亡?三江源国家公园管理局回应
- 全球热点评!高温黄色预警继续!局部地区高温或达40℃以上
- 好消息!大满贯赛陈梦迎来最好签位,下半区半决赛约战伊藤美诚!|世界信息