原创 【博客大赛】Python之过度包装

2018-4-6 17:35 3185 17 4 分类: 软件与OS 文集: Linux笔记
上大学的时候,C语言实习课考试,答案是很简单的不超过5行的C语言代码。你一定不会相信,那个时候我写了大约30行,并且其中的25行是注释。因为某个时候看了一个文档,说C语言的函数注释必须要有,而且必须要全面。

老师当时表示,不用写这么多,5行就够了。旁边有同学给我帮腔,说这个是规范,当时的我还有点洋洋得意,觉得自己比老师要与时俱进,老师的思路已经过时了。

在之后的工作过程中,接触了其他一些编程思想,比如“代码即注释”,这种思想认为良好的代码本身应该是直观易懂的,无需看注释即可理解,那么注释就是多余的东西。但是大部分商业公司都要求完整的注释,比如微软和谷歌。每个公司的注释要求不一样,有的会按照自动注释软件的要求来,也有的会使用自己的注释格式。

现在回过头来看,其实在那堂C语言实习课上,我只需要提交5行代码就行了,这是出题人希望看到的,也是老师打分的评价标准。最终老师还是给了我一个还不错的分,在此感谢他的宽宏大量^_^

这件事教会我,不要做多余的事。

接触Linux以来,平时使用某些软件,比如nmap或者minicom,也会去阅读它们的源代码,发现它们的Readme文件虽然写得很全,代码里的注释却很少,有可能一个文件下来,代码有一千行,函数一个连一个,注释不超过100行。即使很少,理解代码并没有很大的困难,这来自合理的函数结构、良好的命令习惯和美观的语法格式。

当然,注释怎么写,依然是一件见仁见智的事情。对于团队合作,更多的注释能够降低沟通成本。所以,大家可以商量着来。

今天在《学习Python》里发现了这样一段话,和大家共享:



对于这段话,我的理解是,代码的层次应该是实际需要的那么多层。如果我只需要一个简单的open文件功能,那么就不需要封装一个类,让它包含所有的open功能(打开普通文件、管道、设备文件……)。也许一个包含所有open功能的类是非常强大的,但是我们目前仅仅需要open一个普通文件不是吗?那么open它就好了。

欠包装也会带来一些问题,比如需要大量的难以维护的copy操作、难以使用、操作功能时不够抽象。过度包装带来额外的代码开销、难以理解和操作,以及额外的bug风险。良好的程序设计,既不是欠包装的,也不是过度包装的,而是忠实合理反映实际的物理逻辑的。

与广大代码民工们共勉 ... ) _ ) ...

文章评论2条评论)

登录后参与讨论

allen_zhan_752827529 2018-4-13 11:38

这篇文章, 本质上是想讨论 composition 与 inheritance 的关系与用法吧?
归根结底是想讨论编程模式吧? 核心观点似与 "注释"无关.

推荐参考 StackOverflow 的一则讨论:
[Prefer composition over inheritance?](<a  target="_blank">https://stackoverflow.com/questions/49002/prefer-composition-over-inheritance)</a>

星海扬帆 2018-4-10 14:40

python其实是面向功能实现型的编程,只要完成任务就行,只依赖算法和规模。而还有很多方面的需求是依赖计算机硬件,还要考虑安全和功耗,五花八门的目标硬件逼迫open一个实体时要做很多开关操作,除非全都用同一种总线架构的CPU。
相关推荐阅读
DiracFatCat 2018-09-05 12:14
【博客大赛】卡尔曼滤波学习笔记(11)从位置估计速度
卡尔曼滤波器,不仅仅是一个低通滤波器,否则也不会持续发展50年。 示例:桑先生需要测试高速列车的性能。测试的目的是判断列车在直线上能否保持80m/s的速度。速度和位置每0.1秒测量一次,但是由于...
DiracFatCat 2018-08-31 19:32
【博客大赛】卡尔曼滤波学习笔记(10)一个简单的示例
《Kalman Filtering: Theory and Practice Using MATLAB》第三章,看不懂,暂时略过。《Kalman Filtering: Theory and Pract...
DiracFatCat 2018-07-19 15:09
对sed命令的练习
sed是流编辑器。它每次处理一个输入,因此很有效率。官方手册:https://www.gnu.org/software/sed/manual/sed.html学习Linux命令,当然要阅读官方手册,所...
DiracFatCat 2018-06-19 15:10
【博客大赛】卡尔曼滤波学习笔记(八)可观测性和可控制性 ...
可观测性是指,在给定模型的情况下,动力学系统的状态是否由它的输入输出唯一确定。可观测性是系统模型的特征。如果传感器矩阵H是可逆的,则本系统可观测,因为有:如果传感器矩阵H某些时候是不可逆的,则本系统仍...
DiracFatCat 2018-06-19 10:56
【博客大赛】卡尔曼滤波学习笔记(七)Z变换
如果我们仅仅对离散线性系统感兴趣,那么就使用下面这个表达式:如果u是常量,那么可以写成:为了简化表达式,我们可以将上面写成:离散线性时不变系统的Φ求解,可以使用Z变换。(* 由于本人已经忘记了Z变换的...
DiracFatCat 2018-06-19 10:54
【博客大赛】卡尔曼滤波学习笔记(六)拉普拉斯变换
对于线性时变/时不变系统,求解Φ(t)有多种方式,拉普拉斯变换是其中一种。(* 由于本人已经忘记了拉普拉斯变换的内容,因此本节待续。)...
我要评论
2
17
关闭 站长推荐上一条 /2 下一条