新手陷阱:你在編程時(shí)會(huì)犯的6種錯(cuò)誤
本文轉(zhuǎn)載自公眾號“讀芯術(shù)”(ID:AI_Discovery)。
想要找到編程類工作,首先你需要擁有Git存儲(chǔ)庫,這是招聘者首先要考慮的問題之一。為了擁有一個(gè)看起來不錯(cuò)的存儲(chǔ)庫,你應(yīng)該有定期操作,提供可用項(xiàng)目的實(shí)時(shí)版本,并且只顯示你引以為傲的幾個(gè)項(xiàng)目,而不是編寫過的每一行代碼。
這些是存儲(chǔ)庫維護(hù)的基礎(chǔ)知識(shí),遲早會(huì)有人查看你的代碼,以檢查你是否適合該公司。招聘者會(huì)在幾分鐘內(nèi)決定邀請你參加面試是否值得。這既是好消息,也是壞消息。
壞消息是一個(gè)明顯的錯(cuò)誤會(huì)讓你失去找到工作的機(jī)會(huì);好消息是人們并不想深入研究你的代碼。他們希望對你的代碼和體系結(jié)構(gòu)有一個(gè)大概的了解,你不必聰明絕頂,只要能很好地完成任務(wù)即可。
下面是一些初級開發(fā)人員常犯的錯(cuò)誤。如果能避免犯這些錯(cuò)誤,你將獲得更多的面試機(jī)會(huì)。
過時(shí)的注釋
程序員對注釋的看法不一。我們難以就是否或何時(shí)對代碼進(jìn)行注釋達(dá)成一致,但是大家都贊同一件事:如果你注釋了,它應(yīng)與你的代碼對應(yīng)。
注釋是用來解釋代碼的。當(dāng)你編寫了一些復(fù)雜或不清楚的代碼時(shí),注釋可以幫助讀者理解它們。但要記住,如果你修改了代碼,就要相應(yīng)修改注釋。否則注釋將不會(huì)幫助人理解而是使人產(chǎn)生誤解,沒有比誤導(dǎo)更糟糕的編程錯(cuò)誤了。一個(gè)錯(cuò)誤的注釋比沒有注釋更糟糕。
更糟糕的是,代碼中的注釋非常突出。現(xiàn)代IDE賦予注釋不同于其他代碼的顏色,并且注釋更容易被發(fā)現(xiàn)。添加注釋,代碼中就會(huì)添加“自述”符號。所以,注釋和代碼之間的任何差異都很容易被發(fā)現(xiàn)。明智地選擇你的注釋,記住隨著代碼的更新也要更新它們。
圖源:unsplash
使用相同的用例結(jié)合庫和語言
在我第一次面試之前,我需要先完成一個(gè)招聘任務(wù)。那是一個(gè)簡單的web應(yīng)用程序,所以我編寫了一些代碼,在google上搜索了對于一些更棘手部分的解決辦法,然后就完成了應(yīng)用程序的編寫。
在面試中,招聘者問我為什么在代碼中混用jQuery代碼和純JavaScript代碼,我無從作答。事實(shí)是,我粘貼了一些的代碼片段,沒有多加思考,看到代碼正常運(yùn)作后,我就繼續(xù)下一步任務(wù)了。
這種錯(cuò)誤在初級開發(fā)人員中很常見。我們太專注于解決任務(wù),以至于沒有花時(shí)間去考慮我們正在做的內(nèi)容。不要掉進(jìn)這個(gè)新手陷阱,記得檢查每一行代碼來確保你知道為什么要把它放在那里。
重復(fù)代碼
不要寫重復(fù)的代碼(DRY)是編程的法則。為重復(fù)碼創(chuàng)建抽象機(jī)制是編程的本質(zhì)。但剛開始的時(shí)候,這往往很有挑戰(zhàn)性。你想解決問題,所以盡你所能去做。然后繼續(xù)執(zhí)行其他任務(wù),就會(huì)一直編寫重復(fù)代碼。相信我,你可以做得更好。
盡早養(yǎng)成好習(xí)慣。每當(dāng)你完成一個(gè)功能時(shí),重新閱讀代碼,思考是否有機(jī)會(huì)重構(gòu)某些東西。記住,代碼的第一個(gè)版本是有缺陷的,你需要去改進(jìn)它。
另外,當(dāng)你在處理其他功能時(shí),請花時(shí)間分析重復(fù)代碼。你幾乎發(fā)現(xiàn)總能有重寫它的余地(例如,使用一個(gè)循環(huán)或創(chuàng)建一個(gè)新函數(shù))。如果每次都這樣自我改進(jìn),你會(huì)編寫出更穩(wěn)健、更優(yōu)雅的代碼。
圖源:unsplash
沒有錯(cuò)誤處理
幾乎不可能構(gòu)建任何有意義且總能完美地運(yùn)行的應(yīng)用程序。無論是將數(shù)據(jù)放入數(shù)據(jù)庫還是進(jìn)行API調(diào)用,都會(huì)發(fā)生錯(cuò)誤。未經(jīng)處理的錯(cuò)誤不僅會(huì)阻止單個(gè)函數(shù)的執(zhí)行,甚至?xí)拐麄€(gè)應(yīng)用程序崩潰。
對可能出現(xiàn)的錯(cuò)誤的預(yù)期是一個(gè)稱職程序員的標(biāo)志。只要在訪問或更新一些外部數(shù)據(jù),就必須為最壞的情況做好準(zhǔn)備。處理潛在的錯(cuò)誤可以使你的應(yīng)用程序更強(qiáng)大,同時(shí)也使未來的開發(fā)人員(可能是你自己)快速發(fā)現(xiàn)錯(cuò)誤。這向招聘者展示了你對代碼的整體考慮。
缺乏一致性
一致性是優(yōu)秀軟件的標(biāo)志。它使代碼更易于閱讀和維護(hù)。統(tǒng)一的代碼更容易預(yù)測,也更容易推理,所以你應(yīng)該盡可能地做到這一點(diǎn)。在更高級別的抽象機(jī)制上,一致性很難實(shí)現(xiàn)。掌握它需要很多年,你應(yīng)該盡早開始學(xué)習(xí)。
記住,只用一種語言來命名事物。通常是英語,但在個(gè)人項(xiàng)目中,你可以用任何想要的語言命名變量和函數(shù),只要保證它一直是同一種語言即可。
如果你使用的是制表符或空格都沒關(guān)系,只要保持一致的即可。因?yàn)槭褂民橊劙富蛏甙付际且粯拥?。這兩個(gè)都很棒,但你得選一個(gè)。你需要?jiǎng)?chuàng)建或選擇一個(gè)風(fēng)格指南并一直堅(jiān)持使用下去。你也應(yīng)該使用像Prettier這樣的工具,這是專業(yè)環(huán)境中的一個(gè)標(biāo)準(zhǔn),這使保持一致的代碼格式易于管理。
無論使用什么工具和風(fēng)格,都要讓它們成為你的第二天性。即使是錯(cuò)誤千篇一律的代碼通常也比不一致的正確代碼好,因?yàn)樗菀仔迯?fù)。
缺乏對工具的了解
圖源:unsplash
在典型的項(xiàng)目中,需要相當(dāng)快地使用一些外部庫。許多程序員幾乎自動(dòng)安裝一些庫,因?yàn)樗鼈冊诿總€(gè)項(xiàng)目中都使用。
外部庫之所以很棒,是因?yàn)樗鼈冇眯兄行У姆椒ń鉀Q反復(fù)出現(xiàn)的問題。然而,初級開發(fā)人員通常不了解他們正在使用的庫,最終將一個(gè)庫堆疊在另一個(gè)庫上,或者重新實(shí)現(xiàn)一些現(xiàn)有功能。
對于現(xiàn)代web開發(fā),最常見的誤解可能是在每個(gè)React項(xiàng)目中都使用Redux。盡管Redux有一些用例,但在大多數(shù)小項(xiàng)目中,使用React就足夠了。
每次在項(xiàng)目中安裝庫時(shí),請閱讀或者瀏覽文檔。檢查可以使用的方法和屬性,確保你了解庫可以解決哪些問題,哪些問題需要不同的工具。這樣你就可以為工作選擇合適的工具,并證明你的選擇是正確的。
避開這些新手陷阱,能讓你的面試入選率大幅提升。