来给regular组件写注释吧

在基本完全组件化的前端工程中,调用组件就像调用函数一样常见:

  • 调用函数时,我们传入参数,得到计算结果;
  • 调用组件时,我们传入数据,得到渲染视图;

不同的是,函数的参数通常只有1-5个左右,清晰的罗列在函数的定义过程中,而组件的数据,常常多达数十个,掺杂在html视图和js的逻辑中。

在这种情况下,调用某个组件的时候,工作过程是这样的:

  1. 组件作者提供了示例代码:
    • 从示例中找到引用组件的代码,得到需要传给组件的数据
    • 如果数据是对象结构,从js中梳理出对象的属性
  2. 组件作者没有提供示例代码:)
    • 从html中找到所有视图数据
    • 从js中梳理出视图数据的来龙去脉,得到传入的数据

梳理过程的复杂度和组件的复杂度呈现正相关,难度和组件涉及的业务难度呈现正相关。总的来说,梳理是最耗时、最折磨人的。

怎样才能提高梳理过程的效率呢?

想起曾经有同事调用我的组件的时候,提出了给组件写示例代码的要求,现在想起来,他应该也饱受梳理的折磨。现在的我,经历了一番题库的折磨后,恍然大悟:

注释,就能有效的提高梳理效率。但是,年轻的少年猿啊,你真的会写注释吗?

写注释,本质上是一件比Hello,World更简单的事情(斜杠+*号,谁还不会呢

关于注释,

有人信奉注释越少越好,命名良好的变量就是天然的最佳注释。
有些人很喜欢写注释,一个文件中的注释足以构成一道阅读理解题。

而有些人从不写注释:

对于函数而言,通常能做到职责单一,职责单一保证了参数较少,配合命名良好的变量,确实能做到不需要注释,下面的函数,基本上一看就能知道它的功能以及调用方法。

arabicToChineseFilter = function (arabicNumber) {
    var BIG_QUESTION_ORDER_NUMBER = ['', '一', '二', '三', '四', '五', '六', '七', '八', '九'],
    UNIT = ['', '千', '百', '十', ''],

    chineseNumber = String(arabicNumber)
        .split("")
        .reduceRight(function (pre, cur, idx) {
            return (cur ? BIG_QUESTION_ORDER_NUMBER[Number(cur)] + UNIT[idx] : '') + pre;
        }, '');

    return chineseNumber;
};

所以,函数的注释相对少见,也并不影响使用,但组件:

  1. 所需数据能够多达数十个
  2. 在组件的声明处,通常不会有所需参数的定义,即使有,也不清晰(regular对此没有约束)

不过,函数的注释标准,借鉴到组件中来,效果却是很不错:

/**
 * knowledge组件
 * 
 * @param {Object} resource
 * @param {String} [resource.comment=''] 自定义评论
 * 
 * @param {Object[]} knowledgeLogicPoints 题目关联知识点
 * @param {String} knowledgeLogicPoints[].name 知识点的名称
 * 
 * @param {Object[]} [microCourseVideo=[]] 本次答题关联的微课视频
 * @param {String} microCourseVideo[].name 微课视频的名称
 * @param {Number} microCourseVideo[].id 微课视频的id
 */

从上面的注释中,可以立刻得到组件所需的数据结构:

setting: {
  isDisabled
}
question: {
   questionSocore:
   subjectiveQuestionContent: {
        stdAnswer: []
  }
}

注释的标准格式文档

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,446评论 25 708
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,973评论 19 139
  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock阅读 3,408评论 2 36
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,250评论 4 61
  • 推酷诚意满满的技术周刊《编程狂人》, 下面是内容列表,干货多多,也可以移步到官网进一步阅读。 前端开发 Vuex框...
    推酷阅读 495评论 0 0