當(dāng)前位置:首頁 > 公眾號精選 > 玩轉(zhuǎn)嵌入式
[導(dǎo)讀]開發(fā)工作充滿了挑戰(zhàn)性。人無完人,對于程序員來說,寫出有 bug 的代碼是在所難免的。有些人很淡定,也有一些人會(huì)感到生氣、沮喪、不安或氣餒。 在修復(fù) bug 的過程中我們都經(jīng)歷了什么?來和大雄一起找找共鳴,看看大家是不是都經(jīng)歷過這種掙扎……

開發(fā)工作充滿了挑戰(zhàn)性。人無完人,對于程序員來說,寫出有 bug 的代碼是在所難免的。

有些人很淡定,也有一些人會(huì)感到生氣、沮喪、不安或氣餒。

在修復(fù) bug 的過程中我們都經(jīng)歷了什么?來和大雄一起找找共鳴,看看大家是不是都經(jīng)歷過這種掙扎:
1
“我不知道該把它刪掉還是該重寫”

看著舊代碼,總有一種想要重寫它們的沖動(dòng)。

丑陋的邏輯語句和啰嗦的語法極大降低了代碼可讀性!

但是,如果代碼跑得好好的,為什么要去修改它們呢?

我們經(jīng)常會(huì)陷入這樣的兩難境地,而且我相信這也困擾著很多其他程序員。

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

我想大多數(shù)人都知道 GitHub,這個(gè)網(wǎng)站每天都會(huì)有很多開源項(xiàng)目發(fā)布出來。


開發(fā)者們加入這個(gè)網(wǎng)站,給已有的項(xiàng)目拉取分支,在 wiki 上討論,或者創(chuàng)建自己的代碼庫。

網(wǎng)站提供了很多很好的插件和模板,可以被用在各種各樣的項(xiàng)目中。

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

如果要使用熱門的編程語言,比如 Java 和 Objective-C,那么項(xiàng)目依賴庫的數(shù)量會(huì)變得非常大。

在采用一個(gè)需要大量依賴項(xiàng)的框架時(shí)這一點(diǎn)就變得非常明顯。

一些 JavaScript 插件也需要大量的額外文件。有時(shí)候這些雜亂的東西會(huì)讓人厭煩,但至少它們是可以用的!

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

在碰到難題時(shí),我的第一反應(yīng)是上網(wǎng)。

很多程序員會(huì)在論壇上問問題,這些問題最終會(huì)得到解答。

谷歌非常善于挑選與你的問題相關(guān)的關(guān)鍵字,并為你提供這些有用論壇帖子。

但可惜的是,有時(shí)候?qū)τ谀硞€(gè)具體的特定的問題并沒有太多的信息。

5
“這個(gè)功能有沒有對應(yīng)的插件?”

為什么要重復(fù)發(fā)明輪子呢?

要擴(kuò)展用戶界面、程序或網(wǎng)站,插件是一種很好的方式。

另外,插件還能提供定制化功能。

如果找不到相應(yīng)的插件,為什么不自己開發(fā)一個(gè)?(因?yàn)椴税。?/span>

6
“網(wǎng)站沒問題,就怕遇到 IE”

在 IE 中渲染網(wǎng)頁給我們帶來了很多考驗(yàn)和磨難,這個(gè)就不用多說了。

從 IE 5.5 到 IE 9/IE 10,人們一直在為獲得更好的瀏覽器支持而做著艱苦卓絕的斗爭。

Web 開發(fā)人員可能很擔(dān)心網(wǎng)頁調(diào)試,因?yàn)樵?/span>?IE6?中打開一個(gè)網(wǎng)頁可能就是一場噩夢。

值得慶幸的是,那些日子正慢慢成為過去。(只要?jiǎng)e拿IE,我們都是朋友)

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

if/else 循環(huán)、for 循環(huán)、while 循環(huán)、do 循環(huán),這些都是邏輯語句,除了這些之外還有很多。

在閱讀示例代碼時(shí),會(huì)反復(fù)回想代碼里的邏輯應(yīng)該怎樣寫更好。

大量的非運(yùn)算符和比較符號會(huì)讓人暈頭轉(zhuǎn)向。

所以,會(huì)經(jīng)常回頭去修改之前寫好的邏輯。

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

一股腦兒寫了一個(gè)函數(shù),然后函數(shù)輸出了一個(gè)致命的錯(cuò)誤。

為了找到問題所在,就不得不把其他代碼刪掉,只留下出問題的那幾行代碼。

(找bug猶如此圖)

當(dāng)最終找到問題并把它修復(fù),會(huì)感到筋疲力盡,但同時(shí)也松了一口氣。

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

大家通常喜歡用自己的方式做事,但如果事情沒有按照原計(jì)劃進(jìn)行,可能就會(huì)有麻煩。

有好多次,開始一個(gè)項(xiàng)目遇到了麻煩,然后開始在網(wǎng)上搜博客尋找解決方案。

最后發(fā)現(xiàn)原來方法是錯(cuò)誤的,重新開始也許會(huì)更容易些!

所以,在一開始先做一些調(diào)研,從長遠(yuǎn)來看肯定會(huì)節(jié)省時(shí)間。

10
?“少了右括號,麻煩一大堆”

調(diào)試代碼就是跳來跳去,向前兩步,后退一步,再向前兩步,如此往復(fù)。

花上幾個(gè)小時(shí)盯著代碼看,查找函數(shù)名或變量作用域中的錯(cuò)誤,最后卻發(fā)現(xiàn)少了右括號,那種感覺很怪異。

所有的時(shí)間都浪費(fèi)在了一個(gè)很小的語法錯(cuò)誤上,感覺自己蠢得冒氣。

11
“休息一下”

有時(shí)候需要站起來,離開顯示器一會(huì)兒。

在敲了幾個(gè)小時(shí)的鍵盤之后,休息一會(huì)兒肯定有助于思考。


大多數(shù)的健康指南建議每 30 到 60 分鐘休息一次,但這完全取決于自己的需要。

如果總是在半途中斷,也可能感覺很煩。(番茄鐘我就完全用不了......)

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

除了離開電腦,這是另一種休息方式。

或許還有其它工作可以做,那就去做吧。

這是一種更好的分配時(shí)間和資源的方式,特別是如果已經(jīng)花了 5 個(gè)小時(shí)還解決不了一個(gè)問題的時(shí)候。

13
“有沒有能夠激發(fā)我編程能力的古典音樂?”

有一種觀點(diǎn)認(rèn)為,在植物生長的初期,播放古典音樂有助于植物的生長。

個(gè)人很喜歡古典音樂復(fù)雜的音符和音樂理論。

爵士樂、鋼琴、大樂隊(duì),古典音樂在人類文化中都占有一席之地。

那么,在編程時(shí)聽音樂真的能讓你在調(diào)試代碼時(shí)變得更聰明嗎?


可能不會(huì),但希望它也不會(huì)讓你變得更笨。

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

我想很多人都知道鮑爾默巔峰理論:該理論認(rèn)為,程序員在攝入一定數(shù)量的酒精后,其編碼能力將達(dá)到巔峰。

這是由史蒂夫·鮑爾默的古怪行為引起的,感覺可能只是一個(gè)酒鬼的胡言亂語。

不過這有點(diǎn)諷刺,因?yàn)轷U爾默在微軟并不是一名程序員。注意上班時(shí)間不要試哈~

15
“誰動(dòng)了我的代碼?”

這聽起來就像是一種妄想癥,但有時(shí)不得不懷疑,是不是睡覺的時(shí)候,誰寫了這些代碼。

過去幾周或幾個(gè)月忙的項(xiàng)目非??菰?。

有時(shí)候會(huì)不記得自己往代碼庫里添加過東西——甚至是上周剛剛查看過的項(xiàng)目!


16
“我不知道這是什么意思”

最糟糕的情況是,你一邊閱讀源代碼,一邊不知道該做點(diǎn)什么。

可能是你自己的項(xiàng)目,也可能是其他人的項(xiàng)目,但問題是一樣的。

現(xiàn)在,必須決定是花更多的時(shí)間查找替代方案,還是花時(shí)間分析腳本。

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

不得不說谷歌真是好朋友。

不管你使用的是什么編程語言,比如 Objective-C、C++、Java、Python 等,都會(huì)有同樣的體會(huì)。

錯(cuò)誤消息試圖為我們提供幫助,但除非已經(jīng)記住了各種錯(cuò)誤代碼的含義,否則它們看起來更像是經(jīng)過翻譯的計(jì)算機(jī)語言。

但只要谷歌一下就有很多內(nèi)容可以幫助我們確定這些錯(cuò)誤消息到底是什么意思。

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

我們都知道,當(dāng)想要放棄一件事情,會(huì)有一種挫敗感,同時(shí)又覺得放棄并不是正確的選擇。

你希望繼續(xù)前進(jìn),并嘗試新的解決方案。

但如果你發(fā)現(xiàn)你又因此浪費(fèi)了一個(gè)小時(shí)呢?我經(jīng)常遇到這種情況,這讓人感到很難受。


19
“天哪,我為什么沒寫注釋?”

在寫前端 HTML/CSS/JS 代碼時(shí),并不總是需要寫注釋。

但對于復(fù)雜一些的腳本和程序,就需要某種類型的注釋,以便你在幾個(gè)月后甚至幾年后回過頭來查看。

有時(shí)候你會(huì)忘記給函數(shù)及其參數(shù)、輸出格式和其他基本數(shù)據(jù)添加注釋。

當(dāng)出現(xiàn)錯(cuò)誤時(shí),你需要調(diào)試整個(gè)腳本才能找到解決方案時(shí),這無疑會(huì)給你添亂。

這個(gè)時(shí)候你就會(huì)想,如果當(dāng)初加一些有用的注釋就好了。

20
“剛才它還能運(yùn)行……”

開發(fā)程序最令人感到沮喪的,可能是什么都沒做——既沒有更新,也沒有修改代碼——程序卻突然不能正常運(yùn)行了。

這種事真的經(jīng)常發(fā)生。

也許是因?yàn)槠渌绦蛘谶\(yùn)行舊的版本?誰知道呢

有時(shí)候,更新一小段代碼就會(huì)導(dǎo)致整個(gè)程序崩潰,然后只能恢復(fù)到最近的可運(yùn)行版本,并從那里接著往下開發(fā)。


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

我用過的每一種編程語言幾乎都需要行終止符,當(dāng)然并不是所有的都需要,但 C/C++ 族編程語言通常是這樣的。

如果忘記添加結(jié)束分號,只是一個(gè)無心的錯(cuò)誤,但解析器不理解這一點(diǎn),它會(huì)無情地拋出一個(gè)致命錯(cuò)誤。

然后,你必須再花 20 分鐘來查看代碼,最后你發(fā)現(xiàn)缺少了一個(gè)分號。也許這就是調(diào)試的“樂趣”。(感覺我在被代碼調(diào)試.....)

22
“我想知道如果請人來修復(fù)我犯下的錯(cuò)誤要花多少錢?”

聘請其他開發(fā)者來修復(fù)問題,這種想法很誘人,但顯然財(cái)務(wù)上不允許。

另外,如果你不親自動(dòng)手,怎么能從這些錯(cuò)誤中吸取到教訓(xùn)呢?


在經(jīng)歷了多次失敗之后,當(dāng)你最終對一個(gè)編程概念有了透徹的理解,你才會(huì)感覺良好,能招人還是招

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

很多程序員喜歡在 Hacker News 上了解與軟件及初創(chuàng)公司相關(guān)的社會(huì)新聞。

這個(gè)網(wǎng)站上有很多關(guān)于自由職業(yè)、時(shí)間管理、軟件開發(fā)、新公司啟動(dòng)和融資的信息。

雖然瀏覽這個(gè)網(wǎng)站會(huì)給你帶來高效的感覺,但它也在消耗你的時(shí)間。

每隔幾個(gè)小時(shí)休息一下,趁這個(gè)時(shí)候去看看新聞或許會(huì)更好。

24
25. “這個(gè) API 怎么能沒有文檔!”

如果你使用的插件或框架沒有文檔,那么最令人感到沮喪的是你必須自己深入查看它們的源代碼。

個(gè)人偏愛那些開發(fā)人員會(huì)花時(shí)間專門設(shè)計(jì)文檔的項(xiàng)目。(文檔非常重要?。。?/span>

文檔解釋了所有可用的參數(shù)和選項(xiàng),甚至可能還會(huì)提供一些示例代碼片段。但遺憾的是,并不是所有的項(xiàng)目都會(huì)這樣。

最簡單的方法就是遠(yuǎn)離那些沒有詳細(xì)文檔的項(xiàng)目,這樣你就不會(huì)那么痛苦了。


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

在開發(fā)和調(diào)試代碼時(shí),我并不總是會(huì)想到給數(shù)據(jù)庫做備份。

但是,數(shù)據(jù)備份提供了一個(gè)保障,在做出某些變更之前可以及時(shí)回退。

記住,請?jiān)?/span>本地保留網(wǎng)站項(xiàng)目文件和數(shù)據(jù)庫的副本,以備不時(shí)之需!

這可能是一項(xiàng)煩人的任務(wù),但絕對沒有重建被損壞的 SQL 數(shù)據(jù)庫那么煩人。

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

在經(jīng)過了幾個(gè)小時(shí)毫無頭緒的工作之后,很明顯,你可能需要嘗試一種新的方法。

在設(shè)計(jì)接口之前,程序員希望先讓功能正常運(yùn)行起來。

確定最快速、最準(zhǔn)確的解決方案,并保證 100% 的時(shí)間都可以正常運(yùn)行,然后繼續(xù)做那些錦上添花的東西。

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

負(fù)責(zé)管理編程語言依賴項(xiàng)和插件的團(tuán)隊(duì)不需要經(jīng)常發(fā)布新版本。

有時(shí)候,更新 PHP/Ruby/Python/SQL 版本就可以解決將文件從本地傳輸?shù)椒?wù)器時(shí)的調(diào)試問題。

本地更新很少有助于修復(fù)源代碼中的 bug,除非你的版本已經(jīng)過時(shí)。值得一試!

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

版本控制系統(tǒng) Git 在程序員中非常流行,它的學(xué)習(xí)曲線比其他競爭對手要容易些,被用于管理很多在線代碼倉庫,比如 Github 和 Bitbucket。

開發(fā)人員之所以想要延后學(xué)習(xí),是因?yàn)閷τ诔鯇W(xué)者來說,它的入門曲線非常陡峭。

但是,一旦理解了它的基本命令,Git 就變得非常簡單了。
?
29
30. “扔掉這個(gè),我要從頭開始”

有時(shí)候,在花了幾個(gè)小時(shí)嘗試某個(gè)解決方案之后,你會(huì)將工作文件移動(dòng)到存檔目錄(或刪除它們),然后從頭開始。

之前幾個(gè)小時(shí)的辛苦工作幾乎沒得到有什么回報(bào),所以做出這個(gè)決定是很艱難的。

但當(dāng)我陷入困境時(shí),重新開始往往正是完成一個(gè)項(xiàng)目所需要做的事情。



免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺(tái)僅提供信息存儲(chǔ)服務(wù)。文章僅代表作者個(gè)人觀點(diǎn),不代表本平臺(tái)立場,如有問題,請聯(lián)系我們,謝謝!

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運(yùn)營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉