多人回復了寫代碼的干貨,黑馬今天以實際學習手把手告訴你學習的時候該怎么寫代碼。
我們以Java知識點的if分支有三種格式來說:
格式1:
if (條件表達式) {
語句體;
}
格式2:
if (條件表達式) {
語句體1;
} else {
語句體2;
}
格式3:
if (條件表達式1) {
語句體1;
} else if (條件表達式2) {
語句體2;
} else if (條件表達式3) {
語句體3;
}
. . .
else {
語句體n+1;
}
老師在講課的時候說每一個格式的執行流程和注意事項,以及給大家看到執行圖:
學完這些的時候我們可以看到課后會有案例,比如:
需求:鍵盤錄入考試成績,根據成績所在的區間,程序打印出不同的獎勵機制
我們一步一步來分析步驟:
第一步:鍵盤錄入考試成績
Scanner sc=new Scanner(System.in); int score=sc.nextInt();
第二步:由于獎勵種類較多,屬于多種判斷,采用if...else...if格式實現
if ( ) {
} else if ( ) {
} else if ( ) {
} else {
}
第三步:為每種判斷設置對應的條件
if (score >=95 && score <=100) {
} else if (score >=90 && score <=94) {
} else if (score >=80 && score <=89) {
} else {
}
第四步:為每種判斷設置對應的獎勵
System.out.println("山地自行車一輛");
System.out.println("游樂場玩一次");
System.out.println("變形金剛玩具一個");
System.out.println("胖揍一頓");
從上面的案例就可以進行if分支的練習了,寫代碼第一步是分析思考。從看到案例開始:
把實現思路邊分析邊記錄下來
(在分析實現思路的時候一邊分析一邊寫,用中文寫,越詳細越好),比如:
//第一步是要干什么
//第1.1要做什么
//第1.2要做什么
//....
//第二步是要干什么
//第2.1要做什么
//第2.2要做什么
//....
//.......以此類推
遇到寫不下去的地方,看看是不是思路出現問題了,如果是沒有思路了,重新捋一遍思路。
這樣可以強迫大家隨時思考代碼,并且細致考慮。
當一切思路都清楚之后,按照思路步驟也寫好注釋了,這時候再寫代碼。如果你只有前面幾步是清楚的,也沒關系,能想清楚什么思路就寫多少代碼。慢慢來...
大多數人都有寫不出代碼的時候,就是緊著會寫,能寫多少寫多少的原則。
如果大家覺得在學習基礎知識點的時候缺乏基礎案例的支撐,可以看黑馬程序員的課程。我們無論什么知識都很注重大家的實踐能力:
多計算機科班的同學都會出現這樣的困惑,有關于寫代碼這個事情,大家很容易進入一個誤區。就是我不能抄一定要自己寫,但是實在不會寫不出來這樣的惡性循環中。
最簡單的方法,就是從扎實的基礎知識開始:
不會寫代碼,那就照著抄,先抄下來再去理解,每一步的邏輯是什么意思,代碼是什么意思。不抄的話就會一直很陌生,學一個忘一個。我們要知道,代碼都是有推導過程的,跟學語言一樣。前期基礎打好了后期就不用背代碼了。
抄這個階段結束之后,嘗試自己寫代碼:
//第一步是要干什么
//第1.1要做什么
//第1.2要做什么
//...
//第二步是要干什么
//第2.1要做什么
//第2.2要做什么
// ...
//以此類推
每一步都要強制自己思考,比如做題的時候,完全不知道該怎么實現,那就先找思路。
學生時代應該養成的代碼習慣:
寫完代碼之后要記得自測一下,哪怕只是很小的改動。一行配置代碼,只要是懂了就自己配置一下。
代碼不要一片一片的,別覺得這個是每個人的風格問題,容易出錯的風格盡量學習初期就避免。
入參效驗是每個程序員都應該必備的基礎素養,是否入參,是否允許為空,入參長度是否符合你的語氣長度,盡量養成習慣。避免未來工作中總是出現低級的代碼問題。
修改完了接口思考接口的兼容性,使用完IO資源流需要關閉。
各位計算機專業的同學,盡量可以在大二確定好自己的興趣所在。提前做好規劃,就可以找到學習重點了。比如未來考研和未來就業的重點肯定不一樣,未來想做前端或者是后端,重點需要學習的內容也不一樣。或者嵌入式、或者人工智能、或算法工程師,總之,就業方向的問題最好可以提前確認。
前端:前端開發也就是用戶端看得到的界面,前端的框架比較多,技術更新比較快。很多計算機專業的女生會選擇前端相關工作。
后端:更多是代碼層面的,不同語言有不同的應用場景,主要是選擇開發語言和技術框架。
數據庫:數據庫也稱為DBA,曾經阿里培養過一批很優秀的DBA主要是維護數據庫,針對數據庫進行設計和開發。
大數據:爬蟲、數據挖掘都被稱為大數據。需要一些后端的技術加上數據庫操作。
嵌入式:對自動化駕駛或者機器人有興趣的同學可以了解下嵌入式開發。
機器學習:這都是人工智能方向的內容。
產品經理:這就比較適合計算機專業但是對代碼一點興趣都沒有的同學了。
寫了這么多代碼,這十個寫出整潔代碼的心得,你或許需要。
原文鏈接:https://aster.cloud/2022/12/15/10-tips-for-writing-clean-code/?continueFlag=09893b9b2b388dcce38f0d0199cd963d
聲明:本文為 CSDN 翻譯,未經允許,禁止轉載。
整潔的代碼是一種編寫代碼的風格,主要以閱讀代碼的人為中心,以這種方式編寫的代碼不僅易于閱讀,維護起來也很方便。掌握如何編寫整潔代碼是軟件開發人員的一項基本技能。通常,編程的基本任務是應用程序能按預期運行,但我們編寫的代碼不僅僅是面向計算機。
編寫整潔的代碼,是要認識到你的受眾不僅僅是計算機,還有真實的人類——牢記這一原則,我們來回顧一下保持代碼整潔的重要性,并深入探討一些技巧和心得,以幫助我們在實踐中編寫出真正整潔的代碼。
整潔代碼指的是清晰、方便理解和維護的代碼。在編寫整潔的代碼時,你需要牢記今后還有其他人會閱讀并維護這段代碼,而你需要幫助他人理解代碼的用途,這樣他們才能進行修改。
遵循代碼整潔之道,可以幫助我們編寫高度模塊化的源代碼,并降低閱讀和測試的難度。將編程與蓋房子做類比,那么整潔代碼就是房子的地基。遵循代碼整潔之道是一項基本技能,在需要重構代碼或測試代碼時,我們就能享受整潔的代碼帶來的優勢。
為了編寫整潔的代碼,我們需要遵循以下三大核心原則:
1. 選擇正確的工具;
2. 優化信噪比;
3. 盡最大努力編寫出不言自明的代碼。
使用命名約定是一個很好的開端,命名約定不僅可以讓代碼清晰有條理,而且還能讓人立即明白代碼的作用。
遵守命名約定意味著,按照特定的規則給變量命名。遵守命名約定很麻煩,而且很多人無法就哪個規則最佳達成一致。所以,我們需要盡量保持簡單,例如在變量名前加上數據類型,如下所示:
int iMyInteger=10;
float fMyFloat=10.5f;
2. 說明變量范圍
遵循命名約定的下一步是說明變量的范圍。同樣,具體的方式沒有統一標準,每個人都有自己的方式,但只要在所有代碼中保持一致,就可以清楚地看出什么地方可以使用哪些變量。
常用的一種約定如下:
// 私有變量和保護變量以下劃線開頭
int _iWindowSize=900;
// 公共變量正常命名
int iWindowSize=900;
/ 常量全部大寫,并以下劃線連接
int I_WINDOW_SIZE=900;
3. 說明變量用途
這一點非常簡單,但也最常見,且最容易被忘記。對于查看代碼的其他開發人員來說,最令人沮喪的事情就是看到一個具有誤導性名稱的變量,或者更糟糕的是,有些變量只用一個字母命名。
下面是一個例子:
int checkNum()
{
if(n < max)
{
return -1;
}else{
return 1;
}
}
通常使用空白都有積極的作用,并且一般沒有任何壞處。有時,比如 JavaScript 這樣的語言,源代碼本身的文件大小很重要,所以你希望文件盡可能小,但空白可能會增加幾千字節。如果條件允許,請在開發過程中保留所有空白,以確保代碼方便閱讀。然后,使用一個小工具來遍歷代碼,刪除所有空白之后再上傳。
在代碼中添加注釋,功德堪比救世主,我們可以通過注釋快速了解某個復雜的函數在做什么,或理解某些操作的順序。此外,除了解釋代碼本身的用途之外,注釋還可以幫助其他人了解代碼試圖解決的問題,這可以幫助他們提出更好的解決方案。
但請記住,注釋過多有時會導致代碼混亂,從而產生不良影響。
編寫涉及復雜技術的代碼并不意味著可讀性必然會降低。將復雜的代碼分開寫成多行,不僅難以閱讀,而且還會增加出錯的概率。不過編程的偉大之處在于,你可以利用整潔、可重用和巧妙的方式表達復雜的命令。
下面是一個糟糕的、不斷重復的代碼示例:
雖然代碼本身看起來沒什么問題,而且可以正常工作,但我們并不清楚它究竟在干什么。你可以添加一些簡單的注釋。
box1.x=10;
box1.y=20;
box2.x=30;
box2.y=20;
box3.x=50;
box3.y=20;
box4.x=70;
box4.y=20;
下面是修改后的整潔的代碼:
boxArray=[box1, box2, box3, box4];
for(int i=0; i < sizeOf(boxArray); i++)
{
boxArray[i].x=10 + i * 20;
boxArray[i].y=20;
}
7. 強大的字母 i
當代碼包含多個首尾相接的循環時,你需要使用不同的迭代變量。至于應該使用什么一直富有爭議,而且答案很主觀,當循環一個接一個地出現時,我們應該在循環外聲明迭代變量,并重用它。這樣,不僅代碼方便閱讀,而且你很清楚字母“i”就是迭代變量,而且它很高效。
下面,我們來看一個例子:
//declare variable initially
int i ;
for(i=0; i<10; i++)
{
//loop stuff
}
for(i=0; i<200; i++)
{
//more loop stuff
}
8. 將所有相似的變量組織到一起
當項目不斷膨脹時,類中的變量也會越來越多。首先,你應該將所有變量的聲明都放到頂部,或者至少應該放在一起,這樣就可以讓瀏覽代碼更容易。
其次,將所有變量的聲明放在一起,然后再按照一種更容易理解的方式排列它們通常會很有幫助。例如,按照某種方式分組。有時,同一個對象可能會有多種類型,我們應該將它們放在一起,然后將無法分類的變量放在一起。
冗長的函數定義很容易導致代碼混亂。我們應該了解一下函數的實際功能。如果某個函數完成的功能超出了函數名包含的意思,就應該將多余的這部分功能拆分出來,編寫一個新的函數。
與函數問題類似,如果大量函數都集中在同一個地方,最好創建一個單獨的類來代替這些函數的功能。
代碼的整潔度是影響代碼編寫、閱讀和維護難度的關鍵因素。以上我們討論的心得不是具體規則,你應該將在這些基礎之上,找到自己的風格和方式。
重要的是,保持代碼整潔、清晰且一致。任何使用代碼的人都會感謝你付出的努力,甚至可以從你的代碼中學習到新知識。