嵌入式軟件設(shè)計(jì)上的經(jīng)驗(yàn)與感悟
時(shí)間:2021-10-26 14:23:29
手機(jī)看文章
掃描二維碼
隨時(shí)隨地手機(jī)看文章
[導(dǎo)讀]今天回到了深圳,開(kāi)始了今年最后4個(gè)月的工作,一年的時(shí)間真的過(guò)得挺快的,2021年又只剩下三分之一了,在返程途中思考了很多,有對(duì)未來(lái)的憧憬,也有擔(dān)憂~或許人生也跟代碼中的bug一樣需要邊寫(xiě)邊解吧。bug菌比較習(xí)慣集中抽出一些時(shí)間交流一些問(wèn)題,所以在途中跟很多朋友聊到了學(xué)習(xí)、技術(shù)和生...
今天回到了深圳,開(kāi)始了今年最后4個(gè)月的工作,一年的時(shí)間真的過(guò)得挺快的,2021年又只剩下三分之一了,在返程途中思考了很多,有對(duì)未來(lái)的憧憬,也有擔(dān)憂~或許人生也跟代碼中的bug一樣需要邊寫(xiě)邊解吧。
bug菌比較習(xí)慣集中抽出一些時(shí)間交流一些問(wèn)題,所以在途中跟很多朋友聊到了學(xué)習(xí)、技術(shù)和生活上的一些事情,同時(shí)也對(duì)比了一下自己之前走過(guò)的路,所以就有了這篇關(guān)于軟件開(kāi)發(fā)設(shè)計(jì)經(jīng)驗(yàn)與心得與體會(huì):
1、思路不清晰,不要輕易敲代碼
個(gè)人覺(jué)得代碼這些東西,都是思維的產(chǎn)物,更何況現(xiàn)在也出現(xiàn)非常多的非代碼類(lèi)語(yǔ)言,比如labview等等。
剛開(kāi)始學(xué)習(xí)編程的我也一直認(rèn)為代碼是敲出來(lái)的,一旦有新的軟件需求,就噼里啪啦代碼敲個(gè)不停,然而逐漸的發(fā)現(xiàn)這樣敲出來(lái)的代碼不僅質(zhì)量不咋樣,以后多半會(huì)遭到“無(wú)情的拋棄”。這也是很多朋友"敲三行刪兩行"尷尬場(chǎng)面的重要原因。
思維指導(dǎo)行為,這些都是學(xué)校學(xué)習(xí)哲學(xué)、馬克思老師經(jīng)常提到的,如果你手上還有這些指導(dǎo)思想的書(shū)籍,閑暇十分可以回味一下,會(huì)發(fā)現(xiàn)很多設(shè)計(jì)思想都有諸多相似之處~
2、狀態(tài)機(jī)與流程圖
既然要理清楚思路當(dāng)然記憶力和邏輯思維足夠強(qiáng)大,也是沒(méi)有問(wèn)題的。
一般人應(yīng)該做不到,還得借助一些工具,簡(jiǎn)單點(diǎn)的話那就紙、筆,畫(huà)個(gè)大體的框圖等;復(fù)雜一點(diǎn)的還是需要借助專(zhuān)業(yè)的工具,比如思維導(dǎo)圖,統(tǒng)一建模語(yǔ)言UML等。
特別要跟大家介紹的是UML,它對(duì)于嵌入式朋友們可能還有點(diǎn)陌生,其采用一種面向?qū)ο蟮姆绞絹?lái)為系統(tǒng)建立一個(gè)模型和描述,其主要是圖形的方式表述,類(lèi)似于進(jìn)行控制器設(shè)計(jì)前需要建立一下系統(tǒng)的控制模型,同樣軟件編碼設(shè)計(jì)也需要這樣一個(gè)模型,那么bug菌推薦UML。
有了這些輔助工具來(lái)設(shè)計(jì)軟件,這樣就能從整體上把控軟件的脈絡(luò)和組織,對(duì)后續(xù)軟件功能的增、刪、改都能有一個(gè)比較清晰的把握。
同樣狀態(tài)機(jī)也是必不可少的,一個(gè)功能分哪些狀態(tài),每個(gè)狀態(tài)該如何轉(zhuǎn)移,似乎看起來(lái)沒(méi)什么難的,畢竟?fàn)顟B(tài)機(jī)的實(shí)現(xiàn)文章多如牛毛。
其實(shí)狀態(tài)機(jī)的難點(diǎn)并不在于狀態(tài)機(jī)的如何編碼實(shí)現(xiàn),難點(diǎn)在于一個(gè)功能如何更加合理的把所有狀態(tài)和各狀態(tài)的轉(zhuǎn)移條件分好,狀態(tài)分太多,沒(méi)有意義,影響運(yùn)行效率,程序冗長(zhǎng);狀態(tài)分得太少,每個(gè)狀態(tài)相對(duì)比較復(fù)雜,不便于模塊化,不好維護(hù)。
那問(wèn)題來(lái)了,如何把狀態(tài)和狀態(tài)轉(zhuǎn)移區(qū)分好呢?這個(gè)問(wèn)題有點(diǎn)難回答,針對(duì)不同的項(xiàng)目和需求,需要結(jié)合自身對(duì)該部分功能的理解和抽象,以及未來(lái)對(duì)此部分功能的擴(kuò)展等綜合考慮。
3、編碼習(xí)慣與版本把控
所謂"沒(méi)有規(guī)矩不成方圓",編碼習(xí)慣bug菌也是在之前的文章中反復(fù)強(qiáng)調(diào),因?yàn)橹钡浆F(xiàn)在我還時(shí)不時(shí)受到以前老項(xiàng)目的維護(hù)之苦。
我們得承認(rèn)編程語(yǔ)言都一個(gè)樣,不過(guò)編程的思路和方式卻千差萬(wàn)別,不同的人編碼習(xí)慣或者風(fēng)格差異太大,猶如兩個(gè)互相不懂其語(yǔ)言的外國(guó)人,而文檔、注釋就是這中間的"翻譯官"。
而版本把控主要是為了各種文檔、設(shè)計(jì)資料的變更,類(lèi)似于git這種分布式版本管理系統(tǒng)還是非常有必要的。
像我司要求負(fù)責(zé)開(kāi)發(fā)項(xiàng)目的同事至少一天上傳一次設(shè)計(jì)資料及代碼,因?yàn)槊總€(gè)人粗心大意是難免的,經(jīng)常有后面的設(shè)計(jì)遠(yuǎn)不如之前的情況,所以為了降低這塊的風(fēng)險(xiǎn),版本的管控在軟件開(kāi)發(fā)中是非常有必要的。
4、多參考官方資料
大部分軟件開(kāi)發(fā)工程師都屬于應(yīng)用型工程師,更多的是站在巨人的肩膀上來(lái)應(yīng)對(duì)一些新的需求,所以很多成熟的、官方的技術(shù)知識(shí)更多的是詳細(xì)了解其如何使用,而非花太多的精力重復(fù)造輪子。
如今網(wǎng)絡(luò)化時(shí)代,文檔資料也是魚(yú)龍混雜,然而把官方、權(quán)威的文檔資料放在旁邊作為參考才會(huì)讓人更加安心。
END
來(lái)源:最后一個(gè)bug,作者:bug菌版權(quán)歸原作者所有,如有侵權(quán),請(qǐng)聯(lián)系刪除。
▍