代碼規范和架構【立芯理論一】(2025.06.08)

1、代碼規范的目標

  • 代碼簡潔精煉、美觀,可持續性好
  • 高效率
  • 高復用,可移植性好
  • 高內聚,低耦合
  • 沒有冗余
  • 規范性,代碼有規可循,可以看出自己當時的思考過程
  • 特殊排版,特殊語法,特殊指令,必須特別說明
  • 鍛煉代碼抽象思維
  • 參考書籍,高質量程序設計指南:C語言,林銳

2、代碼風格好的好處

  • 代碼分層明顯,方便在開發中明確接口,確定具體任務
  • 良好的代碼風格有助于拆分業務邏輯,減少文檔工作

3、代碼的基本架構

BSP(板級驅動程序,外設的驅動)
Core(MCU驅動程序,初始化內部的時鐘、IIC、SPI,包括main.c)
Drivers(廠商驅動程序——廠商SDK程序)
Middlewares(中間件——各個項目通用,抽象性高,例如FreeRTOS數學庫中所包含的快速傅里葉變換庫)
SYSTEM(系統配置層——對系統定義整體的宏)
Application(應用層——根據業務)
?

代碼規范NOTE:

1、多個數據的printf需要進行換行及對齊處理

圖1 長數據的printf規范寫法實例

2、在書寫函數時注意是否需要使用返回值,使用的話,有沒有在判斷返回值非法時打印出出錯的具體原因,方便后續程序在出錯時進行排查。例如在申請內存時出錯。

3、或者在某個模式啟動、參數存儲、消息發送之類的場景(短時間內觸發一次或少次)中有沒有對關鍵參數進行打印。例如某個函數的職責是負責接受APP發送過來的數據并且通過調用其他的API接口來設置參數,此時就需要將參數通過打印的方式Printf的方式打印出來。

單片機串口打印調試信息①_mcu jlink調試串口打印設置-CSDN博客

4、寫NULL == ARR,而不是ARR = NULL

圖2 注意在進行條件判斷時,元素的先后展示順序

5、一份優秀的應用層代碼應該是先能夠抽象出所需要實現的API接口功能,即先畫靶子再射箭。體現在代碼上就是能先在頭文件上確定可暴露在外部的接口函數功能,然后可以在源文件內完成對這些接口函數的編寫。也就是可以先建立接口函數的邏輯。而編寫接口函數時,接口函數內的分點注釋其實就相當于該函數的邏輯。則應做到先有頭文件再有源文件,先有邏輯注釋再有功能代碼

層級職責可見性
應用層接口定義業務邏輯接口公開(頭文件)
服務層實現接口核心邏輯文件內可見(static函數)
數據層參數獲取與轉換完全封裝(static變量+函數)

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/908904.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/908904.shtml
英文地址,請注明出處:http://en.pswp.cn/news/908904.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

【samba】umount:**** target is busy. ubuntu24.04 卸載掛載點

當你看到 target is busy,說明仍有進程在使用該掛載點或你當前的 shell 就位于該目錄下。可以按下面步驟排查并強制卸載: 1. 確保不在掛載目錄下 先切換到其它目錄,避免當前 shell 占用: cd ~2. 查找占用該掛載點的進程 使用 fu…

網站首頁菜單兩種布局vue+elementui頂部和左側欄導航

頂部菜單實現 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Vue.js Element UI 路由導航</…

使用 Python 正則表達式實現文本替換與電話號碼規范化

文章大綱 以下是針對“使用 Python 正則表達式進行文本替換與電話號碼規范化”主題的詳細技術文章大綱。文章將全面探討正則表達式在文本替換中的應用&#xff0c;特別是在處理電話號碼規范化問題中的具體實現。每個部分的預計字符數反映了其在文章中的重要性&#xff0c;總計…

Python爬蟲實戰:從零構建高性能分布式爬蟲系統

Python爬蟲實戰&#xff1a;從零構建高性能分布式爬蟲系統 引言 在當今數據驅動的時代&#xff0c;網絡爬蟲已成為獲取和分析互聯網數據的重要工具。本文將帶你從零開始構建一個高性能的分布式爬蟲系統&#xff0c;涵蓋從基礎概念到高級技巧的全方位知識&#xff0c;幫助你在…

PostgreSQL 技術峰會,聚焦國產生態與前沿技術

PostgreSQL 技術峰會是由重慶思莊攜手工信部中國開源軟件聯盟 PostgreSQL 分會聯合舉辦的一場技術盛宴。峰會以 “PostgreSQL 與國產生態” 為主題&#xff0c;聚焦國產生態與前沿技術&#xff0c;致力于為開發者、運維工程師和技術決策者提供全面且深入的知識賦能。以下是其相…

Java詳解LeetCode 熱題 100(27):LeetCode 21. 合并兩個有序鏈表(Merge Two Sorted Lists)詳解

文章目錄 1. 題目描述1.1 鏈表節點定義 2. 理解題目2.1 問題可視化2.2 核心挑戰 3. 解法一&#xff1a;迭代法&#xff08;哨兵節點&#xff09;3.1 算法思路3.2 Java代碼實現3.3 詳細執行過程演示3.4 執行結果示例3.5 復雜度分析3.6 優缺點分析 4. 解法二&#xff1a;遞歸法4.…

面試高頻問題

文章目錄 &#x1f680; 消息隊列核心技術揭秘&#xff1a;從入門到秒殺面試官1?? Kafka為何能"吞云吐霧"&#xff1f;性能背后的秘密1.1 順序寫入與零拷貝&#xff1a;性能的雙引擎1.2 分區并行&#xff1a;數據的"八車道高速公路"1.3 頁緩存與批量處理…

Day49 Python打卡訓練營

知識點回顧&#xff1a; 1.通道注意力模塊復習 2.空間注意力模塊 3.CBAM的定義 cbam模塊介紹 cbam注意力 之前我們介紹了se通道注意力&#xff0c;我們說所有的模塊本質上只是對特征進一步提取&#xff0c;今天進一步介紹cbam注意力 CBAM 是一種能夠集成到任何卷積神經網絡…

MySQL:Cannot remove all partitions, use DROP TABLE instead

目錄 一、 出現場景二、問題原因三、 解決方案 一、 出現場景 在MySQL創建分區之后&#xff0c;要刪除所有分區時&#xff0c;最后一個分區刪除不了。 二、問題原因 這是因為 MySQL 不允許通過 ALTER TABLE … DROP PARTITION 刪除所有分區&#xff0c;因為分區是表的核心結…

深度學習水論文:mamba+圖像增強

&#x1f9c0;當前視覺領域對高效長序列建模需求激增&#xff0c;對Mamba圖像增強這方向的研究自然也逐漸火熱。原因在于其高效長程建模&#xff0c;以及動態計算優勢&#xff0c;在圖像質量提升和細節恢復方面有難以替代的作用。 &#x1f9c0;因此短時間內&#xff0c;就有不…

今天對C語言中static和extern關鍵字的作用認識又深刻了

用了這么久的C語言&#xff0c;之前對于static關鍵字的用法總是一知半解&#xff0c;今天終于搞清楚了&#xff0c;寫個文章簡單記錄一下。 用static修飾的變量&#xff0c;不管是全局變量還是局部變量&#xff0c;其存儲位置都是靜態存儲區&#xff0c;全局變量作用域是當前文…

河北對口計算機高考MySQL筆記(完結版)(2026高考)持續更新~~~~

MySQL 基礎概念 數據&#xff08;Data&#xff09;&#xff1a;文本&#xff0c;數字&#xff0c;圖片&#xff0c;視頻&#xff0c;音頻等多種表現形式&#xff0c;能夠被計算機存儲和處理。 **數據庫&#xff08;Data Base—簡稱DB&#xff09;&#xff1a;**存儲數據的倉庫…

vmware ubuntu擴展硬盤(可用)

一、 右鍵需要的虛擬機&#xff0c;選擇設置&#xff0c;調整最大內存 二、安裝gparted軟件 sudo apt-get install gparted 三、搜索應用然后打開 四、右鍵/dev/sda3 五、調整大小 六、勾選確定 點綠色勾&#xff1a;

RoBERTa 和 BERT 的簡介與對比

RoBERTa 和 BERT 是什么 一、BERT(Bidirectional Encoder Representations from Transformers) 提出背景:由谷歌于2019年提出,是自然語言處理領域的里程碑模型,基于Transformer編碼器架構,通過預訓練生成雙向語言表示。 核心特點: 雙向預訓練:通過掩碼語言模型(MLM)…

前端繪制道路魚骨圖

項目背景&#xff1a;需要實現道路情況魚骨圖&#xff0c;根據上下行道路分別顯示對應的道路情況和沿路設施狀況&#xff0c;箭頭根據所示方向平滑移動 1.封裝組件&#xff0c;創建FishboneDiagram.vue文件 <template><div class"fishedOneBox flex items-cente…

selinux firewalld

一、selinux 1.說明 SELinux 是 Security-Enhanced Linux 的縮寫,意思是安全強化的 linux; SELinux 主要由美國國家安全局(NSA)開發,當初開發的目的是為了避免資源的誤用 DAC(Discretionary Access Control)自主訪問控制系統MAC(Mandatory Access Control)強制訪問控…

RSS 2025|從說明書學習復雜機器人操作任務:NUS邵林團隊提出全新機器人裝配技能學習框架Manual2Skill

視覺語言模型&#xff08;Vision-Language Models, VLMs&#xff09;&#xff0c;為真實環境中的機器人操作任務提供了極具潛力的解決方案。 盡管 VLMs 取得了顯著進展&#xff0c;機器人仍難以勝任復雜的長時程任務&#xff08;如家具裝配&#xff09;&#xff0c;主要受限于人…

NPOI Excel用OLE對象的形式插入文件附件以及插入圖片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("輸出完成"); }static void XlsWithObjData() {// 創建工作簿和單元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…

企業數字化轉型實戰:某行業研究院如何通過SD-WAN技術優化網絡架構?

一、引言 隨著企業數字化轉型的深入推進&#xff0c;傳統網絡架構在靈活性、可靠性和管理效率方面逐漸暴露不足。SD-WAN&#xff08;軟件定義廣域網&#xff09;技術憑借其智能化、自動化和高效的特點&#xff0c;逐漸成為企業網絡架構優化的首選方案。本文以某研究院數字化基…

數字證書_CA_詳解

目錄 一、數字證書簡介 二、 CA&#xff08;證書頒發機構&#xff09; (一) 證書鏈&#xff08;信任鏈&#xff09; 1. 根證書 2. 中間證書 3. 網站證書 (二) 抓包軟件的證書鏈與信任機制 1. 抓包通信流程 2. 證書鏈偽造與信任驗證流程 (三) 關于移動設備的CA 一、數…