自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

資深碼農(nóng)應(yīng)采納的九種好習(xí)慣

譯文
開發(fā) 后端
為了能夠在軟件項(xiàng)目“實(shí)戰(zhàn)”中,編寫出簡潔易讀,且易于維護(hù)的程序代碼,我們將在本文中討論九種值得資深碼農(nóng)采用的良好習(xí)慣。

【51CTO.com快譯】常言道:臺(tái)上一分鐘,臺(tái)下十年功。如果您想在實(shí)際的軟件項(xiàng)目中,能夠得心應(yīng)手地開發(fā)出令客戶滿意、且愿意為之買單的應(yīng)用產(chǎn)品,那么您就有必要通過刻意練習(xí)和反復(fù)實(shí)踐,來養(yǎng)成一些良好的編程習(xí)慣。據(jù)此,您在“實(shí)戰(zhàn)”中,只需投入較少的精力,便可完成簡潔易讀,且易于維護(hù)的程序代碼。下面,我們來一起討論九種值得資深碼農(nóng)采用的編程習(xí)慣吧!

1.編寫友好的代碼

請(qǐng)永遠(yuǎn)記?。耗粌H僅是在為機(jī)器編寫代碼,而且也是在為自己將來的“讀者”編寫代碼。因此,編寫出具有可讀性的代碼是尤為重要的。有人曾經(jīng)把編程比喻成撰寫出一首好詩,我們除了要在格式上應(yīng)保持一致,還應(yīng)當(dāng)讓代碼段在縮進(jìn),以及命名規(guī)則等方面保持井井有條。以下是一些方便您能夠快速領(lǐng)會(huì)的小技巧:

遵循一致性的命名規(guī)則(naming conventions)

如果您使用下劃線作為首字母來命名各種私有變量的話,那么就請(qǐng)您在代碼的其余部分繼續(xù)遵循此類命名規(guī)則。而如果您正在開展的是團(tuán)隊(duì)協(xié)作式編程活動(dòng),則您請(qǐng)?jiān)谧屓魏稳私佑|此類代碼之前,事先討論好這樣的命名規(guī)則。

值得注意的是,大多數(shù)編程語言可能已經(jīng)具備了由其核心語言本身、或是相應(yīng)的社區(qū)所定義的(如:PHP-FIG,請(qǐng)參見-- https://www.php-fig.org/psr/psr-12/)標(biāo)準(zhǔn)化命名規(guī)則。因此,在大多數(shù)情況下,您不必自行創(chuàng)建另一套命名規(guī)則了。

您可以使用所謂的linter或代碼嗅探器(code sniffer)來協(xié)助執(zhí)行代碼的規(guī)范化與修正,以使其更符合業(yè)界的常用標(biāo)準(zhǔn)。以下是在各類編程語言中常見的主流linter:

描述性變量/方法名稱

無論是變量也好,還是方法也罷,它們的名稱都應(yīng)當(dāng)能夠準(zhǔn)確地描述其代碼的用途。例如,Sort_PT()之類不常用的縮寫就很可能會(huì)造成混淆,人們往往不知道PT為何意。因此,為了避免歧義,我們需要將該名稱優(yōu)化為:Sort_PostType(),這樣顯然更容易被理解。

當(dāng)然,這里也有一個(gè)例外。大多數(shù)程序員已經(jīng)對(duì)使用“ID”來代表身份標(biāo)識(shí)比較熟悉了,因此我們完全可以直接使用“ID”的縮寫形式來定義變量。

縮進(jìn)和換行符

縮進(jìn)的神奇之處在于:您只需要使用一些簡單的Tab鍵,便可以展現(xiàn)代碼的整個(gè)結(jié)構(gòu),以便后續(xù)接手人員能夠在清晰地了解其功能,并繼續(xù)進(jìn)行程序代碼的續(xù)寫。

換行符的主要用途是:當(dāng)同一行上的2條代碼執(zhí)行的是不同的操作時(shí),那么我們就可以使用到它了。例如:為了避免復(fù)雜性,請(qǐng)最好不要將不同的CSS屬性鏈接在同一行之中。

2.思考組織結(jié)構(gòu)

除了代碼的整潔性,良好的組織結(jié)構(gòu)也有助于我們解決可讀性的相關(guān)問題。如果我們需要頻繁地上下滾動(dòng)多次,才能找到需要修改的代碼部分的話,那么就有必要通過將代碼分為不同的段與塊,以方便快速定位和按需修改。

此外,請(qǐng)不要將所有的代碼都放置在一個(gè)腳本里。雖然單個(gè)文件原則上可以包含8000行以上的代碼,但是這種“一站式”的組織方式對(duì)于撤回某些頻繁出現(xiàn)的方法名稱來說,完全是一場(chǎng)噩夢(mèng)。畢竟,我們需要把“易于調(diào)整代碼”作為首要考慮的因素之一。

[[325104]]

通常,我們可以借鑒的最佳實(shí)踐是:

  • 根據(jù)代碼的主要功能(例如:管理器、界面、動(dòng)畫、擴(kuò)展名等),將代碼分成不同的文件。
  • 只要有可能,請(qǐng)確保將特定的編程語言用于特定功能目的。例如:除非您有足夠充分的理由,否則請(qǐng)避免編寫jQuery的動(dòng)畫效果,而采用CSS3來編寫動(dòng)畫。而且,就算您使用了jQuery,也請(qǐng)?jiān)贑SS文件中注明此類非常規(guī)的原因。

3.先計(jì)劃后編程

在為手頭的項(xiàng)目敲下第一個(gè)字母之前,您最好已經(jīng)想好了一定的編程思路和計(jì)劃。例如:編寫出一個(gè)固定在頁面上的導(dǎo)航菜單縱然非常容易,但是如果用戶要求在向下滾動(dòng)頁面時(shí),菜單能夠自適應(yīng)地最小化到邊框上的話,那就需要從長計(jì)議了。

可見,為了避免由于盲目動(dòng)手寫代碼而造成的無休止的返工,甚至是“死循環(huán)”,我們需要在如下方面提前規(guī)劃:

事先準(zhǔn)備流程

與其“邊做邊想”式地既要編程又要兼顧解決問題,不如事先設(shè)定好代碼將要解決的問題和達(dá)到的目的,再列出實(shí)現(xiàn)的過程和方案。我們以上面提到的菜單為例,梳理一個(gè)典型的流程:

  1. 使用Bootstrap作為響應(yīng)式的框架(請(qǐng)參見--https://www.hongkiat.com/blog/tag/rwd/)。
  2. 創(chuàng)建導(dǎo)航菜單。
  3. 將.navbar-fixed-top添加到菜單中。
  4. 當(dāng)用戶在頁面上向下滾動(dòng)超過200px時(shí),創(chuàng)建一個(gè)jQuery腳本以調(diào)整菜單的大小。
  5. 如果用戶回滾動(dòng)到頁面頂部時(shí),再次調(diào)整菜單的大小。

答疑解惑

完成流程的梳理之后,您一定會(huì)發(fā)現(xiàn)各種潛在的問題。例如:我們?cè)撊绾胃鶕?jù)菜單的大小,來調(diào)整網(wǎng)站的logo和菜單標(biāo)題的大小呢?是否需要調(diào)整下拉菜單的大小?是否需要?jiǎng)討B(tài)檢測(cè)而不是靜態(tài)檢測(cè)?一旦掃清了這些“雷和坑”,我們就可以擼起袖子,動(dòng)手編寫菜單的相關(guān)代碼了。

4.編寫可控的代碼

您一定不想逐行手動(dòng)修改數(shù)百個(gè)變量吧?我當(dāng)年不但經(jīng)歷過此類悲催的過程,而且持續(xù)了一年。從那時(shí)起,我就發(fā)誓一定要學(xué)會(huì)了編寫出盡少需要手動(dòng)修改的代碼。

那么我們?cè)撊绾螌?shí)現(xiàn)這個(gè)目的呢?答案是:請(qǐng)使用數(shù)組(Array,請(qǐng)參見--https://www.w3schools.com/js/js_arrays.asp)。數(shù)組非常適合于存儲(chǔ)多個(gè)變量,而且我們可以使用便捷的for循環(huán)、或for each的方法,來訪問這些變量。

當(dāng)然,目前也有各種編程語言的動(dòng)態(tài)方法可以實(shí)現(xiàn)對(duì)于數(shù)據(jù)的添加、排列和檢索,其中包括:List(請(qǐng)參見--http://www.dotnetperls.com/list)和LINQ for C#(請(qǐng)參見--http://www.dotnetperls.com/linq)。因此,請(qǐng)您對(duì)各種新的功能函數(shù)、庫或插件保持密切的關(guān)注,以實(shí)現(xiàn)高效的數(shù)據(jù)管理。

此外,為避免反復(fù)修改代碼中的某些內(nèi)容,我們可以編寫一些高度獨(dú)立的代碼。當(dāng)其他代碼段的內(nèi)容被修改或更新時(shí),這些代碼既不會(huì)受到影響,也不會(huì)破壞整個(gè)系統(tǒng)。這就是所謂的松耦合(Loose Coupling,請(qǐng)參見--http://social.msdn.microsoft.com/Forums/en-US/c747f40a-7091-4f59-98b1-c637814d275b/cnet-what-is-the-exact-meaning-of-loose-coupling?forum=netfxbcl)。

5.不要過度開發(fā)

隨著技能的成熟和水平的提高,我們會(huì)逐漸接手開發(fā)一些更為復(fù)雜的軟件產(chǎn)品,以滿足更廣泛的用戶需求。不過值得注意的是,我們要避免陷入另一個(gè)陷阱--過度開發(fā)項(xiàng)目的某個(gè)完全不需要的功能。也就是說,在開發(fā)的過程中,我們應(yīng)定期提醒自己關(guān)注項(xiàng)目的主要目標(biāo),并僅添加那些滿足該目標(biāo)的基本功能。例如:如果您知道集合的確切大小,就請(qǐng)使用數(shù)組類型;如果List的功能函數(shù)能夠按需檢索數(shù)據(jù),就不要使用高級(jí)的LINQ。

套用一句富有哲理的名言:“您可以并不意味著您應(yīng)該”。也就是說,請(qǐng)不要浪費(fèi)時(shí)間去開發(fā)那些在本軟件產(chǎn)品中幾乎用不著的插件或功能。畢竟,您不是在預(yù)研或探索創(chuàng)新階段,您需要交付的是成熟的產(chǎn)品。其中最值得您花時(shí)間去實(shí)現(xiàn)的是項(xiàng)目的主要功能和目標(biāo)。

6.學(xué)習(xí)調(diào)試

正如“有人的地方就有江湖”那樣,有代碼的地方就會(huì)有bug。為了盡量減少代碼中的缺陷,我們應(yīng)當(dāng)不斷學(xué)習(xí)和提高針對(duì)程序的調(diào)試技能,并且需要通過掌握各種既有的調(diào)試工具,來節(jié)約交付的時(shí)間并提高效率。

目前,各種瀏覽器都普遍配備了功能強(qiáng)大的開發(fā)者工具(Developer Tools簡稱為DevTools,請(qǐng)參見--https://developers.google.com/web/tools/chrome-devtools)。它們通常具有錯(cuò)誤檢測(cè)、斷點(diǎn)設(shè)置、表達(dá)式跟蹤、性能檢查等便利的調(diào)試功能。

同時(shí),諸如Aptana Studio 3(請(qǐng)參見--https://developers.google.com/web/tools/chrome-devtools)和Xamarin Studio(請(qǐng)參見--https://visualstudio.microsoft.com/vs/mac/xamarin/)之類的IDE甚至?xí)詭в袕?qiáng)大的內(nèi)置調(diào)試器,方面您隨時(shí)調(diào)用。

當(dāng)然,調(diào)試器不可能做到對(duì)您的代碼完全了解,因此我們也需要將console.log的日志類函數(shù)放入代碼中,以確保它能夠與變量進(jìn)行良好的集成。只要您留心搜索,就能在網(wǎng)上找到針對(duì)不同編程語言的高級(jí)、特定的調(diào)試方法(請(qǐng)參見--https://developer.mozilla.org/en/docs/Debugging_JavaScript)。

7.尋找更強(qiáng)大的編輯器

俗話說:“工欲善其事,必先利其器”。好的程序編輯器不但能幫助我們提高編程的技能,還能加快項(xiàng)目完成的速度。因此,無論您在編程方面有多么的熟練,我都強(qiáng)烈建議您選擇一款具有代碼自動(dòng)完成功能的編輯器,例如:Sublime Text(請(qǐng)參見--https://www.sublimetext.com/3)、Visual Studio Code(請(qǐng)參見--https://code.visualstudio.com/)和Aptana Studio 3。

此類工具不僅能夠幫助初學(xué)者識(shí)別和學(xué)習(xí)編程語言的語法,而且可以向?qū)I(yè)人員提供更好的代碼建議和解決方案。值得注意的是,大多數(shù)IDE僅支持某一部分語言代碼的自動(dòng)完成,因此您需要事先了解它們所支持的開發(fā)語言種類。

例如,我非常喜歡MonoDevelop(請(qǐng)參見--http://monodevelop.com/)的代碼模板功能。通過自定義的快捷鍵,我可以將自定義的代碼模板從通用的switch語句中輸出到成熟的管理器腳本中。該功能對(duì)于大型項(xiàng)目來說十分實(shí)用。此外,您可能還會(huì)用到如下方面的基本功能:

  • 調(diào)試器
  • 正則表達(dá)式替換
  • 版本控制支持
  • 數(shù)據(jù)庫支持
  • 分割編輯
  • 布局定制器
  • 所見即所得(WYSIWYG)編輯器

8.版本控制

有時(shí)候,您會(huì)因?yàn)楫?dāng)前程序的某個(gè)嚴(yán)重錯(cuò)誤,而需要回滾早期版本的代碼。設(shè)想一下:如果該錯(cuò)誤涉及到代碼庫中的多個(gè)文件,而且這些文件是在幾天、甚至幾個(gè)月前被修改過的,我們?cè)撛趺崔k呢?想必,您已經(jīng)意識(shí)到了版本控制系統(tǒng)的重要性。

在業(yè)界常見的版本控制軟件中,當(dāng)屬Git(請(qǐng)參見--http://git-scm.com/)最為流行。它擁有大量的線上資源。通過Git,您可以按需保留各種修訂版本,將文件進(jìn)行“分支(branch)”以用于代碼實(shí)驗(yàn),跟蹤上一次更改過的代碼部分,并能夠按需恢復(fù)原來的版本。

9.總是學(xué)習(xí)新東西

如果您是一名資深碼農(nóng),那么您一定見證了在過去的10年間,許多種開發(fā)方法和編程語言早已被淘汰的歷史。就算是那些從軟件開發(fā)領(lǐng)域的頂尖公司跳槽出來的程序員,也不一定能馬上勝任新的開發(fā)領(lǐng)域和任務(wù)。

既然程序員注定需要緊跟最新的開發(fā)技術(shù),那么學(xué)習(xí)就成為了必要的職業(yè)生存和發(fā)展之道。我在此處所說的學(xué)習(xí),不僅僅是單純的閱讀例程與編程練習(xí),更重要的是通過一些富有挑戰(zhàn)的實(shí)際項(xiàng)目去不斷地實(shí)踐。只有在游泳中學(xué)會(huì)游泳,您才能學(xué)得更扎實(shí),運(yùn)用得更靈活。

原標(biāo)題:10 Programming Habits Developers Should Adopt ,作者:lvaris Falcon 

【51CTO譯稿,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文譯者和出處為51CTO.com】

 

責(zé)任編輯:龐桂玉 來源: 51CTO
相關(guān)推薦

2020-12-17 10:20:27

碼農(nóng)高薪計(jì)算機(jī)

2022-10-08 10:42:20

Linux虛擬機(jī)

2015-03-30 11:21:27

編程編程反思

2011-06-14 17:50:47

SEO

2019-10-18 09:00:00

開發(fā)工具軟件開發(fā)碼農(nóng)

2021-05-29 07:32:14

優(yōu)秀程序員代碼

2011-03-29 12:41:49

編程

2009-01-03 14:34:49

ibmdwPHP

2010-04-08 12:49:00

Unix操作系統(tǒng)

2021-08-17 09:55:50

pandas 8indexPython

2020-11-02 13:03:28

MySQLSQL索引

2024-02-26 08:13:51

MySQLSQL性能

2009-01-03 10:40:41

PHP編程代碼

2017-12-15 20:30:03

開發(fā)碼農(nóng)架構(gòu)師

2022-11-30 14:57:39

產(chǎn)業(yè)互聯(lián)網(wǎng)

2010-09-08 12:55:34

CSS

2020-04-22 10:35:07

編程學(xué)習(xí)技術(shù)

2011-07-15 15:10:37

PHP

2018-07-06 16:26:11

編程語言Python程序性能

2011-07-14 22:04:16

VC++
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)