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