有哪些新手程序猿不知道(或容易忽视)的大杀技?

关注者
608
被浏览
13,177

13 个回答

大杀技是战略性的,小技巧是战术性的;大杀技数量少,小技巧非常多。



在上图“编程之钻”所绘的编程的每个子领域(子学科)中,其实都有若干的大杀技。


Tracing

可称之为“大杀技”的方法或技术,我首先想到的是 Tracing(程序跟踪)技术,俗称“打(印)日志”。

如下题:

老程序员解bug有哪些通用套路?


由于各种原因,初中级猿常常在掐虫(Debugging,调试)上面画去了大量的时间和精力(有的可能要占到总工时的 30-50% 以上),可效果也不怎么好。

过去二十多年,我自身的掐虫经验和体会是:

调试成功十有八九靠的是 Tracing(打日志),尤其那些疑难的 bugs。常见的命令行或 GUI debugger、设断点、单步调试等等,我很少用。

看到 @int32bit 说:

骨灰级大神用print就够了,比如Linux之父Linus Torvalds从不用任何debugger工具:Linus Torvalds: Debugging hell,还有Python之父Guido van Rossum 自称使用print语句排查90%的bug。

感谢 @int32bit 提供的链接!原来这些话出自魁北克大学计算机科学教授 Daniel Lemire 的一篇 blog:

I do not use a debugger

教授还列举了几位反对或很少用 debugger 的业界大咖:

I am not alone. In five minutes, I was able to find several famous
programmers who took positions against debuggers or who reported barely
using them.
Linus Torvalds, the creator of Linux, does not use a debugger.
Robert C. Martin, one of the inventors of agile programming, thinks that debuggers are a wasteful timesink.
John Graham-Cumming hates debuggers.
Brian W. Kernighan and Rob Pike wrote that stepping through a program less productive than thinking harder and adding output statements and self-checking code at critical places. Kernighan once wrote that the most effective debugging tool is still careful thought, coupled with judiciously placed print statements.
The author of Python, Guido van Rossum has been quoted as saying that uses print statements for 90% of his debugging.


欣慰,原来大师们的经验与体会和我一直想的一样。

你看,杀灭八九成的 bug 靠打日志,看来“print 大法”作为一种编程大杀技确实是当之无愧的。

当然,几十年过去了,灭虫还直接用 print 原始了点。在 OO 界一般都会用 Tracer、Logger 等等高级对象进行封装,各大语言和平台也都提供了类似的跟踪 API。

。。。

学好英语就打开了Google和stackoverflow的大门,流利的英文阅读,和习惯性英文搜索,能帮你超越90%的程序员。