鸿蒙学习笔记二十三:关于防御性编程的一些点

1:可复用组件里面的回调方法最好声明为可选属性 ? , 因为有不一定所有业务都需要这个回调;同时在aboutToReuse里也给这个回调赋一下值,因为可能有人用了这个组件,但是没给传回调,复用的时候就空指针了。
示例代码:

@Reusable
@Component
export struct GoodsItem {

  //点击事件是否成功的回调:加购
  private onItemClick?: (position: number) => void = () => {
  }
  aboutToReuse(params: Record<string, ESObject>) {
    this.onItemClick = params.onItemClick as () => void
  }

  build() {
    Text('测试')
      .onClick(() =>{
        if (this.onItemClick) {
          this.onItemClick(1)
        }
      })
  }
}

2:解析接口返回的数据时,对字段使用空表示;业务中使用的数据和接口返回的数据之间要进行转换,不能在业务中直接使用接口返回的数据;比如goodsName,接口有时候可能会返回,有时候可能不返回,如果直接使用goodsName就可能导致崩溃
示例代码:

//接口直接返回的数据
export interface GoodsDataFromServer {
 goodsName?: string //后台返回
}
//业务中使用的数据
export interface GoodsDataForBusiness {
 goodsName: string
}

//数据转换
  private convertData(dataSource: GoodsDataFromServer): GoodsDataForBusiness {
    let dataBusiness = new GoodsDataForBusiness()
    dataBusiness.goodsName = dataBusiness.goodsName ?? ''
    return dataBusiness
  }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
禁止转载,如需转载请通过简信或评论联系作者。

推荐阅读更多精彩内容