当前位置: 首页 > news >正文

【ArkTS】编程规范

ArkTS 是 HarmonyOS 应用的默认开发语言,在 TypeScript(简称 TS)生态基础上做了扩展,保持 TS 的基本风格。通过规范定义,从而强化了开发期的静态检查和分析,提升了程序执行的稳定性和性能。

一、术语与定义

术语缩略语中文解释
ArkTSArkTS编程语言
TypeScriptTSTypeScript编程语言
JavaScriptJSJavaScript编程语言
ESObject在ArkTS跨语言调用的场景中,用以标注JS/TS对象的类型

二、命名规范

  • 为标识符取一个好名字,提高代码可读性。
  • 好的标识符命名应遵循以下原则:
    • 清晰表达意图,避免使用单个字母或非标准缩写命名。
    • 使用正确的英文单词并符合英文语法,不要使用中文拼音。
    • 确保语句清晰,避免歧义。

1、类名、枚举名、命名空间名采用 UpperCamelCase 风格

  • 类采用首字母大写的驼峰命名法。
  • 类名通常是名词或名词短语,例如 Person、Student、Worker。不应使用动词,也应该避免类似 Data、Info 这样的模糊词。
// 类名classUser{...}// 枚举名enumUserType{TEACHER=0,STUDENT=1};// 命名空间namespaceBase64Utils{...};

2、变量名、方法名、参数名采用 lowerCamelCase 风格

  • 函数的命名通常是动词或动词短语,采用小驼峰命名。比如 sendMsg,findUser 等。
  • 变量名通常是名词或名词短语,采用小驼峰命名,便于理解。比如 msg,userName 等。

3、常量名、枚举值名采用全部大写,单词间使用下划线隔开

  • 常量命名,应该由全大写单词与下划线组成,单词间用下划线分割。常量命名要尽量表达完整的语义。例如 MAX_USER_SIZE。

4、避免使用否定的布尔变量名

  • 布尔型的局部变量建议加上表达是非意义的前缀,比如is,也可以是 has、can、should 等。比如 isError、isFound、hasNext 等。
  • 应避免定义否定的布尔变量名,当使用逻辑非运算符,并出现双重否定时,会出现理解问题,比如 !isNotError,!isNotFound 等,难以理解。

三、格式

1、使用空格缩进,禁止使用tab字符

  • 只允许使用空格 (space) 进行缩进。
  • 建议大部分场景优先使用 2 个空格,换行导致的缩进优先使用 4 个空格。
  • 不允许插入制表符Tab。当前几乎所有的集成开发环境(IDE)和代码编辑器都支持配置将Tab键自动扩展为 2 个空格输入,应在代码编辑器中配置使用空格进行缩进。

2、行宽不超过 120 个字符

  • 代码行宽不宜过长,否则不利于阅读。
  • 控制行宽可以间接引导程序员缩短函数和变量的命名,减少嵌套层数,精炼注释,从而提升代码可读性。
  • 建议每行字符数不超过120 个,除非需要显著增加可读性(超过 120 个),且不会隐藏信息。
  • 如果一行注释包含了超过 120 个字符的命令或 URL,则可以保持一行,以方便复制、粘贴和通过 grep 查找;预处理的 error 信息在一行便于阅读和理解,即使超过 120 个字符。

3、条件语句和循环语句的实现建议使用大括号

  • 在 if、for、do、while 等语句的执行体加大括号{}是一种最佳实践,因为省略大括号可能导致错误,并且降低代码的清晰度。
  • switch 的 case 和 default 要缩进一层(2 个空格)。开关标签之后换行的语句,需再缩进一层(2 个空格)。

4、表达式换行需保持一致性,运算符放行末

  • 当语句过长或可读性不佳时,需要在合适的地方进行换行。
  • 换行时将操作符放在行末,表示“未结束,后续还有”,保持与常用的格式化工具的默认配置一致。
// 假设条件语句超出行宽if(userCount>MAX_USER_COUNT||userCount<MIN_USER_COUNT){doSomething();}

5、多个变量定义和赋值语句不允许写在一行

  • 每个语句的变量声明都应只声明一个变量。这种方式更便于添加变量声明,无需考虑将分号改为逗号,以免引入错误。
  • 每个语句只声明一个变量,使用调试器逐个调试也很方便,而不是一次跳过所有变量。
// 错误:多个变量定义在一行letmaxCount=10,isEnable=false;// 正确:每个语句只声明一个变量letmaxCount=10;letisEnable=false;
http://www.jsqmd.com/news/547543/

相关文章:

  • WeMod Pro功能免费解锁完整指南:两种高效补丁方案深度解析
  • WinForm自定义控件避坑指南:圆角按钮文字居中难题的5种解决方案
  • 2010-2023年 上市公司-企业家精神数据库(xlsx+文献)
  • STM32F407用HAL库软件SPI驱动AD9959:从淘宝卖家代码到稳定正弦波输出的完整移植与调试记录
  • 大数据在电力行业的应用案例解析-【电力技术】(七)大数据在电力新能源消纳中的深度应用(含预测代码)
  • 文献综述不再熬夜:Paperzz AI 如何把「文献梳理」变成 3 步高效流程
  • Windows下OpenClaw+nanobot安装指南:QQ机器人配置详解
  • OpenClaw+GLM-4.7-Flash:24小时运行的智能监控助手
  • 2026疾控中心洗板机性价比评测深度解析 - 优质品牌商家
  • 运动木地板权威品牌推荐:二手室内运动木地板/二手枫桦木运动木地板/二手篮球馆木地板/二手羽毛球馆木地板/选择指南 - 优质品牌商家
  • 华为OD机试真题2026双机位C卷 JavaGo 实现【用户入网定期复评】
  • 软件测试员转型AI测试:机遇与挑战全解析
  • 2026烟台办公设备服务白皮书维修与供应深度剖析 - 优质品牌商家
  • OpenClaw性能优化:提升GLM-4.7-Flash调用效率
  • ​​【数据手册讲解5】贴片电容MLCC(陶瓷电容)
  • 如何让鼠标和触控板和平共处:Scroll Reverser实现设备独立控制的效率革命
  • Xilinx Video IP实战:如何将HDMI输入转换为AXI4-Stream(附仿真+上板测试)
  • 2026年评价高的江苏触摸膜片薄膜开关/昆山面板薄膜开关/丝网印刷薄膜开关/触摸膜片薄膜开关口碑好的厂家推荐 - 品牌宣传支持者
  • Salesforce + Social CRM 零售成功案例|60万会员数字化转型
  • 2026年质量好的导电银浆线路薄膜开关/触摸屏银浆线路薄膜开关源头工厂推荐 - 品牌宣传支持者
  • AI Agent架构师:构建下一代企业智能中枢的实战指南
  • 深入解析QWidgetAction:打造高度自定义的Qt菜单界面
  • 05-OpenClaw 自动生成 PPT 实战:每天节省 3 小时
  • LuatOS扩展库API——【dnsproxy】DNS代理转发
  • 序列化为 JSON·学习笔记
  • 终极指南:如何免费获取46万+英语单词库并快速集成到你的项目中
  • 步进电机复位翻车实录:从堵转到精准归位的5个调试技巧
  • ospf配置
  • 不到百元成本?拆解一个实测精度±1.5mm的激光测距模块(附PCB文件与STM32源码)
  • OpenClaw终极形态:nanobot打造个人数字员工