精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

代碼中藏幾個bug,讓自己無法替代?

嵌入式情報局 ? 來源:最后一個bug ? 2023-06-07 10:34 ? 次閱讀

正文

在進行嵌入式軟件開發過程中,產生一些bug是難免的,工作年限比較長的朋友應該都會有這樣的感受:"有一定規模的軟件工程幾乎不可能沒有bug",軟件邏輯不可能那么天衣無縫,軟件測試也不會百密沒有一疏,代碼和bug就是一個此消彼長、相互依賴的過程。

經常聽一些朋友說道:"你寫的代碼沒有bug,那你離丟飯碗不遠了",又或者代碼中故意保留一些bug來增強自己在團隊中的存在感,這樣就變得無可替代了,怎么說呢,雖然這些觀點有些不道德,但也從側面透露出打工人的辛酸與無奈。

據觀察,大部分的工程師都是“七分寫,三分調”,當然有些人該反駁了,"我怎么感覺是三分寫,七分調嗎?",如果你是這樣的狀態去編寫和調試你的代碼,我至少會認為你不專業或者編碼能力不夠,思維邏輯能力不行~ 一個經驗老道的軟件工程師調試代碼的時間都是非常短的,甚至可以一把搞定。

這樣看來對于一般工程師們,調試所占據的比例還是比較高的,當然調試過程并不一定全是解決bug,特別是在嵌入式領域,一方面要適配硬件平臺,甚至還要協助硬件排查硬件相關的問題;另一方面才是前期編碼所導致的一些程序bug。

然而調試結束后,與bug之間的斗爭遠遠沒有結束,當把第一個版本提交給測試,就意味著后面會有N個版本,測試過程中、用戶使用中、增加新需求時、修護原有bug時等等都可能引入新的bug。

所以bug基本上伴隨著你整個產品的迭代過程,這或許也是你作為一個程序員存在的理由。

這樣看來,bug一直有,那產品是不是么辦法做好了?其實隨著bug的消滅,產品的“相對穩定性”是不斷增強的,也就意味著以后的bug沒那么致命、沒那么容易出現、客戶的使用也并不會觸發等等。

如果這個時候你說這個軟件沒有bug了,至少我不會相信。 既然大家都一直與bug糾纏,是不是應該有一些經驗了呢?知己知彼才能百戰百勝。

所以bug菌這里把最近所想到的、非常有意義的部分記錄了一下分享給諸位:

1

else不處理

工作這么多年,我算是看過很多人寫代碼了,經常有同事寫if容易丟掉else,其實這是一個非常不好的習慣。

如果在編碼的時候else部分不需要處理,倒無傷大雅,但else部分存在一些相關變量需要置位或者釋放等,而你沒有else處理,便會引入bug。

7eef0a6a-04d8-11ee-90ce-dac502259ad0.png

所以我的習慣就是即使else不需要處理也會保留下來,并且在其中進行相關注釋,以提醒自己這一塊是有邏輯處理的。

2

可視化日志

相信很多朋友都有看到過類似的文章。比如什么串口打印日志技巧、easylog等開源日志庫、離線日志記錄工具等等,這些東西都是圍繞著一個主題為程序員提供一個可視化的日志信息展示。

因為大部分人的暫態大容量記憶能力是較弱的,這樣會導致我們對于一些邏輯中狀態的梳理處于劣勢,特別是一些復雜的邏輯處理和梳理,使得最終編寫的代碼容易引入邏輯問題。

所以通過可視化日志的方式輔助程序員進行程序相關狀態的記錄,從而便捷的定位問題,解決bug。

7efaccba-04d8-11ee-90ce-dac502259ad0.png

3

bug與代碼要匹配

經常客戶或者測試反饋一些bug,有些朋友收到就立馬一頭扎進最新的代碼中進行查證,其實這個問題的出現是老版本上,導致自己忙前忙后還找不到問題的根源,所以軟件的版本管控是非常重要的,這樣才能對癥下藥。

以前去過一家公司,軟件方面沒人管控,代碼隨便改,其中一個代碼改了10幾遍,版本號什么的一直不變,這樣的話一旦有問題,這個真的是一件頭疼的事情。

4

常回頭看看

這種方式主要是應對一些新增需求導致的軟件bug,以前版本運行好幾個月都沒有問題,而更新到新版本沒多久就產生了故障,此時需要做的就是對比之前的代碼來進行修改點的查驗和評估。

在軟件中比較模棱兩可的位置,多看看歷史版本對其的設計和所考慮的問題,防止修改以后引入新的問題。

7f03e0de-04d8-11ee-90ce-dac502259ad0.png

5

不要你認為

以前非常有意思的一句話:"我不要你認為,我要我認為",這句話確實有點狂妄自大之感,但是在"標準"面前就是這么現實。

經常有朋友在解決bug的過程中抱著猜一猜的心態,這樣是非常不專業的。

對于軟件運行本身是沒有bug這一說法的,程序都是按照你寫的代碼序列在運行著,之所以稱軟件有bug,無非就是它沒有按照你想要的邏輯運行罷了。

那這個問題并不是在軟件本身而是你自身的編碼能力,如果對于你所寫的代碼問題都還是猜一猜的方式去解決問題,那這個bug估計會越滾越大。

所以怎么算解決bug呢?一定要分析bug產生的前因后果,而不是“我把下面這行代碼屏蔽了問題就不出現”等等不負責任的方式。

當然有時候你有這樣的做法,我也能理解,畢竟有時候客戶可耗不起你分析的時間,設備停機1個小時10來w,你看著賠償就好了~

7f0cd4be-04d8-11ee-90ce-dac502259ad0.png

6

假如XXX會怎樣

寫軟件的朋友,腦袋瓜子相對比較靈活,這都是多年訓練的結果。

在設計軟件的時候應該多做一些假設,比如程序中等待兩個信號到來便會進行相應的處理,此時此刻你就需要考慮其中有一個信號遲遲沒有到來超時了程序會怎么樣?

或者兩個信號接收的順序是否會對程序造成影響之類的問題?

解析一些通信數據,不可能每次都那么穩定的傳輸,如果存在粘包、斷包、錯誤包該如何處理等等?

當你在寫代碼的過程中面面俱到,這樣寫出來的程序才會相對更加穩定,當然要做到這種境界也得一日之寒,需要不斷的積累和理解。




審核編輯:劉清

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 編碼器
    +關注

    關注

    45

    文章

    3596

    瀏覽量

    134167
  • 嵌入式軟件
    +關注

    關注

    4

    文章

    240

    瀏覽量

    26620

原文標題:代碼中藏幾個bug,讓自己無法替代?

文章出處:【微信號:嵌入式情報局,微信公眾號:嵌入式情報局】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    與單片機Bug戰斗的那些經歷

    ,以編程規范來打造程序的外觀。Bug已經在高手面前無所遁形。所以Bug只是高手們用來愉悅的玩物。用來享受那一刻的征服感。為了菜鳥也能享受其中的快樂,我分享一下自己的經驗,
    發表于 11-05 17:09

    labview 前面板全屏后按鍵不能正常, 是labview的BUG還是代碼有問題?

    用選項卡裝一個chart 圖,Chart圖自己適應屏幕后,在同一選項卡里的按鍵按下后就不顯示。不知道是Labview本身的BUG,還是自己編寫的程序有問題,現符上圖片和
    發表于 11-27 10:00

    與單片機Bug戰斗的那些經歷

    編程規范來打造程序的外觀。Bug已經在高手面前無所遁形。所以Bug只是高手們用來愉悅的玩物。用來享受那一刻的征服感。為了菜鳥也能享受其中的快樂,我分享一下自己的經驗,
    發表于 12-20 17:15

    程序員最難忘的Bug調試經歷

    無計可施的時候,唯一能做的是對代碼進行分而治之,不斷地去排查錯誤,消滅錯誤,直到最后剩下非常小的一塊,再去慢慢研究問題所在,可不幸往往就這樣,在排除了許多錯誤以后,該Bug還是會出現。在這個過程
    發表于 01-21 15:08

    開發者應該知道的代碼查詢工具,杜絕代碼bug

    就得你的老板付費了。他們也有一些知名的客戶,如Adobe、甲骨文、惠普、美國銀行等等。IDE的重量級作品JetBrains推出了Upsource,這是一種多語言代碼審查工具。為什么通曉多國語言?下面
    發表于 07-25 15:04

    單片機開發應掌握的幾個基本技巧

    在單片機應用開發,代碼的使用效率問題、單片機抗干擾性和可靠性等問題仍困擾著。現歸納出單片機開發應掌握的幾個基本技巧。如何減少程序
    發表于 11-19 08:25

    單片機開發應掌握的幾個基本技巧

    在單片機應用開發,代碼的使用效率問題、單片機抗干擾性和可靠性等問題仍困擾著。現歸納出單片機開發應掌握的幾個基本技巧。1、如何減少程序
    發表于 11-22 07:16

    人工智能自己代碼實現自我編程的顛覆性變革

    使用人工智能,計算機能夠理解一個軟件開發項目從無到有的發展歷史過程的所有代碼,并立即改進或者刪除單獨一行代碼bug,不管是用什么編程語
    發表于 07-11 09:57 ?2.7w次閱讀

    如何編寫無法維護的代碼你的代碼沒有重構的風險

    自己弄個鐵飯碗,因為除了你之外,沒人能維護你寫的代碼。再而且,如果你能練就秘籍的全部招式,那么連你自己無法維護你的
    的頭像 發表于 04-29 19:11 ?2583次閱讀

    iPhone、iPad崩潰的字符bug

    今天,EverythingApplePro 又發現了一個字符 bug,這個 bug 被稱為“黑點”,最初與 Android 平臺的 WhatsApp 有關系。社交網絡上開始廣泛的傳播開來,在 iOS 平臺上,主要是黑點起作用,可以直接
    的頭像 發表于 05-22 08:39 ?4438次閱讀

    如何解決智能合約Bug

    智能合約在運行過程中發現Bug或者代碼需要改進,這會影響整個系統的健壯性,如果發現無法解決的Bug,那就可能會造成嚴重的經濟損失。
    發表于 10-25 10:55 ?1720次閱讀

    STM32F4系列芯片幾個無法啟動的原因

    最近一年多開始使用STM32F4系列芯片,在使用開發板、評估板的時候一切正常,但當自己做板子的時候事故頻發,最典型的就是無法啟動、無法刷機,現將遇到的幾個
    的頭像 發表于 02-16 14:08 ?8253次閱讀
    STM32F4系列芯片<b class='flag-5'>幾個</b><b class='flag-5'>無法</b>啟動的原因

    如何提高代碼性能、使代碼遠離Bug、令代碼更優雅

    背景:如何更規范化編寫Java代碼的重要性想必毋需多言,其中最重要的幾點當屬提高代碼性能、使代碼遠離Bug、令代碼更優雅。 一、MyBati
    的頭像 發表于 08-17 09:42 ?1386次閱讀

    代碼bug就是一個此消彼長、相互依賴的過程

    經常聽一些朋友說道:"你寫的代碼沒有bug,那你離丟飯碗不遠了",又或者代碼故意保留一些bug來增強
    的頭像 發表于 03-11 10:01 ?1098次閱讀

    自己編寫函數示例代碼很難嗎?分享幾個示例!

    Q A 問: Arduino Uno的函數示例 我決定自己編寫函數示例代碼,因為這應該是Arduino的基本示例。網絡上確實有關于使用函數的文檔,但是,如果要嘗試使用代碼環境,則必須
    的頭像 發表于 11-16 16:05 ?491次閱讀
    <b class='flag-5'>自己</b>編寫函數示例<b class='flag-5'>代碼</b>很難嗎?分享<b class='flag-5'>幾個</b>示例!