2020-06-13
1.編寫人性化的代碼
永遠(yuǎn)記住,你不僅僅是在為機(jī)器寫代碼,也是在為你未來(lái)的自己寫代碼。因此,編寫可讀的代碼是很重要的。事實(shí)上,編程就像寫一首好詩(shī)。語(yǔ)氣要一致,詞語(yǔ)要有描述性,句子要有條理。
下面是一些編寫友好代碼的技巧。
遵循一致的命名約定
例如,如果您使用下劃線作為私有變量的第一個(gè)字母,那么您應(yīng)該在代碼的其余部分中堅(jiān)持下去。
如果您正在協(xié)同工作,請(qǐng)?jiān)谌魏稳私佑|代碼之前討論命名約定。
然而,大多數(shù)編程語(yǔ)言現(xiàn)在可能已經(jīng)有了自己的標(biāo)準(zhǔn)命名約定,要么是由核心語(yǔ)言本身定義,要么是由社區(qū)定義(例如PHP-FIG)。所以,大多數(shù)情況下,您不必創(chuàng)建自己的命名約定。
相反,您可以使用所謂的linter或代碼嗅探器來(lái)幫助執(zhí)行和修復(fù)您的代碼,使之符合這些標(biāo)準(zhǔn)。以下是一些編程語(yǔ)言中常用的索引:
PHP:PHPCS
Ruby:RuboCop
Shell或Bash:ShellCheck
ESLint和JSHint
泰勒:裁縫,還有SwiftLint
描述性變量/方法名
變量和方法名應(yīng)該完美地描述代碼的功能。例如,不常見的縮寫,如Sort_PT()可能會(huì)令人困惑:PT是什么意思?如果您不能在第二次檢查時(shí)回答這個(gè)問題,請(qǐng)將名稱優(yōu)化為Sort_PostType()以便更好地理解。
不過有一個(gè)例外。大多數(shù)程序員已經(jīng)熟悉“ID”這個(gè)術(shù)語(yǔ),所以我們總是可以用簡(jiǎn)短的形式“ID”定義一個(gè)變量。
縮進(jìn)和換行
壓痕是神奇的!使用一些簡(jiǎn)單的選項(xiàng)卡鍵,您可以顯示整個(gè)代碼結(jié)構(gòu)并編輯代碼,同時(shí)清楚地了解代碼的工作方式。
對(duì)于換行,當(dāng)同一行的兩個(gè)代碼執(zhí)行不同的內(nèi)容時(shí)使用它。例如,最好不要將CSS屬性鏈接在一行上——這會(huì)使事情變得復(fù)雜。
2.認(rèn)為組織
除了更簡(jiǎn)潔的代碼之外,代碼結(jié)構(gòu)和組織也有助于解決可訪問性問題。對(duì)代碼進(jìn)行分組以方便修改是很重要的(如果需要多次上下滾動(dòng)以找到受影響的部分,則需要處理結(jié)構(gòu))
另外,不要把所有代碼都放到一個(gè)腳本中。雖然在一個(gè)文件中包含8000多行代碼似乎很方便,但是在試圖回憶方法名時(shí),調(diào)試是一場(chǎng)噩夢(mèng)??偸窍胫淖兊娜菀壮潭?。
最佳實(shí)踐是根據(jù)代碼的主要功能(例如管理器、接口、動(dòng)畫、擴(kuò)展等)將代碼分離到不同的文件中。
只要有可能,確保該語(yǔ)言只滿足特定的目的。如果你正在用CSS3編寫動(dòng)畫效果,除非你有足夠的理由,否則不要編寫jQuery動(dòng)畫效果。如果您這樣做了,請(qǐng)?jiān)贑SS文件中對(duì)異常進(jìn)行注釋。
3.計(jì)劃在編碼之前
在按下第一個(gè)鍵之前,準(zhǔn)確地知道要做什么是至關(guān)重要的。在編程領(lǐng)域,提前計(jì)劃是很重要的。編寫一個(gè)固定的導(dǎo)航菜單很容易,但是如果菜單需要響應(yīng),同時(shí)能夠在訪問者向下滾動(dòng)頁(yè)面時(shí)最小化自己呢?
在頭腦中沒有一個(gè)清晰的過程就開始編寫代碼常常會(huì)導(dǎo)致重試、失敗和蕭條循環(huán)。
計(jì)劃你的代碼
因此,與其用并行方式解決問題和編程,不如先計(jì)算出過程,然后再寫一個(gè)解決方案。首先列出一般步驟(這里是一個(gè)例子):
使用引導(dǎo)作為響應(yīng)框架。
創(chuàng)建導(dǎo)航菜單。
將.navbar-fixed-top添加到菜單中。
當(dāng)用戶向下滾動(dòng)超過200px時(shí),創(chuàng)建jQuery腳本來(lái)調(diào)整菜單大小。
如果用戶滾動(dòng)到頂部,再次調(diào)整菜單的大小。
進(jìn)行故障排除
此時(shí),您應(yīng)該發(fā)現(xiàn)其他潛在的isse,比如如何根據(jù)菜單大小調(diào)整站點(diǎn)徽標(biāo)和菜單標(biāo)題的大小,或者是否需要同時(shí)調(diào)整下拉菜單的大小,或者是否需要?jiǎng)討B(tài)而不是固定的檢測(cè)。一旦你弄明白了這些,完成菜單就是小菜一碟了。
4.編寫管理代碼
相信我,你不會(huì)想一行一行地單獨(dú)改變幾百個(gè)變量。我做到了,連續(xù)一年。這是一次令人謙卑的經(jīng)歷,從那以后,我學(xué)會(huì)了編寫盡可能少的手工更改的代碼。
如何實(shí)現(xiàn)這一點(diǎn)?使用數(shù)組。它非常適合存儲(chǔ)多個(gè)變量,您可以方便地使用for循環(huán)或for每個(gè)方法來(lái)訪問這些變量。
還有更動(dòng)態(tài)的方式來(lái)添加、安排和檢索特定語(yǔ)言的數(shù)據(jù),比如c#的List和LINQ,所以一定要定期查看更好的特性、庫(kù)或插件,以實(shí)現(xiàn)更智能的數(shù)據(jù)管理。
最后,為了避免不斷修改代碼中的內(nèi)容,請(qǐng)編寫高度獨(dú)立的代碼,在應(yīng)用新特性或更改時(shí)不會(huì)破壞整個(gè)系統(tǒng)。這叫做松耦合。優(yōu)化之后,開發(fā)人員只需在一個(gè)類中調(diào)整代碼,而不是在三個(gè)類中調(diào)整新特性。
5.阻止過分的特性
隨著我們技能的成熟,我們傾向于開發(fā)更復(fù)雜的解決方案,以滿足更廣泛的需求。這是一個(gè)良好的增長(zhǎng)跡象,但要小心,因?yàn)槟憧赡軙?huì)步入另一個(gè)陷阱——過度使用一個(gè)對(duì)項(xiàng)目來(lái)說完全不必要的功能。
在開發(fā)過程中,經(jīng)常提醒自己項(xiàng)目的主要目標(biāo)是很重要的,并且只添加實(shí)現(xiàn)目標(biāo)的功能。如果您知道確切的集合大小,請(qǐng)使用Array。如果List的函數(shù)能夠以您想要的方式檢索數(shù)據(jù),那么就不要使用高級(jí)LINQ。
為什么開發(fā)一個(gè)插件,當(dāng)你幾乎不使用的功能?你可以,并不意味著你應(yīng)該。不要浪費(fèi)你的時(shí)間。記住最耗時(shí)的部分,也就是完成項(xiàng)目,是尚未到來(lái)!現(xiàn)在,到調(diào)試!
6.學(xué)習(xí)更聰明地調(diào)試
哪里有代碼,哪里就有bug。不可能有一個(gè)沒有bug的代碼解決方案,所以調(diào)試技能是非常受歡迎的。這種古老的試錯(cuò)法可能有效,但速度很慢。太慢了。另外,既然已經(jīng)為你開發(fā)了調(diào)試器,為什么還要折磨自己呢?
調(diào)試工具
瀏覽器現(xiàn)在配備了非常強(qiáng)大的開發(fā)工具或DevTools(簡(jiǎn)稱為開發(fā)工具),這些工具帶有錯(cuò)誤檢測(cè)、斷點(diǎn)設(shè)置、表達(dá)式跟蹤、性能檢查,所有這些都是為了方便調(diào)試。
像AptanaStudio3和XamarinStudio這樣的ide甚至發(fā)布了它們自己強(qiáng)大的內(nèi)置調(diào)試器,所以投入時(shí)間來(lái)學(xué)習(xí)它們可以使您的生活更加輕松。
但是,調(diào)試器不會(huì)完全了解您的代碼。如果有疑問,可以將log函數(shù)放入代碼中,比如console.logfor,并確保它適合變量集成(而不是將變量名重新輸入為字符串或簡(jiǎn)單地輸入'itworks!')。web上到處都是針對(duì)每種語(yǔ)言的更高級(jí)、更具體的調(diào)試方法。
7.找一個(gè)更強(qiáng)的編輯
正確的編輯可以幫助您增長(zhǎng)知識(shí),并加速項(xiàng)目的完成。無(wú)論您有多少經(jīng)驗(yàn),強(qiáng)烈建議您使用帶有代碼補(bǔ)全功能的編輯器,如SublimeText、VisualStudio代碼和AptanaStudio3。
該特性不僅對(duì)初學(xué)者識(shí)別和學(xué)習(xí)語(yǔ)法非常有幫助,而且還可以被專業(yè)人員用來(lái)檢查可能更好的代碼或解決方案。請(qǐng)注意,大多數(shù)ide只支持特定語(yǔ)言的代碼補(bǔ)全,所以要尋找正確的代碼補(bǔ)全。
功能過濾
例如,我喜歡MonoDevelop的一點(diǎn)是它的代碼模板特性。使用自定義快捷鍵,您可以將自定義的代碼模板從commonswitch語(yǔ)句輸出到成熟的manager腳本。這對(duì)于大型項(xiàng)目非常有用,所以在您尋找編輯器時(shí),請(qǐng)將此功能作為優(yōu)先級(jí)。
其他需要注意的基本特征:
調(diào)試器
正則表達(dá)式替換
宏
版本控制的支持
數(shù)據(jù)庫(kù)支持
將編輯
布局編輯器
所見即所得編輯器
8.做的版本控制
有時(shí)你會(huì)犯一個(gè)巨大的編程錯(cuò)誤,想要回到早期版本的代碼?,F(xiàn)在,如果您的錯(cuò)誤涉及到代碼庫(kù)中的多個(gè)文件,并且其中一些文件在幾天甚至幾個(gè)月前就被修改了,該怎么辦?
恢復(fù)到原來(lái)的狀態(tài),并在解決bug的同時(shí)一點(diǎn)一點(diǎn)地更新代碼?這是適得其反的,為什么版本控制系統(tǒng)是非常重要的。
版本控制系統(tǒng)
在眾多的版本控制軟件中,Git是最受歡迎的,它提供了大量的在線文檔。使用Git,您可以保留盡可能多的修訂版本,將文件分支出去進(jìn)行一些代碼實(shí)驗(yàn),跟蹤上次更改的代碼部分,并在需要時(shí)恢復(fù)到原來(lái)的狀態(tài)。
感覺就像過度?也許,因?yàn)樗畛跏菫閳F(tuán)隊(duì)編程而開發(fā)的,但是它對(duì)于長(zhǎng)期的個(gè)人項(xiàng)目來(lái)說也是完美的。您可能會(huì)猶豫不決,因?yàn)镚it本身就有很多東西需要學(xué)習(xí),即使是GUI版本也是如此。但這是遲早的事(所以你最好讓它更快),加上網(wǎng)絡(luò)上有大量的教程和指南,以幫助簡(jiǎn)化學(xué)習(xí)過程。
9.沒有額外的原型,完成當(dāng)前的項(xiàng)目
冗長(zhǎng)的代碼編寫和調(diào)試會(huì)消耗一個(gè)人的體力和精力。我們中的一些人甚至傾向于在我們的工作完成之前就做出原型。雖然從長(zhǎng)遠(yuǎn)來(lái)看,原型設(shè)計(jì)是一種有益的行為,但是當(dāng)你這樣做是為了逃避工作時(shí),它并沒有幫助你。
更好的放松方式是在新縣網(wǎng)站建設(shè)享受一些與工作完全無(wú)關(guān)的事情,鍛煉,玩游戲,閱讀(也許?)——你必須保持工作生活的平衡。除了原型。
10. 總是學(xué)習(xí)新東西
在這個(gè)領(lǐng)域,你很快就會(huì)被淘汰。許多開發(fā)方法和編程語(yǔ)言甚至在過去10年內(nèi)就被宣布過時(shí)。即使你畢業(yè)于一所頂尖大學(xué),并擁有該學(xué)科的學(xué)位,也不能確保你仍然具備就業(yè)的條件。
生存和發(fā)展的唯一方法就是不斷學(xué)習(xí)。最好的學(xué)習(xí)方法是什么?不要只是閱讀,編程。用需要更高可伸縮性的實(shí)際項(xiàng)目挑戰(zhàn)自己。這迫使你更有效地思考。探索,享受創(chuàng)造的過程。在編程中,實(shí)踐是不可忽視的。你寫的程序越多,你就越能成為一個(gè)好的程序員。
2019-11-23
2019-11-23
2019-11-23
2019-11-23
2019-11-23
2019-11-26
2019-11-26
2019-11-26
2019-11-26
2019-11-26
2019-11-26
2019-11-26
2019-11-26
2019-11-26
手機(jī)官網(wǎng)