【鸿蒙心迹】HarmonyOS学习笔记05:ArkTS函数约定 个人主页杨利杰YJlio❄️个人专栏《Windows 疑难杂症与工单复盘案例库》 《Sysinternals实战教程》《WINDOWS教程》 《Windows PowerShell 实战》 《IOS插件分析测试》《超简单用Python让Excel飞起来》让复杂的事情更简单让重复的工作自动化文章目录前言把标题校验从按钮事件里拿出来一、参数与返回值构成函数约定二、先处理首尾空白再判断长度三、用一份实现固定练习规则四、string 与 undefined 分别表示什么五、返回错误消息后调用方仍要停止六、练习数据必须包含临界情况七、长度不能笼统写成“字符数”八、函数与页面各自负责什么学习总结参考资料前言把标题校验从按钮事件里拿出来大家好我是杨利杰 YJlio。上一篇整理了变量和字段类型。这篇我继续处理一个很具体的问题工单标题不能为空也不能超过练习规定的长度。如果所有判断都写在按钮事件中输入、规则和提示很容易混在一起。我会把规则提取为validateTitle函数。函数接收标题返回错误消息或undefined由调用方决定停止还是继续。这是 HarmonyOS 7.0 学习笔记第 05 篇。函数负责返回校验结果调用方负责遵守这个结果。环境项实际记录DevEco Studio待填写SDK/API待填写工程当前 ArkTS 练习工程练习内容标题输入、返回值与调用分支配图为知识示意图实际诊断、日志和构建结果不预先填写。一、参数与返回值构成函数约定函数参数说明“需要提供什么”返回类型说明“可能得到什么”。我先把这两端写清楚再实现判断。functionisBlank(value:string):boolean{returnvalue.trim().length0;}这个函数接收一个字符串返回布尔值。它可以回答“是否为空白”却不负责显示提示也不创建工单。命名要与结果一致isBlank是判断validateTitle表达标题校验。明确输入和输出后页面可以调用它独立练习也可以使用同一规则。二、先处理首尾空白再判断长度校验前我会用trim()取得处理后的字符串避免只含空格的标题被视为有效内容。constrawTitle:string 更换办公电脑 ;constnormalized:stringrawTitle.trim();trim()返回新字符串不会修改原字符串也不会删除中间的空格。原始输入用于显示还是用于存储应该按业务要求决定。这篇只把规范化结果用于校验。如果后续提交要保存规范化标题应在提交流程中明确使用该值不能因为校验函数内部调用了trim()就认为调用方的原值已改变。三、用一份实现固定练习规则本篇只保留一份validateTitle实现避免前后示例返回不同消息。functionvalidateTitle(title:string):string|undefined{constnormalized:stringtitle.trim();if(normalized.length0){return标题不能为空;}if(normalized.length80){return标题长度超出当前练习规则;}returnundefined;}规范化后的长度本例返回0标题不能为空1 至 80undefined大于 80标题长度超出当前练习规则80 是本篇练习规则不是 HarmonyOS、ArkTS 或输入组件的统一限制。规则改变时函数和边界样例一起修改。不要只更新提示文字却保留原来的比较条件。四、string 与 undefined 分别表示什么本例返回类型是string | undefined出现错误时返回消息没有错误时返回undefined。这一约定属于本函数不是所有函数的通用规则。其他函数中的undefined可能表达缺失值或其他含义调用前仍要阅读约定。华为的ArkTS 语法适配背景说明返回值可能缺失时应在类型中表达这种可能性。调用方必须处理对应分支不能用断言抹掉它。我没有用空字符串表示“通过”这样判断可以直接围绕undefined展开不需要猜测消息是否为空。五、返回错误消息后调用方仍要停止函数返回了错误不代表按钮事件会自动结束。调用位置要明确安排失败和通过两条路径。下面是调用逻辑示例注释位置需要接入实际页面提示和提交代码functionhandleSubmit(inputTitle:string):void{consterrorMessage:string|undefinedvalidateTitle(inputTitle);if(errorMessage!undefined){// 在实际页面中显示 errorMessage。return;}// 本例校验通过在此继续实际业务流程。}return结束当前handleSubmit调用不会替其他函数停止执行。异步操作如果已经提前发起也不会因为这里返回而自动取消。因此应先检查再安排后续写入。返回错误消息不会自动阻止提交失败分支要结束当前流程。六、练习数据必须包含临界情况我会准备空字符串、空白字符串、普通标题以及处理后长度分别为 80 和 81 的输入。constexamples:string[][, ,更换办公电脑,a.repeat(80),a.repeat(81)];for(constitemofexamples){constresult:string|undefinedvalidateTitle(item);console.info(resultundefined?本例校验通过:result);}输入按代码推导的预期本机实际返回空字符串标题不能为空待填写五个空格标题不能为空待填写更换办公电脑undefined待填写80 个aundefined待填写81 个a标题长度超出当前练习规则待填写这些是代码阅读得出的预期不能代替实际运行结果。我会先构建再在工程已有的合适执行位置调用示例记录真实输出。七、长度不能笼统写成“字符数”原稿用“80 个字符”描述上限容易让读者把字符串length与人眼看到的字符数量直接对应起来。这一口径需要单独说明。常见 ArkTS/TypeScript 字符串语义中的length按 UTF-16 代码单元计数。部分表情或组合字符显示为一个字符时可能占多个计数单位。本篇的 80 与 81 都用 ASCII 字符a构造便于观察边界。如果业务要求按用户感知字符计数需要另行定义分割与计数规则不能只改一条提示就完成适配。实际字符串接口以当前工具链文档为准。此外先trim()再计数与对原始字符串计数是不同规则。测试记录要写明采用哪一种。八、函数与页面各自负责什么我会把校验规则保持为明确的输入输出让页面事件负责读取输入、显示提示和安排下一步。位置本篇安排的职责校验函数处理标题、判断规则、返回结果页面事件读取输入、调用函数、处理失败与通过后续业务层按接口协议执行保存或提交出现“函数返回错误页面却继续提交”时先检查调用方分支出现“空格仍能通过”时检查是否先规范化再计数出现“界面没显示提示”时再检查页面状态和提示接入。不需要把每行代码拆成一个函数。只有一段逻辑能独立命名、输入输出清楚时提取才更有帮助。学习总结这篇我用标题校验练习参数、返回类型和调用分支先处理输入再返回结果最后由调用方决定是否继续。发布前补齐 SDK、构建结果与实际输出表。下一篇继续学习接口、类和对象区分字段结构约定与创建数据的方式。参考资料华为开发者联盟ArkTS 语言概览华为开发者文档ArkTS 语法适配背景ECMAScript 规范String 实例的 length声明本文为学习示例与练习方法配图为知识示意图实际语法支持、日志、构建与页面结果以当前工程和官方文档为准。返回顶部