当前位置: 首页 > news >正文

Haskell:什么时候该注释,什么时候不该注释

大家都知道,写程序时应该让程序易读易懂,而添加注释是让你的程序实现这个目标的好方法。然而,对于一个程序,并不是你添加了足够多的注释,它就能 变得的易懂易读。事实上,第一要务是你的程序要写的干净整洁,这样也就没有添加注释的必要了。编译器是不会检查你的注释的,而注释往往会滞后于代码的更 新,跟实际代码实现不一致。如果你打算要写一段注释,在你真正的动手写之前,请先思考一下下面的这些问题:

这段注释是来标注一个特殊情况吗?那么,你最好别让这个特殊情况存在。例如:

a+b-b  -- 你不能删除这里的(b-b),因为这里的算术操作不按正常的结合性

如果你这里是自定义的数据类型,操作不按正常的结合性,那么,最好你就不应该让它看起来是一个Num实例。

我要再次强调:努力 – 努力 – 再努力 – 去除程序中的特殊行为特征。注释是不能为这些反常行为提供安全保护的。

不用看都明白的注释?例如:

-- 互换一对元素
swap :: (a,b) -> (b,a)

恭喜你,你使用了一个非常好的函数名称,非常好的过程语法,使得这个函数的意图非常的明显,不需要任何注释。所以,删掉这个注释。留着它早晚是个祸害,有一天它会滞后于代码的更新。

注释的内容描述Haskell语言的动作?

let b=a+1   -- 让'a'加1

这里的+和1显然就是程序的执行过程。

你最好注释代码的意图,比如:

let b=a+1   -- 增加循环计数器'a'

但是,重复之前的观点,让程序干净整洁而不需要注释是最好的选择。例如:

let newCounter = oldCounter+1

相关文章:

  • DeepMind 开源 Sonnet:在 TensorFlow 中快速构建神经网络
  • 【转载】使用缓存的9大误区(下)
  • 工作脚本处理文本
  • mysql5.6之 传输表空间迁移表或恢复误删除的表
  • MySQL 创建数据库及数据表
  • ThinkPHP 数据库操作之数据表模型和基础模型 ( Model )
  • 中国技术力量:ChinaTech Day 亮相 QCon 旧金山
  • 解决防火墙限制远程连接MySQL(导致错误10060可能之一)
  • storm-安装
  • [译]优秀的程序员不会觉得累成狗是一种荣耀
  • OS X 10.11.1测试版中现身 Magic Mouse 2 等新外设
  • 三取方格数
  • Hibernate拦截器(Interceptor)与事件监听器(Listener)
  • 把时间格式12:59:00 转换成小时数,并保留一位小数
  • 如何查看oracle当前session信息
  • 【mysql】环境安装、服务启动、密码设置
  • Django 博客开发教程 8 - 博客文章详情页
  • Flannel解读
  • github指令
  • leetcode-27. Remove Element
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • mockjs让前端开发独立于后端
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 分布式任务队列Celery
  • 关于字符编码你应该知道的事情
  • 技术:超级实用的电脑小技巧
  • 技术攻略】php设计模式(一):简介及创建型模式
  • 可能是历史上最全的CC0版权可以免费商用的图片网站
  • 面试遇到的一些题
  • 那些被忽略的 JavaScript 数组方法细节
  • 算法系列——算法入门之递归分而治之思想的实现
  • 微信小程序实战练习(仿五洲到家微信版)
  • 与 ConTeXt MkIV 官方文档的接驳
  • 这几个编码小技巧将令你 PHP 代码更加简洁
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • # Java NIO(一)FileChannel
  • #if和#ifdef区别
  • #laravel 通过手动安装依赖PHPExcel#
  • #我与Java虚拟机的故事#连载14:挑战高薪面试必看
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (Redis使用系列) Springboot 使用redis实现接口幂等性拦截 十一
  • (附源码)ssm航空客运订票系统 毕业设计 141612
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (一)Dubbo快速入门、介绍、使用
  • (转)为C# Windows服务添加安装程序
  • (状压dp)uva 10817 Headmaster's Headache
  • *_zh_CN.properties 国际化资源文件 struts 防乱码等
  • .equals()到底是什么意思?
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .Net Core缓存组件(MemoryCache)源码解析
  • .NET CORE使用Redis分布式锁续命(续期)问题
  • .NET Micro Framework初体验
  • .NET 的程序集加载上下文
  • .net 后台导出excel ,word