- 論壇徽章:
- 1
|
鑒于連日來各個版面都出現的一些問題,
我本人就此說一些我自己的一些觀點。
假如你還沒有讀過本文,請盡量抽出一些時間仔細地讀一讀它。
1,請在你有空的時候,多去讀一讀置頂的精華目錄里邊的帖子,哪怕是你現在還沒有碰到什么麻煩,也請盡量去讀一讀它。精華通常是以前討論過的一些比較精彩的帖子,也許會對你的學習有所幫助。
2,平時有空了,多來幾次這個論壇,碰到別人討論某個自己比較熟悉的問題的時候,請盡量參與發言。通常情況,你自己認為是對的東西說出來以后都會有人反駁,在辯論的過程中你會發現自己對相關知識的認識會更進一層。
3,假如你碰到什么麻煩了,請盡量回憶一下,精華中是否有相應的內容?如果沒有,再去發帖子。當然了,如果第一步你做的比較好的話,你基本上都會很快做出判斷的。
4,置頂的帖子中有一些書籍,都是大家公認為比較出色的,如果你還有業余時間,請下載下來抽空閱讀一下,對提高你的水平大有裨益。
5,當你通過論壇解決了自己的問題之后,不妨把解決的方法寫出來,告訴大家。這樣會很方便后來的人。還有可能被版主加為原創精華哦!
為了盡量不耽擱大家的時間,我就僅僅提醒這些了。
如果你還有更多的時間,請務必閱讀一下《提問的智慧》一文:
http://www.9238.net/stone/tiwendezhihui.htm
增補:
1,大家發完帖子都順便看一看、看是不是發對了?
怎么有很多人發的帖子里邊亂七八糟一堆亂碼,然后就不管了?
不要一發完就跑到一邊兒玩去了,等過一陣子再刷新一下,看有沒有人回復。
2004.07.08 增補:
今天看《一切從游戲開始》,覺得其中這一段話不錯,特來共享給 BBS 上的朋友們。(注原文中的文字一個都沒有改,不知道為什么說是五個方法而下面卻又列出6條。)
- 解決編程問題的五個方法
- 1. 把問題規范成一個普遍的形式,這樣更容易和別人交流以及找相關資料.
- 2. 自己嘗試找答案.
- 3. 在網上搜尋更好的答案.
- 4. 想一個方法來打敗這個更好的答案.
- 5. 翻查教科書或是文獻,從基本開始思考有沒有最好的解.這些書能被選成教本一定有它的原因.
- 6. 研究問題的特殊情況, 也許會有別出心裁的巧妙方法.
復制代碼
2004.12.13 增補:
《你的燈還亮著嗎?》一書中寫道:
當你為了尋找解決問題的方法而累得筋疲力盡時,不妨向后看看,看看你是不是已經迷路了?你的問題究竟是什么?
2005.01.29 增補:
節選自 http://wiki.perlchina.org/main/show/brian%27s+Guide+to+Solving+Any+Perl+Problem
當你的程序碰到了問題時,請試著按照下面的思路處理一下:
這是個人問題
別老想著是你的代碼。你可能覺得自己是個藝術家,但實際上就算是經驗豐富的大師也會寫出很多垃圾。每個人的代碼都是垃圾,我的也是你的也是。要學著去喜歡它。當你碰到問題的時候,你應該想:“噢,我寫的垃圾代碼出了點問題!边@說明你不再去責怪Perl。不應該變成個人性的問題。
個人責任感
如果你的代碼出了問題,那僅僅是——你——的問題。你應該盡最大的力量自己解決。記住,每個人都有自己的代碼,每個人都有自己的問題。自己的作業自己做,在麻煩別人之前先盡自己最大的努力。如果你老老實實地按照這個指南做了所有能做的事之后,依然不能解決問題,那么你已經盡力了,應該找別人來看看。
改變你做事的方法
改正之后不要再犯同樣的錯誤。很可能是你寫代碼的方法錯了,而不是你寫的代碼錯了。改變你以前做事的方法,讓生活更容易些。不要指望Perl來習慣你,因為這是不可能的。你要習慣Perl。它只是種語言,而不是種生活方式。
解決第一個問題先!
你從Perl中得到警告或者錯誤信息之后,先解決第一個,然后看Perl是否依舊報出其他錯誤。因為后續的錯誤很可能是由于第一個錯誤衍生而來的。
檢查錯誤信息行號之前的代碼!
Perl在錯誤已經發生的時候才報錯,而不是在此之前。因此當Perl報出行號時錯誤已經發生了,而出錯的地方是在這之前?纯村e誤行號之前的代碼和表達式是否有問題。
那個變量值是你想的那樣嗎?
不要亂猜!在表達式中使用某個值的時候先檢查它是否正確。世界上最好的調試器就是print。
print STDERR "The value is [$value]\n";
我用括號括住$value的原因是因為這樣我可以看見開頭和尾巴上是否有空格或者換行。
如果打印出來的結果不是你所期望的,那么移到前面幾句,再來!找到這個值最后正確的位置。
你用的函數是正確的嗎?
我寫perl程序的時間已經不短了,可我還是幾乎每天都要查perlfunc。有些東西我就是吃不準,而有時候我太缺乏睡眠了以至于沒了常識,然后總搞不懂為什么sprintf()不打印到屏幕上。
你用小腳本測試過了嗎?
如果你在嘗試新的東西,或者覺得某一小段代碼很奇怪,你可以寫一個最短的程序運行一下這一個片斷。這個方法把所有其他的因素都排除在外。如果測試沒有問題,那說明問題可能不在這段代碼里面。如果測試結果不對,那你大概就找到了你的問題所在。
你檢查環境了嗎?
有些東西是依賴環境變量的。你確定你的環境變量都是對的嗎?程序運行的時候用到的環境變量是你現在看到的環境變量嗎?記住有些CGI程序或長時間運行的程序可能用到的環境變量和你在shell里看到的不一樣,尤其是在不同的機器上的時候。
Perl講環境變量存儲在%ENV里。如果你需要某個環境變量,就算是在測試的時候,也記住先提供一個默認值,如果它原來不存在的話。
你試過Google了嗎?
你碰到一個問題的時候,說不定其他人也碰到過同樣的。用Google Groups(http://groups.google.com)搜索看看是不是有人在comp.lang.perl.misc上貼過什么。在新聞組里問問題的人和回答問題的人的差別在于,他們使用Google Groups的能力高底不同。
你和小熊說話了嗎?
把你的問題大聲說出來。把它變成語言。有幾年我很愉快地和一個很優秀的程序員一起工作,他幾乎能解決任何問題。當我被什么問題堵住的時候,我總去請教他,跟他解釋我的問題。幾乎每次都是這樣的情況:我說不到第三句,就停下來,說:“噢我明白了,沒問題了!彼看我捕际沁@樣。
你可能需要做太多次這樣的事情,所以我推薦拿一個長毛絨玩具做為你的Perl臨床診斷家,這樣你就不會惹怒你的同事了。我的桌子旁邊就有一只小熊,我每次都把我的問題解釋給他聽。每次當我自言自語的時候,我女朋友跟本都不會注意,她習慣了。
你認真檢查自己了嗎?
如果到了這一步你還沒有解決的話,這說不定是個心理問題?赡苣銓δ扯未a有特別的感情,所以不想改掉它。說不定你覺得只有你是對的,別人都錯了。當你有這種感覺的時候,你沒有認真考慮bug的最大來源——你自己。不要放過任何東西,保證它們全都是對的。
[ 本帖最后由 flw 于 2006-1-18 11:07 編輯 ] |
|