很多寫軟體的人都常說「這程式不是我寫的,我看不懂.....我怎麼知道問題在哪?」
奇怪這些軟體的常常遇到這樣的問題常常可以朗朗上口的說上一套軟體工程理論,無論從開發端的設計一直到最後的出版,理論之多我背都背不起來,可是怎麼一遇到臭蟲全部都破功了。
寫程式前些學會除蟲,為什麼呢?
除非你高人一等,否則你到一個工作崗位上,大概只有接手人家程式的機會。再來就是搞懂這個前人所遺留的一沱屎......如果是一沱好屎,你可以在裡面翻到很多的經驗,如果是一沱臭屎你又可以看出理面得奧妙,那你的功力想必也能提升。
因為除蟲不是一件容易的工作,甚至必須透過些微的資料及狀況判斷出問題及程式所犯的邏輯錯誤。而且你必須要有名偵探柯南的分析、判斷的本事,見微知著就是一個軟體工作者應該要有的超級本領。多會寫軟體都沒用,沒有除蟲的本領絕對不是一個好的軟體工作者。
我們也常聽到「這程式從來沒改過怎麼可能出問題呢?」
是的.....程式沒改,但使用者的資料改了、使用方式改了,你的程式硬生生的Exception了,這怪誰呢?人在怎麼改變也不應該出現Exception吧!就如同看到index out of range一樣,這會讓人氣死。
除蟲看來是一個很沒價值的工作,但其實除蟲者的功力卻要很高深,否則絕對無法抓出邏輯上的缺失,抓出軟體效能不彰的真因。別小看除蟲者,能做好除蟲工作者當他寫起程式絕對會是一個不錯的軟體工程人員。
Ex.
A表單
人員 分數 等級
===========
A0001 90 A
A0002 65 C
A0003 80 B
A0004 65 C
B表單
分數 等級
==========
90
80
65
上面兩個表單只是一個範例,如果寫一段程式要將B表單的等級根據A表單的分數填入,以下這樣寫會不會有問題?(以下是大約寫的一段程式碼)
for(i=0;i<A.size();i++)
{
for(j=0;j<B.size();j++)
{
if(B[j].grade == "" && B[j].score==A[i].score)
{
B[j].grade = A[i].grade;
break;
}else{
break;
}
}
}
留言列表