`
1000copy
  • 浏览: 74409 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

标注函数,而不是标注代码块

 
阅读更多


 

 

我听过很多关于标注的看法了。

比如jf说,“我发现我们都不太写标注,我们新来的,看起来比较困难”。那么,让你看不懂的真的是因为没有标注吗?在我的经验中,大部分原因在于:首先是因为代码本身不够清晰,导致需要标注,因此,真正的症结在于代码,而不在于标注。尤其是应用程序,大部分代码距离用户界面都不远,因此,只要用户界面走得通流程,通常不必但是在代码中迷路,因此代码都应该是比较容易理解的。这里引入了一个有趣的概念,叫做函数之间的距离。缩小代码的距离是高效编写代码的关键。但是常常是被人忽视的。以后在慢慢参详。

我刚刚看到一篇文章,惹恼程序员的10件事情,其中的65和标注有关。第5条是程序员发现代码没有标注,第6条是让程序员写标注,这两条都会让程序员恼怒。是不是非常有趣?

当然,有标注比没有标注强。这也是不可否认的。

还有人说,标注应该是比较规矩的。比如第一步,第二步,第三步… ,类似这样的代码

Foo()

{

// step1 :do something

...

// step2 :do otherthing

...

 

// step3 :do anotherthing

}

对此我也不以为然。这样的编码可以是过程中的一部分,而不应该是结果——遇到这样的情况,一定记得加上一个重构环节,通过“函数抽取”把他分解为多个函数。标注可以继续存在,但是应该标注到函数上,而不是代码块。代码的样子应该是:

Foo()

{

Step1();

Step2();

Step3();

}

 

// step1 :do something

Step1()

{

}

// step2 :do otherthing

Step2()

{

}

 

// step3 :do anotherthing

Step3()

{

}

像是这样的写法,第一层函数Foo的代码内还需要标注吗?根本就不再需要标注了。

 

人们总是不容易发现自己的问题,但是总很容易发现其他人的问题。自己发起对自己的代码的问题查找和修改总是缺乏动机。因此review是有价值的。不管是代码标注问题,还是一般的代码质量问题,都可以通过review的方法来达到比较好的效果。

0
0
分享到:
评论

相关推荐

    网蜂工具-坐标标注/ZBBZ 2.54

    网蜂工具箱坐标标注插件zbbz.vlx是一款可以应用于AutoCAD软件上的实用型插件,免费使用,可以在AutoCAD图纸进行自动坐标标注,操作简单实用。 操作方法: 1、下载解压,获得AutoCAD坐标...2、批量标注时添加块类别

    python初学快速上手现成代码加标注文字函数计算画图表格tultleTK等

    Python的语法特点是缩进替代大括号表示代码块,这使得代码看起来更整洁。例如,`if`、`for`和`while`等控制结构都依赖于缩进来组织代码。在提供的文件中,如`24time.py`可能涉及到时间处理,`30count&graph.py`则...

    ARX 对CAD操作常用函数

    本文将详细解析一个基于ARX的CAD插件中的关键函数及其工作原理,重点介绍如何使用C++语言来实现对CAD的操作,包括但不限于命令调用、实体标注、块插入等功能。 #### 二、关键函数解析 根据提供的代码片段,可以将其...

    ArcEngine图层动态标注.pdf

    例如,在上面的代码中,我们使用了 OwnerName 字段的值来生成标注内容,但是如果同一个户主拥有多块宗地,这个标注内容将只显示一次。 解决这个问题的方法是使用唯一的标注字段,例如宗地的编号字段。在上面的代码...

    19_函数调用模型_主调函数和被调用函数.zip_C语言

    在C语言中,函数是可重用的代码块,它们执行特定任务并可能接收输入参数,然后返回结果。函数调用模型是C语言程序设计的基础,它定义了如何从一个函数(主调函数)调用另一个函数(被调用函数)。这个模型允许程序员...

    lisp代码-XY坐标标注CAD插件

    命令通常通过`DEFUN`关键字来定义,后面跟着命令名和实现该命令的代码块。 2. **坐标获取**:插件需要能够从用户或当前选择的对象中获取XY坐标。这可能涉及到交互式的选择过程,也可能通过解析已存在的对象属性来...

    Eloquent JavaScript 2e(标注版)

    - **根据值分派**:使用`switch`语句根据不同的值执行不同的代码块。 - **注释**:讲解了如何使用注释来解释代码。 --- #### 三、核心概念详解 **1. 数字类型**: JavaScript中的数字类型可以表示整数和浮点数。...

    乔林-Python函术1

    当调用一个函数时,它的代码块才会被执行。函数通过参数接收输入,并可能返回结果。主调函数是调用其他函数的函数,而被调函数是被调用的函数。函数定义时不执行,只有在实际调用时才执行其体内的代码。此外,函数...

    百度地图api实现部分功能,根据多个坐标连成轨迹、坐标拾取、实现多个标注点并带信息窗口

    在本文中,我们将深入探讨如何使用百度地图API来实现一系列关键功能,包括连接多个坐标以形成轨迹、坐标拾取、以及创建带有信息窗口的多个标注点。这些功能在Web应用开发、JavaScript工具包、企业应用以及GIS/地图/...

    CAD操作Excel函数

    例如,通过“块属性管理器”导出块属性信息,或者利用Lisp脚本导出对象坐标。 二、Excel函数在CAD中的应用 2.1 使用VBA(Visual Basic for Applications):VBA是Excel内置的编程语言,可用于编写宏,实现自动化的...

    lisp程序含四个小程序

    本程序为lisp语言编写的AutoCAD二次开发程序,包括lisp源程序代码,dcl可视化窗口代码,程序测试图,以及程序中用到的插入图块文件和幻灯片文件。 本程序适合AutoCAD二次开发初学者学习之用,代码比较简单,所用函数...

    谭浩强 c++教程(全标注版)

    - **函数:** 函数是一段可以被重复调用的代码块,它可以帮助程序员更好地组织和复用代码。 - **预处理指令:** 在C++中,预处理指令通常以`#`开头,用于指示编译器进行一些特殊的处理,如宏定义(`#define`)、文件...

    Sybase IQ 16.0中文版本 用户定义的函数

    对于C/C++开发者而言,可以通过编写外部函数来创建UDF。这类函数需要遵循特定的API,并且可以利用Sybase IQ提供的工具进行开发和调试。 #### 遵从SAP Sybase IQ数据库的用户定义的函数 为了确保UDF能够与SAP Sybase...

    YOLOV3的部分代码注释,绝对良心

    通过阅读和理解这部分注释的代码,你将能够深入理解YOLOv3的工作流程,包括特征提取、目标检测和损失函数的计算。这不仅可以帮助你实现自己的目标检测项目,还可以为其他相关领域的研究提供基础,如自动驾驶、视频...

    于 React 的图像和视频注释工具_JavaScript_代码_下载

    React通过定义组件来构建应用,每个组件都是独立的、可重用的代码块,可以处理自己的状态和事件。在我们的注释工具中,我们可以创建多个组件,如`AnnotationComponent`、`CanvasComponent`和`ControlsComponent`,...

    ResNet代码(超详细注释)+数据集,pytorch实现

    在PyTorch中实现ResNet,需要定义模型类,包括卷积层、批量归一化(Batch Normalization)、ReLU激活函数以及残差块的结构。同时,还需要定义损失函数(如交叉熵损失)和优化器(如SGD或Adam),以便进行模型训练。 ...

    Lisp源码200例

    3. 测量两线夹角:这是几何计算的一个重要方面,Lisp代码可能使用向量代数和三角函数来实现这个功能。学习这些例子,你可以了解到如何在Lisp中进行空间坐标处理和几何运算。 4. 按给定比例建立尺寸标注样式程序:在...

    MapBasic参考手册

    - **分支**: 通过不同的条件选择执行不同的代码块。 - **If...Then**: 执行单一条件分支。 - **DoCase**: 多个条件分支选择。 - **GoTo**: 跳转到程序中的指定位置。 - **其他流程控制**: 控制程序的执行流程。 ...

    CAD中常用模块代码

    通过DIMLINEAR(线性标注)、DIMANGULAR(角度标注)、DIMRADIUS(半径标注)、DIMA Diameter(直径标注)等代码实现。 6. **注释与文字模块**:在设计中添加文本注释是必要的,如单行文字(DT)和多行文字(MT)...

    C++编码规范

    - 每个控制结构(如:if, for, while)应使用大括号包围代码块,即使只有一行代码。 - 使用空格增强代码可读性,如在操作符两侧(a + b)、逗号分隔项(func(a, b, c))等。 - 注释应清晰,简洁,描述代码目的,而...

Global site tag (gtag.js) - Google Analytics