導航:首頁 > 程序命令 > 程序員調試代碼方法

程序員調試代碼方法

發布時間:2022-09-18 09:42:07

java程序員怎樣調試bug

前端調試技巧:瀏覽器按F12 可以觀察控制台輸出的變數,可以看請求的情況(請求路徑、參數等) ,這些都是常用的,每個瀏覽器不同。一般都是火狐的firebug 和谷歌瀏覽器

console.log(vartem);//控制台列印變數
alert("tem");//彈出框彈出變數

後台調試:eclipse IDE就是在相對應的java代碼處打斷點,看變數值等

㈡ 編寫計算機程序有幾種常用的方法

編寫程序是一項系統而繁瑣的工作,它不僅需要程序設計人員具有一定的功底,更需要有良好的編程習慣和風格。良好的編程習慣和風格不僅可以使程序代碼更易於讀懂和修改,更重要的是,它可以使程序的結構更加合理,有助於提高程序的執行效率。下面是我在程序設計中總結的一些經驗,供大家參考。
設計順序

在我們剛開始學習程序設計的時候,要編寫一個程序,總是先進行一番構思,然後就一邊寫代碼一邊調試。這種方法一般只適用於非常小的程序,根據工程的特點,如果對所有程序都還按這種方法進行設計,是不合理的。

其實,設計程序就像我們蓋高樓大廈,首先要設計圖紙,然後動工。所以,對於個人編寫程序來說,應遵循以下步驟:

1、問題分析:對我們要使用程序設計手段去解決的問題進行系統地分析,了解程序是做什麼的,要達到一種什麼樣的效果等。

2、結構設計:也就是對程序的整體框架進行設計,設計出我們需要使用的模塊等等,並畫出流程圖。

3、用戶界面設計:在此,我們要設計出用於與用戶交互的輸入輸出界面。

4、代碼設計:在這個步驟中,我們要進行代碼的編寫。

5、調試:對程序中正在發生或可能發生的各種錯誤進行處理。

6、維護:通俗地說,維護就是對程序進行升級,對原有錯誤進行修改。

對於以上幾個步驟,我想大多數人會認為代碼設計最為重要,但如果程序的結構尚未清楚,我們在編寫代碼的時候就會發生混亂,一個程序性能的好壞,主要還是取決於它的結構是否合理。因此,在程序設計中,我們要盡可能注意這一點,這樣才能使我們的程序更加完善。

設計環境

一個良好的編程環境可以使我們在編寫程序時,不至於造成各種資源的紊亂,還可以避免資源的丟失。建議大家要在放源程序的目錄下建立「Programs」文件夾;然後再以你要編寫的程序名和版本為名建立一個文件夾,用於存放整個源程序以及各種資源;最後,分別建立幾個文件夾,「Documents」:用於存放程序文檔,包括流程圖等;「Resource」:用於存放圖片,聲音,影片等資源;「Debug」:用於存放調試的程序。「Release」:用於存放最終釋放的程序。

例如:我們要製作一個英語學習,名為「English」,版本為1.0,那麼我們的編程環境中應存在以下文件夾:

[DRIVE]:\\…\\Programs\\English1\\Debug\\

[DRIVE]:\\…\\Programs\\English1\\Documents\\

[DRIVE]:\\…\\Programs\\English1\\Resource\\

[DRIVE]:\\…\\Programs\\English1\\Release\\

另外,最好再建立一個專門的文件夾,用於存放各種模塊,以便能實現代碼的重用,這樣,我們就不用在每次寫程序時,都重寫所有的模塊,編程速度會有很大的提高。

設計技巧

代碼如果寫得很亂,程序便不易被閱讀與修改,所以,在編寫代碼時要注意以下幾點:

(1)注釋:寫注釋雖然要佔用一定的時間,但在閱讀和修改代碼時卻會節省很多的時間。所以,建議大家在定義一個函數時,在函數的第一行寫出函數的作用,再用一行解釋函數的參數,並在每個變數的定義語句後注釋出其作用。

(2)變數和函數的命名:每個程序都會使用很多的變數和函數,如果隨意命名變數與函數,每次使用時還得在變數或函數的定義語句處查出它的數據類型及名稱,而且隨意命名還會造成變數與函數重復定義。

建議大家使用匈牙利命名法,方法是:每個變數或函數的開頭都以其數據類型的縮寫命名,然後再加上代表這個變數或函數的作用的英文單詞簡寫共同組成變數或函數的名稱。例如:要定義用於計數的整型變數count,其定義語句為C\\C++:int icount; Basic:Dim icount as Integer。以這種方法定義,不僅可以有效地避免變數與函數的混亂與重復定義,還可以保證數據類型的匹配。

(3)控制項命名:如果在Windows下編程,你有可能會大量地使用控制項,如果不對控制項名嚴加管理,會造成很大程度的混亂,因此,建議在給控制項命名時,以控制項類型縮寫再加上代表這個控制項作用的英文單詞的簡寫共同組成此控制項的名稱。例如:你要命名一個按鈕控制項,作用是進行刪除操作,那麼控制項名可以命名為cmdDel。

並不是每個人都能成為頂級程序員,但我們都在程序員之路上不斷進步,追求更完美、更專業化的程序。不妨好好改造一下你的程序,你會從中感受到很多好處。

㈢ 對C語言進行調試的最好方法是什麼

要了解調試程序的最好方法,首先要分析一下調試過程的三個要素:
應該用什麼工具調試一個程序?
用什麼辦法才能找出程序中的錯誤?
怎樣才能從一開始就避免錯誤?
應該用什麼工具調試一個程序?
有經驗的程序員會使用許多工具來幫助調試程序,包括一組調試程序和一些"lint」程序,當然,編譯程序本身也是一種調試工具。
在檢查程序中的邏輯錯誤時,調試程序是特別有用的,因此許多程序員都把調試程序作為基本的調試工具。一般來說,調試程序能幫助程序員完成以下工作:
(1)觀察程序的運行情況
僅這項功能就使一個典型的調試程序具備了不可估量的價值。即使你花了幾個月的時間精心編寫了一個程序,你也不一定完全清楚這個程序每一步的運行情況。如果程序員忘記了某些if語句、函數調用或分支程序,可能會導致某些程序段被跳過或執行,而這種結果並不是程序員所期望的。不管怎樣,在程序的執行過程中,尤其是當程序有異常表現時,如果程序員能隨時查看當前被執行的是那幾行代碼,那麼他就能很好地了解程序正在做什麼以及錯誤發生在什麼地方。
(2)設置斷點
通過設置斷點可以使程序在執行到某一點時暫時停住。當你知道錯誤發生在程序的哪一部分時,這種方法是特別有用的。你可以把斷點設置在有問題的程序段的前面、中間或後面。當程序執行到斷點時,就會暫時停住,此時你可以檢查所有局部變數、參數和全局變數的值。如果一切正常,可以繼續執行程序,直到遇到另一個斷點,或者直到引起問題的原因暴露出來。
(3)設置監視
程序員可以通過調試程序監視一個變數,即連續地監視一個變數的值或內容。如果你清楚一個變數的取值范圍或有效內容,那麼通過這種方法就能很快地找出錯誤的原因。此外,你可以讓調試程序替你監視變數,並且在某個變數超出預先定義的取值范圍或某個條件滿足時使程序暫停執行。如果你知道變數的所有行為,那麼這么做是很方便的。
好的調試程序通常還提供一些其它功能來簡化調試工作。然而,調試程序並不是唯一的調試工具,lint程序和編譯程序本身也能提供很有價值的手段來分析程序的運行情況。
注意:lint程序能分辨數百種常見的編程錯誤,並且能報告這些錯誤發生在程序的哪一部分。盡管其中有一些並不是真正的錯誤,但大部分還是有價值的。
lint程序和編譯程序所提供的一種典型功能是編譯時檢查(compile—time checks),這種功能是調試程序所不具備的。當用這些工具編譯你的程序時,它們會找出程序中有問題的程序段,可能產生意想不到的效果的程序段,以及常見的錯誤。下面將分析幾個這種檢查方式的應用例子,相信對你會有所幫助。
等於運算符的誤用
編譯時檢查有助於發現等於運算符的誤用。請看下述程序段:
void foo(int a,int b)
{
if ( a = b )
{
/ * some code here * /
}
}
這種類型的錯誤一般很難發現!程序並沒有比較兩個變數,而是把b的值賦給了a,並且在b不為零的條件下執行if體。一般來說,這並不是程序員所希望的(盡管有可能)。這樣一來,不僅有關的程序段將被執行錯誤的次數,並且在以後用到變數a時其值也是錯誤的。
未初始化的變數
編譯時檢查有助於發現未初始化的變數。請看下面的函數:
void average ( float ar[], int size )
{
float total;
int a;
for( a = 0;a<size; ++a)
{
total+=ar[a];
}
printf(" %f\n", total / (float) size );
}
這里的問題是變數total沒有被初始化,因此它很可能是一個隨機的無用的數。數組所有元素的值的和將與這個隨機數的值相加(這部分程序是正確的),然後輸出包括這個隨機數在內的一組數的平均值。
變數的隱式類型轉換
在有些情況下,C語言會自動將一種類型的變數轉換為另一種類型。這可能是一件好事(程序員不用再做這項工作),但是也可能會產生意想不到的效果。把指針類型隱式轉換成整型恐怕是最糟糕的隱式類型轉換。
void sort( int ar[],int size )
{
/* code to sort goes here * /
}
int main()
{
int arrgy[10];
sort( 10, array );
}
上述程序顯然不是程序員所期望的,雖然它的實際運行結果難以預測,但無疑是災難性的。
用什麼辦法才能找出程序中的錯誤?
在調試程序的過程中,程序員應該記住以下幾種技巧:
先調試程序中較小的組成部分,然後調試較大的組成部分
如果你的程序編寫得很好,那麼它將包含一些較小的組成部分,最好先證實程序的這些部分是正確的。盡管程序中的錯誤並不一定發生在這些部分中,但是先調試它們有助於你理解程序的總體結構,並且證實程序的哪些部分不存在錯誤。進一步地,當你調試程序中較大的組成部分時,你就可以確信那些較小的組成部分是正常工作的。
徹底調試好程序的一個組成部分後,再調試下一個組成部分
這一點非常重要。如果證實了程序的一個組成部分是正確的,不僅能縮小可能存在錯誤的范圍,而且程序的其它組成部分就能安全地使用這部分程序了。這里應用了一種很好的經驗性原則,簡單地說就是調試一段代碼的難度與這段代碼長度的平方成正比,因此,調試一段20行的代碼比調試一段10行的代碼要難4倍。因此,在調試過程中每次只把精力集中在一小段代碼上是很有幫助的。當然,這僅僅是一個總的原則,具體使用時還要視具體情況而定。
連續地觀察程序流(flow)和數據的變化
這一點也很重要!如果你小心仔細地設計和編寫程序,那麼通過監視程序的輸出你就能准確地知道正在執行的是哪部分代碼以及各個變數的內容都是什麼。當然,如果程序表現不正常,你就無法做到這一點。為了做到這一點,通常只能藉助於調試程序或者在程序中加入大量的print語句來觀察控制流和重要變數的內容。
始終打開編譯程序警告選項 並試圖消除所有警告
在開發程序的過程中,你自始至終都要做到這一點,否則,你就會面臨一項十分繁重的工作。盡管許多程序員認為消除編譯程序警告是一項繁瑣的工作,但它是很有價值的。編譯程序給出警告的大部分代碼至少都是有問題的,因此用一些時間把它們變成正確的代碼是值得的;而且,通過消除這些警告,你往往會找到程序中真正發生錯誤的地方。
准確地縮小存在錯誤的范圍
如果你能一下子確定存在錯誤的那部分程序並在其中找到錯誤,那就會節省許多調試時間,並且你能成為一個收入相當高的專業調試員。但事實上,我們並不能總是一下子就命中要害,因此,通常的做法是逐步縮小可能存在錯誤的程序范圍,並通過這種過程找出真正存在錯誤的那部分程序。不管錯誤是多麼難於發現,這種做法總是有效的。當你找到這部分程序後,就可以把所有的調試工作集中到這部分程序上了。不言而喻,准確地縮小范圍是很重要的,否則,最終集中精力調試的那部分程序很可能是完全正確的。
如何從一開始就避免錯誤?
有這樣一句諺語——「防患於未然」,它的意思是避免問題的出現比出現問題後再想辦法彌補要好得多。這在計算機編程中也是千真萬確的!在編寫程序時,一個經驗豐富的程序員所花的時間和精力要比一個缺乏經驗的程序員多得,但正是這種耐心和嚴謹的編程風格使經驗豐富的程序員往往只需花很少的時間來調試程序,而且,如果此後程序要解決某個問題或做某種改動,他便能很快地修正錯誤並加入相應的代碼。相反,對於一個粗製濫造的程序,即使它總的來說還算正確,那麼改動它或者修正其中一個很快就暴露出來的錯誤,都會是一場惡夢。
一般來說,按結構化程序設計原則編寫的程序是易於調試和修改的,下面將介紹其中的一些原則。
程序中應有足夠的注釋
有些程序員認為注釋程序是一項繁瑣的工作,但即使你從來沒想過讓別人來讀你的程序,你也應該在程序中加入足夠的注釋,因為即使你現在認為清楚明了的語句,在幾個月以後往往也會變得晦澀難懂。這並不是說注釋越多越好,過多的注釋有時反而會混淆代碼的原意。但是,在每個函數中以及在執行重要功能或並非一目瞭然的代碼前加上幾行注釋是必要的。下面就是一段注釋得較好的代碼:
/*
* Compute an integer factorial value using recursion.
* Input an integer number.
* Output : another integer
* Side effects : may blow up stack if input value is * Huge *
*/
int factorial ( int number)
{
if ( number < = 1)
return 1; /* The factorial of one is one; QED * /
else
return n * factorial( n - 1 );
/ * The magic! This is possible because the factorial of a
number is the number itself times the factorial of the
number minus one. Neat! * /
}
函數應當簡潔
按照前文中曾提到的這樣一條原則——調試一段代碼的難度和這段代碼長度的平方成正比——函數編寫得簡潔無疑是有益的。但是,需要補充的是,如果一個函數很簡潔,你就應該多花一點時間去仔細地分析和檢查它,以確保它准確無誤。此後你可以繼續編寫程序的其餘部分,並且可以對剛才編寫的函數的正確性充滿信心,你再也不需要檢查它了。對於一段又長又復雜的常式,你往往是不會有這樣的信心的。
編寫短小簡潔的函數的另一個好處是,在編寫了一個短小的函數之後,在程序的其它部分就可以使用這個函數了。例如,如果你在編寫一個財務處理程序,那麼你在程序的不同部分可能都需要按季、按月、按周或者按一月中的某一天等方式來計算利息。如果按非結構化原則編寫程序,那麼在計算利息的每一處都需要一段獨立的代碼,這些重復的代碼將使程序變得冗長而難讀。然而,你可以把這些任務的實現簡化為下面這樣的一個函數:
/*
* ComDllte what the "real" rate of interest would be
* for a given flat interest rate, divided into N segments
*/
double Compute Interest( double Rate, int Segments )
{
int a;
double Result = 1.0;
Rate /= (double) Segments;
for( a = 0; a< Segments ; ++a )
Result * =Rate;
return Result;
}
在編寫了上述函數之後,你就可以在計算利息的每一處調用這個函數了。這樣一來,你不僅能有效地消除每一段復制的代碼中的錯誤,而且大大縮短了程序的長度,簡化了程序的結構。這種技術往往還會使程序中的其它錯誤更容易被發現。
當你習慣了用這種方法把程序分解為可控制的模塊後,你就會發現它還有更多的妙用。
程序流應該清晰,避免使用goto語句和其它跳轉語句
這條原則在計算機技術領域內已被廣泛接受,但在某些圈子中對此還很有爭議。然而,人們也一致認為那些通過少數語句使程序流無條件地跳過部分代碼的程序調試起來要容易得多,因為這樣的程序通常更加清晰易懂。許多程序員不知道如何用結構化的程序結構來代替那些「非結構化的跳轉」,下面的一些例子說明了應該如何完成這項工作:
for( a = 0; a<100s ++a)
{
Func1( a );
if (a = = 2 ) continue;
Func2( a );
}
當a等於2時,這段程序就通過continue語句跳過循環中的某余部分。它可以被改寫成如下的形式:
for( a = 0; a<100; ++a)
{
Func1 (a);
if (a !=2 )
Func2(a) ;
}
這段程序更易於調試,因為花括弧內的代碼清楚地顯示了應該執行和不應該執行什麼。那麼,它是怎樣使你的代碼更易於修改和調試的呢?假設現在要加入一些在每次循環的最後都要被執行的代碼,在第一個例子中,如果你注意到了continue語句,你就不得不對這段程序做復雜的修改(不妨試一下,因為這並非是顯而易見的!);如果你沒有注意到continue語句,那麼你恐怕就要犯一個難以發現的錯誤了。在第二個例子中,要做的修改很簡單,你只需把新的代碼加到循環體的末尾。
當你使用break語句時,可能會發生另外一種錯誤。假設你編寫了下面這樣一段程序:
for (a =0) a<100; ++a)
{
if (Func1 (a) ==2 )
break;
Func2 (a) ;
}
假設函數Funcl()的返回值永遠不會等於2,上述循環就會從1進行到100;反之,循環在到達100以前就會結束。如果你要在循環體中加入代碼,看到這樣的循環體,你很可能就會認為它確實能從0循環到99,而這種假設很可能會使你犯一個危險的錯誤。另一種危險可能來自對a值的使用,因為當循環結束後,a的值並不一定就是100。
c語言能幫助你解決這樣的問題,你可以按如下形式編寫這個for循環:
for(a=O;a<100&&Func1(a)!=2;++a)
上述循環清楚地告訴程序員:「從0循環到99,但一旦Func1()等於2就停止循環」。因為整個退出條件非常清楚,所以程序員此後就很難犯前面提到的那些錯誤了。
函數名和變數名應具有描述性
使用具有描述性的函數和變數名能更清楚地表達代碼的意思——並且在某種程度上這本身就是一種注釋。以下幾個例子就是最好的說明:
y=p+i-c;

YearlySum=Principal+Interest-Charges:
哪一個更清楚呢?
p=*(l+o);

page=&List[offset];
哪一個更清楚呢?

㈣ Java程序員怎樣調試bug

前端調試技巧:瀏覽器按F12 可以觀察控制台輸出的變數,可以看請求的情況(請求路徑、參數等) ,這些都是常用的,每個瀏覽器不同。一般都是火狐的firebug 和谷歌瀏覽器<br>console.log(var tem); //控制台列印變數<br>alert("tem"); //彈出框彈出變數後台調試:eclipse IDE就是在相對應的java代碼處打斷點,看變數值等

㈤ 北大青鳥分享系統程序員怎樣把代碼寫得又快又好

很多初學者包括一些有經驗的程序員,在敲完代碼的最後一個字元後,馬上開始編譯和運行,迫不急待的想看到自己的工作成果。快速反饋有助於滿足自己的成就感,但是同時也會帶來一些問題:

讓編譯器幫你檢查語法錯誤可以省些時間,但程序員往往太專注這些錯誤了,以為改完這些錯誤就萬事大吉了。其實不然,很多錯誤編譯器是發現不了的,像內存錯誤和線程死鎖等等,這些錯誤可能逃過簡單的測試而遺留在代碼中,直到集成測試或者軟體發布之後才暴露出來,那時就要花更大代價去修改它們了。

修改完編譯錯誤之後就是運行程序了,運行起來有錯誤,就輪到調試器上場了。花了不少時間去調試,發現無非是些低級錯誤,或許你會自責自己粗心大意,但是下次可能還是犯同樣的錯誤。更嚴重的是這種debug & fix的方法,往往是頭痛醫頭腳痛醫腳,導致低質量的軟體。


讓編譯器幫你檢查語法錯誤,讓調試器幫你查BUG,這是天經地義的事,但這確實是又慢又爛的方法。就像你要到離家東邊1000米的地方開會,結果你往西邊走,又是坐車又是搭飛機,花了一周時間,也繞著地球轉了一周,終於到了會議室,你還大發感慨說,現代的交通工具真是發達啊。其實你往東走,走路也只要十多分鍾就到了。不管你的調試技巧有多高,都不如一次性寫好更高效。


下面是我在閱讀自己代碼時的一些方法:


檢查常見錯誤


第一遍閱讀時主要關注語法錯誤、代碼排版和命名規則等等問題,只要看不順眼就修改它們。讀完之後,你的代碼很少有低級錯誤,看起來也比較干凈清爽。第二遍重點關注常見編程錯誤,比如內存泄露和可能的越界訪問,變數沒有初始化,函數忘記返回值等等,在後面的章節中,我會介紹這些常見錯誤,避免這些錯誤可以為你省大量的時間。如果有時間,在測試完成之後,還可以考慮是否有更好的實現方法,甚至嘗試重新去實現它們。說了讀者可能不相信,在學習編程的前幾年,我經常重寫整個模塊,只我覺得能做得更好,能驗證我的一些想法,或提高我的編程能力,即使連續幾天加班到晚上十一點,我也要重寫它們。


模擬計算機執行


常見錯誤是比較死的東西,按照檢查列表一條一條的做就行了。有些邏輯通常不是這么直觀的,這時可以自己模擬計算機去執行,假想你自己是計算機,讀入這些代碼時你會怎麼處理。北大青鳥http://www.kmbdqn.com/認為這種方法能有效的完善我們的思路,考慮不同的輸入數據,各種邊界值,這能幫助我們想到一些沒有處理的情況,讓程序的邏輯更嚴謹。


㈥ 作為一個程序員,如何調試抓取跳轉頁面前發送

步驟:

㈦ 程序員如何規范代碼的編寫方法

對於每個程序員來說,養成良好的代碼編寫方法是非常關鍵的。在編寫代碼的過程中,每個人的方法是不同的,那麼應該如何規范自己代碼編寫的方法呢?規范編寫代碼有哪些要求呢?下面電腦培訓帶大家認識代碼編寫的方法。


一、保證代碼壓縮後不會出錯

對於大的JavaScript項目,一般來說,包含在項目中的所有JavaScript文件在產品公開時都會被壓縮。為了正確壓縮代碼,通常需要考慮壓縮工具的必要條件,如句子用分號正常結束,中括弧結束等。因此,IT培訓發現當編寫代碼沒有按照標准進行時,在發生壓縮錯誤後再次尋找錯誤是浪費時間的。

二、保證代碼能夠通過自動格式化功能

一般情況下需要使用完善的開發工具進行自動化格式功能,這個功能能夠進行換行、縮進和空格等方法的代碼編排,並且還可以設置自己喜歡的格式。別人在閱讀你的代碼時需要使用IDE進行格式轉換,以滿足個人的閱讀風格。昆明北大青鳥認為閱讀代碼能夠更加深入的了解代碼調用和細節的實現,這是簡單的文檔不能實現的。

三、使用標準的文檔注釋

這是編寫代碼中最基本的要求,能夠很好的了解代碼的提示,並且還可以利用配套的文檔工具生產其他格式讓別人閱讀。北大青鳥認為編寫完整的注釋還可以使團隊成員更容易閱讀您的代碼。通過您的參數描述,團隊成員很容易了解您想要傳遞參與實現細節和編寫的方法。


㈧ 杭州北大青鳥分享Java程序員編寫代碼的技巧

java程序員編寫代碼的技巧有哪些呢?Java程序員必須努力編寫完美的代碼,因此,為了編寫干凈的代碼,必須知道如何編寫才是真正的好方法,下面杭州杭州java軟體開發為大家總結了一些幫助編寫代碼的小方法。
1、編寫之前進行思考首先花10分鍾,20分鍾甚至30分鍾的時間來思考你需要什麼,以及哪些設計模式適合你將要編碼的內容。
這個時候杭州杭州IT培訓認為你會很高興你花費的這些時間,當你必須改變或添加一些代碼時,你不會擔心花費的幾分鍾,而是會花更多的時間去琢磨。
2、代碼進行注釋沒有什麼比兩個月後檢查你的代碼並不記得它被用來做什麼更糟的了。
重要的都注釋一下,如果是自己非常了解的內容,杭州北大青鳥建議這些可以選擇不進行注釋。
3、不要復制粘貼代碼最後自己手寫代碼,復制粘貼代碼會出現代碼塊重復的情況,並且不利於代碼的解讀。
4、學會測試代碼測試、測試、測試你的代碼。
不要等到你完成了程序才測試它,否則當你發現一個巨大的錯誤時,你會後悔之前的決定。
因為杭州計算機培訓學校發現如果你沒有進行每段代碼測試,最後出現問題是很難找到的。

㈨ 怎樣做一名高效率程序員

1、理解編程語言的原理

三流的人才懂應用,二流的人才懂開發,一流的人才懂原理。各種語言之間存在著相似的地方,掌握語言的原理是必不可少的。最重要的,讓語言去適應項目,反之亦然。

2、向優秀程序員學習

你有一個蘋果,我也有一個蘋果,我們交換蘋果,你我還是有一個蘋果;你有一種思想,我也有一種思想,我們交換思想,你我就有了兩種思想。

與優秀的程序員為伍,你將吸收的最實用的經驗,這遠比你一個人自學、死磕編程來的快一些。有一句話說到好,與臭棋佬下棋,棋會越下越臭。不可否認這樣一個事實:和什麼樣的人在一起,就有什麼樣的格局,就會有什麼樣的人生。

3、了解數據結構和演算法

如果你要成為一個高效的開發者,就必須學會快速排序、學會辨認O(n2)程序、學會編寫遞歸函數。

學會多種語言,你便會更清楚不同的框架是相同問題的是如何解決的。盡可能去了解底層命令(plumbing),以便能夠作出明智的決定(Web框架是怎麼存儲session狀態的?Cookie到底是什麼?)。

4、精通一個編輯器

高效開發者通常是用IDE編輯器嗎?其實不是的,他們更常用的文本編輯器,因為這樣更會學到東西。

如果使用編輯器選擇通用的Emacs或Vim,自然是最好的。其次,挑選你的首選平台最支持的。使用宏,不斷地寫代碼;使用Visual Studio或SublimeText的自動補齊功能。

5、整潔的代碼勝過巧妙的代碼

如果想讓別人可以輕松讀懂你編寫的代碼,請盡量使用最少的代碼來完成任務。在編寫代碼過程中,遵循DRY(Don』t repeat yourself)的原則,使用明確定義的對象和庫,將任務分解成小而簡單的代碼段。

6、掌握代碼調試技巧

現如今市場和需求變化相當快,項目的周期有時就會縮短。一個月的工作計劃,會縮短到2個星期。項目的壓力難免會導致程序員的代碼質量會有所下降!

因此,調試技巧在這樣的環境下就顯得尤為重要。高級程序員會在函數的開始和結束輸出Log,把所有的參數和返回值列印到日誌系統,便於追蹤。在解決問題的過程中,使用開發工具一行一行進行調試,實時觀看參數的變化。

7、重新回顧代碼

重新去回顧和審視自己寫過的代碼,通常會有兩種體驗,一種是我怎麼寫了這么爛的代碼;另外一種則是對自己寫過的代碼充滿了成就感。回顧代碼有時可以觸發我們新的想法,甚至還能對編碼有一個更深層次的思考。

閱讀全文

與程序員調試代碼方法相關的資料

熱點內容
php正則class 瀏覽:732
怎麼在文件夾查找一堆文件 瀏覽:541
核酸報告用什麼app 瀏覽:789
u8怎麼ping通伺服器地址 瀏覽:992
安卓什麼手機支持背部輕敲調出健康碼 瀏覽:868
程序員抽獎排行 瀏覽:742
扭蛋人生安卓如何下載 瀏覽:722
什麼app文檔資源多好 瀏覽:922
黑馬程序員APP 瀏覽:146
掌閱小說是哪個app 瀏覽:45
如何把u盤的軟體安裝到安卓機 瀏覽:998
php跑在什麼伺服器 瀏覽:122
編譯器怎麼跳轉到下一行 瀏覽:450
嵌入式py編譯器 瀏覽:324
rplayer下載安卓哪個文件夾 瀏覽:298
安卓手機里的電子狗怎麼用 瀏覽:748
pythonspyder入門 瀏覽:764
趣質貓app是什麼 瀏覽:61
皮帶壓縮機經常吸不上 瀏覽:206
西部隨行版怎樣加密 瀏覽:996