首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

  • 24-12-06 00:24
  • 4528
  • 9121
juejin.cn

安卓和iOS已有项目要做鸿蒙版,最快的方式就是模块化开发。我这里整理了一份开发方案 原文地址

鸿蒙开发架构图

整体架构设计如下图,所有功能都是模块,上层可以依赖下层,下层不可以依赖上层,同级之间不可以相互依赖。业务层之间可以通过路由通讯。

image.png

单体式分层架构

所有鸿蒙化app开发时,为了开发效率,工程架构采用模块化开发。所有独立的功能都会以模块形式存在,模块代码管理跟随主工程管理。

为什么选择HAP+HAR模式,简单来说就是这种模式最适合我们鸿蒙化场景。为什么这种模式最适合,需要大家对HAP、HSP和HAR有一定了解,相关文档:blog.csdn.net/chuyouyingh…

依赖规则

上层可以依赖下层(可以跨层依赖),下层不可以依赖上层。模块有路由的情况下,路由优先于依赖。平级之间不允许相互依赖。

应用层

应用层也就是壳工程,壳工程里只能配置工程特有的配置项,不允许写业务代码(可以依赖功能模块)

应用层包含打包构建相关配置(例如网络环境配置、各种三方密钥配置、授权文件等)

业务层

这里的模块都是应用中和业务逻辑相关的组件,

业务层组件之间不可以相互依赖,只能通过路由来进行通信,包括数据路由和跳转路由

中间层

中间层有两种形式

1,对三方库的二次封装,对外提供统一出口。比如三方库秒验进行二次封装,就成了可以路由调用的一键登录组件。

2,对相同功能的三方库进行功能聚合。比如支付中心就是对微信支付、京东支付等支付方式的聚合。

为什么需要中间层(中间层的意义)

三方库的管理规则是不允许源码修改,因此为了方便使用或者替换三方库,大部分情况下需要自定义中间层,比如存储,七牛存储经过中间层封装后,如果突然要替换为其他存储(比如百度存储),只需要修改实现,对外接口定义不需要调整(特殊情况下可能有入参的微调)

是否需要中间层判断规则

工具类不需要中间层,比如(数据模型Model的序列化、zip压缩工具),这些工具都是粒度极小,中间层是没有任何意义的。

非工具类的功能型三方库需要中间层,比如各种支付,各种分享等,中间层既能统一管理又方便共享其他工程使用。

三方库

三方库的引入需要经过先经过功能调研(至少两种相同功能的三方库对比,满足需求所需),然后需要经过组内至少两人评估,确认这个三方库是必须要用的。

开发规范&代码规范

全局工具类方法

1,全局工具类方法(对标iOS|安卓宏定义的方法与c方法)

全局工具类方法是通用的方法,比如获取屏幕宽高、获取系统版本号等,在开发过程中如果业务组件需要用到公共方法,请先全局搜索的方式确认通用工具方法的基础组件里是否已经定义,如果没定义再确认这个方法是否通用,如果通用则放基础工具组件中。

如图:这个是组件特有的工具类方法,这种工具类放到特有的组件内

image.png

2,全局通用变量,主要针对魔法文字

比如'100%'这类,应该定义为通用的静态只读变量,例:

js
代码解读
复制代码
export default class CommonConstants { static readonly FULL_LENGTH: string = '100%'; satic readonly TITLE_WIDTH: string = '80%'; }

不通用的示例如下:(通用的定义方式一样,只是放的位置不同)

image.png

命名规则:全局通用的我们会统一命名,为了保证类名不重复,每个组件都要有自己的特定前缀,比如上图,KCSoftSDK组件下的类名都可以KC为前缀

3,组件编码规范

3.1 组件模块(静态共享包)详细步骤:developer.huawei.com/consumer/cn… 

在第一步创建的组件工程上右键->New→Module...新建模块→ Static Library(har)

image.png

组件命名一定要全小写,涉及到多单词时使用下划线,例如下面:

image.png

以上结论是参考官方三方库及实践得出。官方三方库:ohpm.openharmony.cn/#/cn/home

3.2 代码结构

image.png

代码规范

通用原则

1,避免魔鬼数字,如if(res.result == 99),99应该用变量赋值代码,如if(res.result == MAX_COUNT);

2,代码逻辑如果复制三次以上,需要提取共有函数,进行复用

编码规范

1.命名
1.1 命名需要富有含义,尽量能达到见名知义的程度,避免无意义的命名。禁止使用系统关键字

image.png 1.2 变量名详细程度,根据变量作用范围而定,成员变量 > 函数的局部变量 ,作用域越大,变量名则应更详细。
例如对于一个类型的变量,成员变量命名越详细越好,如命名为localUserInfo ,函数的局部变量可以简单命名为info或userinfo。

image.png

1.3 类名
采用大驼峰命名法,尽量避免缩写。Manager、Module、Page等常见类型应添加对应的前缀标识。

1.4 方法名 采用小驼峰命名法,方法名通常是动词或动词短语。布尔类型函数使用谓语动词为前缀。如:isXX()。
回调类方法,添加on前缀,如onRequestFaild(MobileErrorCode,mobileErrorCode) image.png

1.5 枚举变量 常量变量命名,枚举变量名模式为大写。

image.png

image.png

1.6 命名注意事项 命名应该使用正确的英文拼写,除常用习惯缩写外应该尽量少用缩写避免混淆,避免使用拼音命名 比如:bg表示背景为常用习惯缩写,可以使用

避免使用否定的布尔类型变量名,布尔类型变量名应该加上表达含义的前缀(has、is等) 比如:isNotLogin 属于否定类型,应该避免使用

2.注释

2.1 不言自明的方法、变量不需要添加注释。 例如:

image.png

2.2 注释主要是为了说明变量名、方法名无法阐述的含义,不要直接翻译。

比如下图,需要解释说明的阐述一下,而不是直接翻译

image.png

3.代码数量限制

3.1 一个函数体不要超过80行  

3.2 函数中大括号不要超过4层

3.3 三行以上重复三次以上,或五行及以上重复两次及以上,代码必须另写出一个函数;

如果有一两个地方不同,要考虑使用参数进行概括,而使之成为共用的一段代码

应用权限使用原则

(1) 应用申请的权限,都必须有明确、合理的使用场景和功能说明(遵循最小化原则,只申请业务功能所必要的权限)。
(2) 应用在首次启动时,避免频繁弹窗申请多个敏感权限;敏感权限须在用户使用对应业务功能时动态申请。
(3) 非系统应用自定义权限名,禁止使用系统权限名前缀(如:以ohos开头为系统权限),建议以应用包名或公司反域名为前缀,防止与系统或其他应用定义的权限重名。

版本管理

由于模块的代码都在壳工程中管理,所以版本管理跟随主工程代码一起管理

开发阶段分支命名

命名规则:f_日期_需求简短描述
例如:f_20241016_update_pay

更新阶段

特性分支合并到develop使用git打tag,tag和版本号保持一致,版本号保持四位数字形式
tag命名规则:不允许包含任何字母,仅数字形式
例如:四位版本号:1.0.1.2
满十进一,例如:1.0.1.9 版本号加一之后:1.0.2.0

发布阶段

develop分支合并到master使用git打tag,tag和版本号保持一致,版本号升级到三位版本号形式

问题定位

最后,如果有问题实在找不到答案,不妨试下这个: developer.huawei.com/consumer/cn…

注:本文转载自juejin.cn的李长鸿的文章"https://juejin.cn/post/7429676112710238262"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

104
前端
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top