这是程序员讨论了很久的一个话题:要不要给代码写文档?值得给代码写文档吗?

我曾经觉得这个话题实在是让人难以应付。也认为除去一些特殊的情况(比如编写公用 API),代码文档并不是那么必要。直到有一天,我在一份代码检查报告中发现,缺少文档被作为一项缺点指出来。真是这样的吗?

我曾经也给我的代码写文档——至少我尝试了。我曾深信你必须给代码写文档。以后对我自己,或者对其他需要看我的代码的程序员来说,文档都会是一个好的提示。直到我发现大部分代码文档无法反应最近更新,我就开始思考:“如果无法保证文档反应最近更新, 那写文档的意义到底在哪里呢?”

这个想法持续到前几年,直到我读了《代码整洁之道》这本书。我清楚认识到,如果你将文档写入代码,你就没有必要再为代码写文档了。

我的意思是,使用有意义的变量名和函数名。如果变量名字已经表明了它们所代表的意思,函数名也清楚说明了它们所实现的功能,那么你完全不需要去读代码或者读文档来弄明白代码的作用。

编写方法的时候,即使最后你的方法只有三四行代码,也要尽量让代码简洁。一个方法应该制作一件事情,而且方法名要表明它的功能。

对于一个类里面的每一个成员名,都应该达到只读名字就知道它们所包含的信息。这个规则对变量和输入参数也同样适用。

遵从这些将文档写入代码的规则,你就能写出可读性很高的代码。

是的,我知道,总有一些时候你需要写代码完成一个复杂的算法,或者你从网络上找到了一些复杂的不容易看懂的代码,你无法从中提取简洁有用的方法。是的,总会有例外。

你是怎么想的呢?你是给代码写文档,还是将文档写入代码呢?欢迎在评论中留言。

不给代码写文档,让代码文档化相关推荐

  1. Python+Streamlit aggrid+MongoDB GridFS构建低代码文档管理应用(文档查询下载实用篇)

    1. Sreamlit aggrid简介 Sreamlit aggrid是Streamlit的Ag-Grid组件的实现,在Python Streamlit框架下,更加灵活的使用表格,包括分组.排序.编 ...

  2. NDoc –NET 代码文档生成器快速度上手

    感谢:破宝 http://blog.joycode.com/percyboy/ <?xml:namespace prefix = o ns = "urn:schemas-microso ...

  3. vue 插入word模板 项目_10 分钟为你的 vue 项目编写代码文档

    代码文档是软件开发使用和维护的必备资料,有了文档,开发和维护以及协作的效率将变得大大提升.tips:如果对 JSDoc 已经熟悉,可以直接跳到实战演练环节. 什么是文档?软件文档或者源代码文档是指与软 ...

  4. 代码文档生成工具-Doxygen生成CHM和RTF图文教程

    Doxygen是一种开源跨平台的,以类似JavaDoc风格描述的文档系统,可以从一套归档源文件开始,生成chm格式的文档.本文主要讲解如何在winddows下安装doxygen. 1.下载doxyge ...

  5. 火车车次查询api代码文档及返回示例分享

    火车车次查询api代码文档及返回示例分享,支持出发站名称.到达站名称.车次类型等查询,将其集中到APP中,使用更加方便. 接口名称:火车车次查询api 接口平台:api接口 接口地址:http://a ...

  6. python如何读取公共盘的文档_如何使用 Sphinx 给 Python 代码写文档 | Linux 中国

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka Python 代码可以在源码中包含文档.这种方式默认依靠 docstring ...

  7. python代码_如何使用 Sphinx 给 Python 代码写文档

    最好将文档作为开发过程的一部分.Sphinx 加上 Tox,让文档可以轻松书写,并且外观漂亮.-- Moshe Zadka(作者) Python 代码可以在源码中包含文档.这种方式默认依靠 docst ...

  8. 代码文档生成工具Doxygen教程及实例

    程序员的很多文档,特别是有代码的文档,绝大部分都是由一款文档生成工具[Doxygen]生成. 什么是Doxygen? Doxygen 是一个程序的文件产生工具,可将程序中的特定批注转换成为说明文件.通 ...

  9. 开源免费,又一款代码文档生成工具

    原文链接:https://gitee.com/sharetech_lee/DevWeekly DevWeekly收集整理每周优质开发者内容,包括开源项目.资源工具.技术文章等方面. 每周五定期发布,同 ...

最新文章

  1. 未来数据中心的选择:宽带多模光纤
  2. 面试常考,项目易错,长文详解C/C++中的字节对齐
  3. 雷林鹏分享:Lua 数据库访问
  4. Config Sharepoint 2013 Workflow PowerShell Cmdlet
  5. mysql 主从复制优化、并行复制
  6. CodeForces - 1486B Eastern Exhibition(二维中位数)
  7. mysql 操作类 C .net_.NET MYSQL数据库操作基类( C#源码)
  8. python小老鼠编程_邯郸pythonnot学习费用多少
  9. Spark Structured SQL : JDBC写入Oracle
  10. linux设备驱动编写_tasklet机制
  11. c语言程序设计2020年版,2020年新版c语言程序设计题库.docx
  12. Java代码实现时钟
  13. 自己动手写网络爬虫-----(1)
  14. “24岁,一门手艺,年入百万”:真正厉害的人,都做到了这4件事
  15. IOS8 keyboardWillShow 在UIKeyboardWillShowNotification 调用两次 问题解决
  16. Gitee使用流程及其注意事项
  17. co88 sap 实际结算_SAP标准成本过账逻辑和基本原理
  18. 【默默努力】ig-wxz-and-hotdog
  19. 223. 矩形面积(JS实现)
  20. 基于LM334芯片的恒流源调试

热门文章

  1. 2020算法面经问题汇总
  2. 浅谈Python的现状、发展前景以及Python的就业岗位!
  3. SQL的多条件查询语句
  4. 完了!服务器沦为肉鸡了!排查过程!
  5. semantic navigation 目标驱动的视觉语义导航(一)
  6. APP开发选择什么框架好? 请看这里!
  7. 如何选择日志审计系统
  8. 在计算机中 汉字系统把一个汉字表示为,计算机问题汉字系统在计算机内把一个汉字表示 – 手机爱问...
  9. android修改自动背光,android 背光控制
  10. 第三代CAN技术即将到来