ArkTS 编码风格指南:书写干净、易读且高效的代码

介绍

随着应用开发越来越复杂且跨平台,编写高质量、易维护的代码至关重要。ArkTS作为HarmonyOS生态中的编程语言,提供了强大的特性,但也需要保持一致、严谨的编码规范。本文提供了一系列结构化的推荐,以改善代码的可读性、性能以及可维护性,并突出最佳实践和常见错误。

目的和范围

ArkTS 编码风格指南在业界标准(尤其是TypeScript与JavaScript生态)的基础上,新增了一些专门为ArkTS而设计的规则。其目标包括:

  • 代码标准化
  • 执行效率提升
  • 静态分析能力提升
  • 在协作环境中提高安全性及代码清晰度

本指南适用于ArkTS生态系统中系统级及应用层开发。

命名规范

🟡 使用清晰且描述性的标识符

避免单字母、缩写或使用非英文术语。始终保持标识符能够清楚表达意图。

typescript 复制代码
let userName = 'JohnDoe';
function sendMessage(message: string) { ... }

🟡 类(Classes)、枚举(Enums)、命名空间(Namespaces)使用大驼峰命名法(UpperCamelCase)

typescript 复制代码
class UserProfile { ... }
enum AccountType { ADMIN, USER }
namespace AuthUtils { ... }

🟡 变量、方法及参数使用小驼峰命名(lowerCamelCase)

typescript 复制代码
let maxRetry = 5;
function handleLogin(userName: string) { ... }

🟡 常量使用全大写字母且单词之间用下划线区分(UPPER_CASE_WITH_UNDERSCORES)

typescript 复制代码
const MAX_USER_COUNT = 10000;

🟡 避免使用负面的布尔名称

应采用正面的表达方式,并使用ishascan等明确前缀。

typescript 复制代码
let isEnabled = true;

格式化规则

🟡 使用两个空格缩进

统一使用两空格缩进方式,以提升跨设备及编辑器的可读性。

🟡 单行长度最多120个字符

保持代码行简洁,必要时通过换行保持长条件句或表达式易读。

🟡 所有条件和循环块均使用大括号

即使是一行代码,也需要添加花括号。

typescript 复制代码
if (isValid) {
  process();
}

🟡 switch语句中的casedefault语句应缩进

typescript 复制代码
switch (status) {
  case 0: {
    handleIdle();
    break;
  }
  default:
    break;
}

🟡 表达式换行时,运算符置于行尾

typescript 复制代码
// 正确示例
let result = someCondition &&
             anotherCondition &&
             theThirdCondition;

🟡 每行只声明一个变量

typescript 复制代码
let count = 0;
let isReady = true;

🟡 空格使用准则

  • 运算符两侧以及逗号后应使用空格
  • 逗号或分号前不加空格
  • 方法调用的左括号前不加空格

🟡 字符串统一使用单引号

typescript 复制代码
let message = 'Hello ArkTS';

🟡 超过4个属性的对象字面量使用多行格式

typescript 复制代码
let obj = {
  id: 1,
  name: 'Tom',
  age: 30,
  active: true,
  role: 'admin'
};

🟡 elsecatch关键字位于对应闭括号的同一行

typescript 复制代码
if (isActive) {
  start();
} else {
  stop();
}

🟡 左括号 { 应放于同一行末尾

typescript 复制代码
function init() {
  // ...
}

编程实践

🟡 明确使用访问修饰符(private、protected、public)以表达代码意图

typescript 复制代码
class Counter {
  private value: number = 0;
  public increment(): void {
    this.value++;
  }
}

🟡 清晰书写浮点数

typescript 复制代码
let pi = 3.14;
let ratio = 0.75;

🟡 检查NaN值时应使用Number.isNaN()

typescript 复制代码
if (Number.isNaN(value)) { ... }

🟡 首选数组方法而非循环

typescript 复制代码
const doubled = numbers.map(n => n * 2);

🟡 条件表达式中避免赋值操作

将赋值与条件逻辑分开处理。

typescript 复制代码
let isReady = checkStatus();
if (isReady) { ... }

🟡 在finally块中禁止使用returnthrowbreakcontinue

这些操作可能会压制关键的错误或重写原始返回值。

typescript 复制代码
try {
  return fetchData();
} catch (err) {
  handleError(err);
} finally {
  log('Completed');
}

🟡 避免使用ESObject类型

尽可能使用明确的接口和本地数据类型避免跨语言带来的性能额外开销。

typescript 复制代码
let obj: I = getObject(123);

🟡 数组类型声明优先使用T[],而非Array<T>

typescript 复制代码
let names: string[] = ['Alice', 'Bob'];

结语

在HarmonyOS生态中,开发者遵循ArkTS编码风格指南至关重要,有助于团队减少Bug、提升协作效率及代码质量的长期维护。通过清晰且有意图地编写代码,你不仅仅是在写代码,更是在以ArkTS塑造跨平台应用程序的未来。

相关推荐
GY-932 小时前
HarmonyOS - UIObserver(无感监听)
harmonyos
哼唧唧_2 小时前
新闻类鸿蒙应用全链路运维指南:高并发场景下的稳定保障
harmonyos·新闻·harmony os5·鸿蒙运维
zacksleo5 小时前
哪些鸿蒙原生应用在使用Flutter
前端·flutter·harmonyos
二流小码农5 小时前
鸿蒙开发:简单实现一个服务卡片
harmonyos
移动端开发者7 小时前
鸿蒙Next数据面板组件DataPanel介绍
harmonyos
移动端开发者7 小时前
鸿蒙Next使用Canvas绘制一个汽车仪表盘
harmonyos
移动端开发者7 小时前
鸿蒙Next数据量环形图标Gauge介绍
harmonyos
塞尔维亚大汉7 小时前
鸿蒙开发面试真题:鸿蒙操作系统的微内核架构有哪些优势?
面试·harmonyos
我睡醒再说8 小时前
纯血Harmony NETX 5小游戏实践:2048(附源文件)
游戏·华为·harmonyos·arkts
程序员小刘9 小时前
基于uni-app for HarmonyOS5 的跨平台组件库开发指南,以及组件示例
华为·uni-app·harmonyos