blog:
nealblog.cn
从某种意义上说,程序员也是医生。高明的医生和高明的程序员一样。蹩脚的程序员比较少,而蹩脚的医生很多。
有些时候,你可以把身体看做是一个程序,治病的过程类似修改BUG的过程。
高明的程序员是怎么样修改BUG呢?首先他会分析错误的现象(包括错误提示),然后知道在什么情况下发有这些错误提示(找出错误提示的代码),然后分析为什么会导致错误发生(包括变量变化、内存变化、步骤跟踪),然后找出问题所在;所以要改错误,必须知道错误所在,错误原因。知道了程序的整体架构,改起错误来就比较简单。并且要知道修改了这个错误会不会导致别的部分发生问题。
蹩脚的程序员会怎么做呢?要么无从着手;要么干脆把错误提示删掉(我自己干过这样的傻事也见过很多程序员干这样的事:));要么把一个程序给做死,不给未来留后路;要么改了一个错误引起其他的错误。
高明的医生是如何治病的呢?高明的医生一定了解人体的整体架构,知道五脏六腑七经八脉之间的关系。对于一个病症,首先知道这些症状(相当于错误提示)意味着什么东西,什么情况下会导致这些症状发生,然后经过分析(有时候可能是一段时间的观察)(相当于程序调试)确定病因,知道是什么导致的,然后对症下药,药到病除。
蹩脚的医生呢?要么无知;要么头痛医头脚痛医脚,看上去病好了,其实只[b]是[/b]症好了,[b]病[/b]还在;要么不管三七二十一把病体切除,造成不必要的损失;要么治好一个病又导致一个病。这样的例子数不胜数。
高明的医生也有治不好的病,因为病入膏肓了;程序员也是一样,有些程序烂的无可救药,错误的设计,程序做到最后根本无法修改。所以高明的医生会告诉大家:保健和预防才是健康的保证;高明的程序员在写代码之前会做一个很好的设计。
从某种意义上说,程序员也是医生。高明的医生和高明的程序员一样。蹩脚的程序员比较少,而蹩脚的医生很多。
有些时候,你可以把身体看做是一个程序,治病的过程类似修改BUG的过程。
高明的程序员是怎么样修改BUG呢?首先他会分析错误的现象(包括错误提示),然后知道在什么情况下发有这些错误提示(找出错误提示的代码),然后分析为什么会导致错误发生(包括变量变化、内存变化、步骤跟踪),然后找出问题所在;所以要改错误,必须知道错误所在,错误原因。知道了程序的整体架构,改起错误来就比较简单。并且要知道修改了这个错误会不会导致别的部分发生问题。
蹩脚的程序员会怎么做呢?要么无从着手;要么干脆把错误提示删掉(我自己干过这样的傻事也见过很多程序员干这样的事:));要么把一个程序给做死,不给未来留后路;要么改了一个错误引起其他的错误。
高明的医生是如何治病的呢?高明的医生一定了解人体的整体架构,知道五脏六腑七经八脉之间的关系。对于一个病症,首先知道这些症状(相当于错误提示)意味着什么东西,什么情况下会导致这些症状发生,然后经过分析(有时候可能是一段时间的观察)(相当于程序调试)确定病因,知道是什么导致的,然后对症下药,药到病除。
蹩脚的医生呢?要么无知;要么头痛医头脚痛医脚,看上去病好了,其实只[b]是[/b]症好了,[b]病[/b]还在;要么不管三七二十一把病体切除,造成不必要的损失;要么治好一个病又导致一个病。这样的例子数不胜数。
高明的医生也有治不好的病,因为病入膏肓了;程序员也是一样,有些程序烂的无可救药,错误的设计,程序做到最后根本无法修改。所以高明的医生会告诉大家:保健和预防才是健康的保证;高明的程序员在写代码之前会做一个很好的设计。