往期推文全新看点
- 鸿蒙(HarmonyOS)北向开发知识点记录~
- 鸿蒙(OpenHarmony)南向开发保姆级知识点汇总~
- 鸿蒙应用开发与鸿蒙系统开发哪个更有前景?
- 嵌入式开发适不适合做鸿蒙南向开发?看完这篇你就了解了~
- 对于大前端开发来说,转鸿蒙开发究竟是福还是祸?
- 鸿蒙岗位需求突增!移动端、PC端、IoT到底该怎么选?
- 记录一场鸿蒙开发岗位面试经历~
- 持续更新中……
概述
高性能编程指的是在语法使用过程中,通过优化一些影响性能的代码片段,使代码以最优的方式执行。以下实践是在开发过程中逐步总结出来的一些高性能的写法和建议,实践包含变量声明、属性的访问、数值计算、数据结构的使用以及函数声明与使用等内容,在业务功能实现过程中,要同步思考并理解高性能写法的原理,运用到代码逻辑实现中。
变量声明
使用const声明常量
对于初期明确不会改变的变量,尽量使用const进行初始化,这里的常量包含基础类型和引用类型。通过const保证地址不会发生变化,能够极大减少由于编码时误操作导致的赋值等行为,造成对原有逻辑的改变,声明为const能够在编辑时及时发现错误。其中当const声明的是引用类型时,引用类型内部的属性变化是允许的,对于这种不存在地址变化的情况下,也建议使用const声明。
【反例】
// 该变量在后续过程并未发生改变,建议声明为常量
let PRICE = 10000;
function getPrice() {
return PRICE;
}
class ClassA {
propA: string = 'propA'
}
// 该引用类型的变量在后续过程变量地址并未发生改变,仅修改了变量的属性,本例中的let建议改为const
let classA: ClassA = new ClassA();
classA.propA = 'Property A';
【正例】
const PRICE = 10000; // 常量声明为基础类型时,其内容不可改变
function getPrice() {
return PRICE;
}
class ClassA {
propA: string = 'propA'
}
// 常量声明为引用类型时,其地址不可改变,但可以改变属性
const classA: ClassA = new ClassA();
classA.propA = 'Property A';
指定number的类型
对于number类型,编译器在优化时会区分int和double类型。开发者在初始化number类型的变量时,如果预期是整数类型就初始化为0,小数类型就初始化为0.0,避免将一个number类型初始化为undefined或者null。
【正例】
function calAddSum(addNum: number): number {
// count预期是int,不要声明成undefined/null或0.0,直接初始化为0
let count = 0;
count += addNum;
return count;
}
减少使用ESObject
ESObject主要用于在ArkTS和TS/JS跨语言调用的场景中作为类型标注,在非跨语言场景中使用ESObject标注类型,会引入不必要的跨语言调用,造成额外的性能开销,建议在非跨语言调用的场景下,避免使用ESObject,引入明确的类型进行注释。
【

1290

被折叠的 条评论
为什么被折叠?



