程序员界里一些有趣的名言之个人理解
前沿
以下这些话都不是我说的,只是看到时觉得比较有趣或者有价值,
所以记录下来,再加上自己的理解。
1. 不要担心你的程序出现异常,如果它总是正确的运行那我们可能早就事业了。
[个人理解]:任何程序都会出现异常,只不过出现异常的原因可能有很多,
比如程序某一版本的改动引入了新的bug,或者程序运行环境的差异,甚至是硬件的限制等等。
特别是在消费电子类产品中,由于更新换代的速度很快,所以程序中的bug总是在所难免,
这是由软件的特点所决定:改动越多,bug会越多。
唯一不产生bug的条件就是:不做程序员,不写代码哪怕只有一行甚至改动一个字符。
但是像对于企业级应用软件,不太会常常更改需求,也不太可能会为某个客户做专门的定制,
这种软件理论上是会趋于稳定的。
所以我们要坦然的去面对所遇到的每一个bug,善于总结分析、努力提高自己。
2. 当你准备给你的代码加注释的时候,你应该要思考怎么样修改代码而不是去给代码加注释。
[个人理解]:关于代码注释,应该是争议的内容:反对给代码添加注释者的理由是你应该要能
写出可读性好的代码,通过看代码就应该能立即明白你的代码的意义或功能;支持给代码注释者
的理由是只有加了注释的代码才是可读性好的代码,才能帮助别人理解代码。
这里个人的感觉是代码注释应该要适度去使用:(1)如果你的代码中实现了一些抽象度很高的算法
来完成某个功能,应该要简明扼要的注释一下;(2)像提供给其它模块的API,应该要对基本的函数功能,
输入输出以及返回值含义等进行说明,总不能每次调用一个API,都要去翻一下文档吧?
(3)如果给代码注释,那将来代码改动时一定要同步改动这些注释,否则这些注释不但不能
发挥应有的作用反而会产生负面效果。这会成为代码维护者的噩梦,也会让你有机会被
千千万万次问候。
3. 九个人不能用一个月生一个孩子。
[个人理解]:这是软件工程学的问题,软件不是简单的人力叠加就能简单的达到软件周期的缩减。
软件的生命周期包括:问题定义、可行性研究、需求分析、开发阶段(编码、设计与实现)以及软件维护
这些过程。
4. 质量、速度和廉价,选择其中两个。
[个人理解]:总不能既当婊子,又要立牌坊吧?
5. 如果你交给一个人一个程序,那你将折磨他一天;如果你教会一个人怎样去编程,那你将折磨他一辈子。
[个人理解]:这个不评论,自行体会。
6. 作为一个程序员,糟糕的是不敢去修改一个代码块,而更糟糕的是这个代码是你自己写的。
[个人理解]:这个说明了代码可读性的及其重要性以及时间可以让人淡忘一切,所以我们要努力写出
优质的可读性好的代码;必要时对一些特别的案例要添加适当的注释甚至文档化以备将来翻阅。
7. 软件开发是这样的:前90%的代码需要90%的开发时间;后10%的代码仍然需要90%的开发时间。
[个人理解]:软件开发常常就是这样的,总是会有各种不预期的因素导致产品延期交付。
8. 用代码行数来衡量软件开发进度就好比是用重量来衡量飞机制造进度一样。
[个人理解]:如果有人用这种方法来衡量,个人认为是可笑且荒谬的,还是我是井底之蛙?
9. 空代码的执行效率比任何其他代码的执行效率都要高。
[个人理解]:说的完全正确,可是我们总不能只靠空代码来写出一个软件吧?
但是这也告诉我们,在编程时就应该要想到软件的效率问题,你的软件中不应该大量包含那些无意义、
无用的、多余的代码,努力写出执行效率高、用户体验良好的软件。
10. 当你试图解决一个你不明白的问题时,复杂性就产生了。
[个人理解]:问题都不知道是什么,还谈什么解决问题,那完全是胡扯。
这也就是为什么当你在解决一个问题时,老板要求你汇报产生问题的根本原因的原因。
11. 傻子都可以写出计算机可以识别的代码;但只有优秀的程序员可以写出人类可以理解的代码。
[个人理解]:这难度是说如果你写不出别人能够理解的代码时,你就是傻子吗?
我想这里应该是要说,代码的可读性是多么的重要啊。
你的代码应该不总是只有你一个人来看,所以努力写出可读性好的代码吧。
12. 我只是具有好的编程习惯的优秀程序员。
[个人理解]:这该是多么谦虚的说法啊。
事实上你会发现如果你一直坚持着良好的编程习惯,你就有可能写出好的软件,并且你会
发现好的编程习惯会给你带来很多价值(比如你的bug变少了,你学习的时间变多了)。
13. 软件工程师在努力设计出连白痴都会使用的程序,而宇宙却在生产更大的白痴。
到目前为止,宇宙是胜利者。
[个人理解]:我不赞同这里的白痴言论。你不能指望世界上所有的人都会成为计算机专家。
不过人类的需求总是具有多样性并且在无止境的变化着。
14. 去调试一段你从未见过的代码比你自己去重写这些代码需要更多的精力。
[个人理解]:这不一定,或者说这句话有他的适用范围,比如你在调试某个linux内核函数。
但是很多时候我都是一遍调试并且一遍"骂"着。
15. 计算机编程的编制就是要控制复杂性。
[个人理解]:到目前为止,个人的理解是越简单的东西越稳定。
越复杂的东西,其隐藏的问题可能越多,只是还没有被发现而已。
16. 用几个小时去计划,可以节省你几周的编码时间。
[个人理解]:你就像你在变化之前画流程图一样,你不但要清楚做什么,还要知道怎么做,
否则再多的编码都是没意义的。
17. 软件设计方法通常有两种:一种是使软件简单明显没有缺陷;另一种是软件过于复杂
没有明显的缺陷。
[个人理解]:软件设计能简单就简单点,越简单的东西越不容易出问题。