最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

程序員在翻車(chē)時(shí)的30種常見(jiàn)反應(yīng)

2020-06-01 16:09 作者:圖靈社區(qū)  | 我要投稿

本文列出了程序員在修復(fù) bug 時(shí)可能會(huì)說(shuō)的一些話(huà)或者想法。我敢說(shuō)很多程序員都曾經(jīng)歷過(guò)編程的艱辛,但在事后都會(huì)一笑而過(guò)。

?1. “我不知道該把它刪掉還是該重寫(xiě)”

看著舊代碼,你總有一種想要重寫(xiě)它們的沖動(dòng)。丑陋的邏輯語(yǔ)句和啰嗦的語(yǔ)法極大降低了代碼可讀性!但是,如果代碼跑得好好的,為什么要去修改它們呢?我經(jīng)常會(huì)陷入這樣的兩難境地,而且我相信這也困擾著很多其他程序員。

?2. “我先到 GitHub 上找個(gè)框架”

我想大多數(shù)人都知道 GitHub,這個(gè)網(wǎng)站每天都會(huì)有很多開(kāi)源項(xiàng)目發(fā)布出來(lái)。開(kāi)發(fā)者們加入這個(gè)網(wǎng)站,給已有的項(xiàng)目拉取分支,在 wiki 上討論,或者創(chuàng)建自己的代碼庫(kù)。網(wǎng)站提供了很多很好的插件和模板,可以被用在各種各樣的項(xiàng)目中。

?3. “為什么這個(gè)腳本要用這么多庫(kù)?”

如果你要使用熱門(mén)的編程語(yǔ)言,比如 Java 和 Objective-C,那么項(xiàng)目依賴(lài)庫(kù)的數(shù)量會(huì)變得非常大。在采用一個(gè)需要大量依賴(lài)項(xiàng)的框架時(shí)這一點(diǎn)就變得非常明顯。一些 JavaScript 插件也需要大量的額外文件。有時(shí)候這些雜亂的東西會(huì)讓人厭煩,但至少它們是可以用的!

?4. “網(wǎng)上一定能找到解決方案”

在碰到難題時(shí),我的第一反應(yīng)是上網(wǎng)。很多程序員會(huì)在論壇上問(wèn)問(wèn)題,這些問(wèn)題最終會(huì)得到解答。谷歌非常善于挑選與你的問(wèn)題相關(guān)的關(guān)鍵字,并為你提供這些有用論壇帖子。但可惜的是,有時(shí)候?qū)τ谀硞€(gè)特定的問(wèn)題并沒(méi)有太多的信息。

?5. “這個(gè)功能有沒(méi)有對(duì)應(yīng)的插件?”

為什么要重復(fù)發(fā)明輪子呢?要擴(kuò)展用戶(hù)界面、程序或網(wǎng)站,插件是一種很好的方式。另外,插件還能提供定制化功能。如果找不到相應(yīng)的插件,為什么不自己開(kāi)發(fā)一個(gè)?

?6. “網(wǎng)站沒(méi)問(wèn)題,就怕遇到 IE”

在 IE 中渲染網(wǎng)頁(yè)給我們帶來(lái)了很多考驗(yàn)和磨難,這個(gè)就不用多說(shuō)了。從 IE 5.5 到 IE 9/IE 10,人們一直在為獲得更好的瀏覽器支持而做著艱苦卓絕的斗爭(zhēng)。Web 開(kāi)發(fā)人員可能很擔(dān)心網(wǎng)頁(yè)調(diào)試,因?yàn)樵?IE6 中打開(kāi)一個(gè)網(wǎng)頁(yè)可能就是一場(chǎng)噩夢(mèng)。值得慶幸的是,那些日子正慢慢成為過(guò)去。

?7. “這條邏輯語(yǔ)句的邏輯性不是很強(qiáng)”

if/else 循環(huán)、for 循環(huán)、while 循環(huán)、do 循環(huán),這些都是邏輯語(yǔ)句,除了這些之外還有很多。在閱讀示例代碼時(shí),我會(huì)反復(fù)回想我代碼里的邏輯應(yīng)該怎樣寫(xiě)更好。大量的非運(yùn)算符和比較符號(hào)會(huì)讓你暈頭轉(zhuǎn)向。所以,我會(huì)經(jīng)?;仡^去修改之前寫(xiě)好的邏輯。

?8. “半小時(shí)寫(xiě)的函數(shù),花兩個(gè)小時(shí)調(diào)試”

你一股腦兒寫(xiě)了一個(gè)函數(shù),然后函數(shù)輸出了一個(gè)致命的錯(cuò)誤。為了找到問(wèn)題所在,你不得不把其他代碼刪掉,只留下出問(wèn)題的那幾行代碼。當(dāng)你最終找到問(wèn)題并把它修復(fù),你會(huì)感到筋疲力盡,但同時(shí)也松了一口氣。

?9. “在看了幾篇文章之后,我才意識(shí)到之前的做法是錯(cuò)的”

我通常喜歡用自己的方式做事,但如果事情沒(méi)有按照原計(jì)劃進(jìn)行,可能就會(huì)有麻煩。有好多次,我開(kāi)始一個(gè)項(xiàng)目遇到了麻煩,然后開(kāi)始在網(wǎng)上搜博客尋找解決方案。最后我發(fā)現(xiàn)我的方法是錯(cuò)誤的,重新開(kāi)始也許會(huì)更容易些!所以,在一開(kāi)始先做一些調(diào)研,從長(zhǎng)遠(yuǎn)來(lái)看肯定會(huì)節(jié)省時(shí)間。

?10. “StackOverflow 上好人多,他們會(huì)幫我的”

我已經(jīng)記不清有多少次是通過(guò) StackOverflow 解決難題的。這個(gè)社區(qū)有很多有才又友好的人,如果你愿意尋求幫助,他們就會(huì)幫助你。在所有的在線(xiàn)社區(qū)中,StackOverflow 無(wú)疑是能夠提供最廣泛支持的地方。

?11. “少了右括號(hào),麻煩一大堆”

調(diào)試代碼就是跳來(lái)跳去,向前兩步,后退一步,再向前兩步,如此往復(fù)。花上幾個(gè)小時(shí)盯著代碼看,查找函數(shù)名或變量作用域中的錯(cuò)誤,最后卻發(fā)現(xiàn)少了右括號(hào),那種感覺(jué)很怪異。所有的時(shí)間都浪費(fèi)在了一個(gè)很小的語(yǔ)法錯(cuò)誤上,感覺(jué)自己真是個(gè)天才,也是個(gè)傻瓜。

?12. “休息一下”

有時(shí)候你需要站起來(lái),離開(kāi)顯示器一會(huì)兒。在敲了幾個(gè)小時(shí)的鍵盤(pán)之后,休息一會(huì)兒肯定有助于你思考。大多數(shù)的健康指南建議每 30 到 60 分鐘休息一次,但這完全取決于你的需要。如果總是在半途中斷,你可能也會(huì)感到惱怒。

?13. “手頭的項(xiàng)目先停下,稍后再繼續(xù)”

除了離開(kāi)電腦,這是另一種休息方式?;蛟S你還有其它工作可以做,那就去做吧。這是一種更好的分配時(shí)間和資源的方式,特別是如果你已經(jīng)花了 5 個(gè)小時(shí)還解決不了一個(gè)問(wèn)題的時(shí)候。

?14. “有沒(méi)有能夠激發(fā)我編程能力的古典音樂(lè)?”

有一種觀(guān)點(diǎn)認(rèn)為,在植物生長(zhǎng)的初期,播放古典音樂(lè)有助于植物的生長(zhǎng)。我個(gè)人很喜歡古典音樂(lè)復(fù)雜的音符和音樂(lè)理論。爵士樂(lè)、鋼琴、大樂(lè)隊(duì),古典音樂(lè)在人類(lèi)文化中都占有一席之地。那么,在編程時(shí)聽(tīng)音樂(lè)真的能讓你在調(diào)試代碼時(shí)變得更聰明嗎?可能不會(huì),但希望它也不會(huì)讓你變得更笨。

?15. “或許現(xiàn)在是檢驗(yàn)鮑爾默巔峰理論的好時(shí)機(jī)”

我想很多讀者都知道鮑爾默巔峰理論:

https://xkcd.com/323/

該理論認(rèn)為,程序員在攝入一定數(shù)量的酒精后,其編碼能力將達(dá)到巔峰。這是由史蒂夫·鮑爾默的古怪行為引起的,它可能只是一個(gè)酒鬼的胡言亂語(yǔ)。不過(guò)這有點(diǎn)諷刺,因?yàn)轷U爾默在微軟并不是一名程序員。我想我們得等別人來(lái)試驗(yàn)一下這個(gè)理論。

?16. “誰(shuí)動(dòng)了我的代碼?”

這聽(tīng)起來(lái)就像是一種妄想癥,但有時(shí)你不得不懷疑,正當(dāng)你忙著補(bǔ)覺(jué)時(shí),是誰(shuí)在寫(xiě)了這些代碼。過(guò)去幾周或幾個(gè)月忙的項(xiàng)目讓你感到沮喪。有時(shí)候你會(huì)不記得自己往代碼庫(kù)里添加過(guò)東西——甚至是上周剛剛查看過(guò)的項(xiàng)目!

?17. “我不知道這是什么意思”

最糟糕的情況是,你一邊閱讀源代碼,一邊不知道該做點(diǎn)什么??赡苁悄阕约旱捻?xiàng)目,也可能是其他人的項(xiàng)目,但問(wèn)題是一樣的?,F(xiàn)在,你必須決定是花更多的時(shí)間查找替代方案,還是花時(shí)間分析腳本,把它看懂。

?18. “我要在谷歌上搜一下這個(gè)錯(cuò)誤消息”

在做了多年 PHP 開(kāi)發(fā)之后,我不得不說(shuō)谷歌是我的好朋友。如果你使用的是其它編程語(yǔ)言,比如 Objective-C、C++、Java、Python 等,應(yīng)該也會(huì)有同樣的體會(huì)。錯(cuò)誤消息試圖為我們提供幫助,但除非你已經(jīng)記住了各種錯(cuò)誤代碼的含義,否則它們看起來(lái)更像是經(jīng)過(guò)翻譯的計(jì)算機(jī)語(yǔ)言。值得慶幸的是,網(wǎng)上有很多內(nèi)容可以幫助我們確定這些錯(cuò)誤消息到底是什么意思。

?19. “今天應(yīng)該到此為止,但我真的很想解決這個(gè)問(wèn)題!”

我們都知道,當(dāng)你想要放棄一件事情,會(huì)有一種挫敗感,同時(shí)又覺(jué)得放棄并不是正確的選擇。你希望繼續(xù)前進(jìn),并嘗試新的解決方案。但如果你發(fā)現(xiàn)你又因此浪費(fèi)了一個(gè)小時(shí)呢?我經(jīng)常遇到這種情況,這讓人感到非常沮喪。

?20. “天哪,我為什么沒(méi)寫(xiě)注釋?zhuān)俊?/p>

在寫(xiě)前端 HTML/CSS/JS 代碼時(shí),并不總是需要寫(xiě)注釋。但對(duì)于復(fù)雜一些的腳本和程序,就需要某種類(lèi)型的注釋?zhuān)员隳阍趲讉€(gè)月后甚至幾年后回過(guò)頭來(lái)查看。有時(shí)候你會(huì)忘記給函數(shù)及其參數(shù)、輸出格式和其他基本數(shù)據(jù)添加注釋。當(dāng)出現(xiàn)錯(cuò)誤時(shí),你需要調(diào)試整個(gè)腳本才能找到解決方案時(shí),這無(wú)疑會(huì)給你添亂。這個(gè)時(shí)候你就會(huì)想,如果當(dāng)初加一些有用的注釋就好了。

?21. “剛才它還能運(yùn)行……”

開(kāi)發(fā)程序最令人感到沮喪的,可能是什么都沒(méi)做——既沒(méi)有更新,也沒(méi)有修改代碼——程序卻突然不能正常運(yùn)行了。我發(fā)誓,這種事請(qǐng)經(jīng)常發(fā)生。也許是因?yàn)槠渌绦蛘谶\(yùn)行舊的版本?有時(shí)候,更新一小段代碼就會(huì)導(dǎo)致整個(gè)程序崩潰,然后只能恢復(fù)到最近的可運(yùn)行版本,并從那里接著往下開(kāi)發(fā)。

?22. “就因?yàn)橥浖觽€(gè)分號(hào),整個(gè)程序都崩潰了”

我用過(guò)的每一種編程語(yǔ)言幾乎都需要行終止符,當(dāng)然并不是所有的都需要,但 C/C++ 族編程語(yǔ)言通常是這樣的。如果你忘記添加結(jié)束分號(hào),只是一個(gè)無(wú)心的錯(cuò)誤,但解析器不理解這一點(diǎn),它會(huì)無(wú)情地拋出一個(gè)致命錯(cuò)誤。然后,你必須再花 20 分鐘來(lái)查看代碼,最后你發(fā)現(xiàn)缺少了一個(gè)分號(hào)。也許這就是調(diào)試的“樂(lè)趣”。

?23. “我想知道如果請(qǐng)人來(lái)修復(fù)我犯下的錯(cuò)誤要花多少錢(qián)?”

聘請(qǐng)其他開(kāi)發(fā)者來(lái)修復(fù)問(wèn)題,這種想法很誘人,但顯然財(cái)務(wù)上不允許。另外,如果你不親自動(dòng)手,怎么能從這些錯(cuò)誤中吸取到教訓(xùn)呢?在經(jīng)歷了多次失敗之后,當(dāng)你最終對(duì)一個(gè)編程概念有了透徹的理解,你才會(huì)感覺(jué)良好,但這并不能阻止我的腦子里出現(xiàn)想要聘請(qǐng)更多人的想法。

?24. “快速瀏覽一下 Hacker News 肯定能提高工作效率”

很多程序員喜歡在 Hacker News 上了解與軟件及初創(chuàng)公司相關(guān)的社會(huì)新聞。這個(gè)網(wǎng)站上有很多關(guān)于自由職業(yè)、時(shí)間管理、軟件開(kāi)發(fā)、新公司啟動(dòng)和融資的信息。雖然瀏覽這個(gè)網(wǎng)站會(huì)給你帶來(lái)高效的感覺(jué),但它也在消耗你的時(shí)間。每隔幾個(gè)小時(shí)休息一下,趁這個(gè)時(shí)候去看看新聞或許會(huì)更好。

?25. “這個(gè) API 怎么能沒(méi)有文檔!”

如果你使用的插件或框架沒(méi)有文檔,那么最令人感到沮喪的是你必須自己深入查看它們的源代碼。我喜歡那些開(kāi)發(fā)人員會(huì)花時(shí)間專(zhuān)門(mén)設(shè)計(jì)文檔的項(xiàng)目。文檔解釋了所有可用的參數(shù)和選項(xiàng),甚至可能還會(huì)提供一些示例代碼片段。但遺憾的是,并不是所有的項(xiàng)目都會(huì)這樣。最簡(jiǎn)單的方法就是遠(yuǎn)離那些沒(méi)有詳細(xì)文檔的項(xiàng)目,這樣你就不會(huì)那么痛苦了。

?26. “我多么希望給數(shù)據(jù)庫(kù)做過(guò)備份……”

在開(kāi)發(fā)和調(diào)試代碼時(shí),我并不總是會(huì)想到給數(shù)據(jù)庫(kù)做備份。但是,數(shù)據(jù)備份提供了一個(gè)保障,在做出某些變更之前可以及時(shí)回退。記住,請(qǐng)?jiān)诒镜乇A艟W(wǎng)站項(xiàng)目文件和數(shù)據(jù)庫(kù)的副本,以備不時(shí)之需!這可能是一項(xiàng)煩人的任務(wù),但絕對(duì)沒(méi)有重建被損壞的 SQL 數(shù)據(jù)庫(kù)那么煩人。

?27. “要解決這個(gè)問(wèn)題,最快的方案是什么?”

在經(jīng)過(guò)了幾個(gè)小時(shí)毫無(wú)頭緒的工作之后,很明顯,你可能需要嘗試一種新的方法。在設(shè)計(jì)接口之前,程序員希望先讓功能正常運(yùn)行起來(lái)。確定最快速、最準(zhǔn)確的解決方案,并保證 100% 的時(shí)間都可以正常運(yùn)行,然后繼續(xù)做那些錦上添花的東西。

?28. “我打賭,更新新版本就可以解決這個(gè)問(wèn)題”

負(fù)責(zé)管理編程語(yǔ)言依賴(lài)項(xiàng)和插件的團(tuán)隊(duì)不需要經(jīng)常發(fā)布新版本。有時(shí)候,更新 PHP/Ruby/Python/SQL 版本就可以解決將文件從本地傳輸?shù)椒?wù)器時(shí)的調(diào)試問(wèn)題。本地更新很少有助于修復(fù)源代碼中的 bug,除非你的版本已經(jīng)過(guò)時(shí)。值得一試!

?29. “我應(yīng)該學(xué)習(xí) Git……但我想從下周開(kāi)始”

版本控制系統(tǒng) Git 在程序員中非常流行,它的學(xué)習(xí)曲線(xiàn)比其他競(jìng)爭(zhēng)對(duì)手要容易些,被用于管理很多在線(xiàn)代碼倉(cāng)庫(kù),比如 Github 和 Bitbucket。開(kāi)發(fā)人員之所以想要延后學(xué)習(xí),是因?yàn)閷?duì)于初學(xué)者來(lái)說(shuō),它的入門(mén)曲線(xiàn)非常陡峭。但是,一旦理解了它的基本命令,Git 就變得非常簡(jiǎn)單了。

?30. “扔掉這個(gè),我要從頭開(kāi)始”

有時(shí)候,在花了幾個(gè)小時(shí)嘗試某個(gè)解決方案之后,你會(huì)將工作文件移動(dòng)到存檔目錄(或刪除它們),然后從頭開(kāi)始。之前幾個(gè)小時(shí)的辛苦工作幾乎沒(méi)得到有什么回報(bào),所以做出這個(gè)決定是很艱難的。但當(dāng)我陷入困境時(shí),重新開(kāi)始往往正是完成一個(gè)項(xiàng)目所需要做的事情。


?延伸閱讀
https://www.hongkiat.com/blog/things-programmers-say/




程序員在翻車(chē)時(shí)的30種常見(jiàn)反應(yīng)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新沂市| 沙河市| 屯留县| 普兰店市| 奇台县| 霍邱县| 莒南县| 拉萨市| 武城县| 色达县| 温宿县| 晋州市| 岳普湖县| 湘西| 滦平县| 霍州市| 武鸣县| 陆川县| 揭西县| 淮阳县| 许昌市| 光泽县| 克什克腾旗| 长海县| 高阳县| 隆德县| 周至县| 蒙山县| 濮阳市| 通化市| 辽阳县| 阿拉善左旗| 文登市| 晋州市| 图木舒克市| 民乐县| 晋宁县| 旬邑县| 资溪县| 明星| 西充县|