嵌入式高效編程(二)——清晰
4、高效編程要點:清晰
清晰:代碼易於閱讀,理解維護。
- 邏輯簡單
- 代碼行簡短
- 函數簡短
- 凝視(或自凝視)
- 分層明白
4.1 代碼頭非常重
比如:多級結構體查找變量
<span style="font-size:14px;">a1 = A->B->C.D.a1; b1 = A->B->C.D.b1; c1 = A->B->C.D.c1; d1 = A->B->C.D.d1;</span>
如果 A、B、C、D都是非常長的字符串。類似a1,b1,c1, d1, 這種變量非常多的話。代碼看起來頭非常重。寫起來和閱讀都不方便。
代碼改動:
D = A->B->C.D; a1 = D.a1; b1 = D.b1; c1 = D.c1;
4.2 函數簡短
- 函數行數建議在200行下面
- 復雜的函數分寫成幾個獨立的子函數保證主幹邏輯的清晰
4.3 模塊清晰
圖(1)分層不夠清晰圖(2)層次清晰。
嵌入式高效編程(二)——清晰
相關推薦
嵌入式高效編程(二)——清晰
要點 獨立 維護 name img class style 高效編程 b- 4、高效編程要點:清晰 清晰:代碼易於閱讀,理解維護。 邏輯簡單代碼行簡短函數簡短凝視(或自凝視)分層明白 4.1 代碼頭非常重 比如:多級結構體查找變量 <span style
Javascript面向對象編程(二):構造函數的繼承
沒有 cal type 這一 今天 nts 實現繼承 刪除 函數綁定 今天要介紹的是,對象之間的"繼承"的五種方法。 比如,現在有一個"動物"對象的構造函數。 function Animal(){ this.species = "動物"; } 還有一個
shell編程(二)
basename xitong ipp 嵌套循環 htm doc 描述 標準輸出 開始 Shell echo命令 echo是Shell的一個內部指令,用於在屏幕上打印出指定的字符串。可以使用echo實現更復雜的輸出格式控制。 顯示轉義字符 echo "\"It is a
Java 並發編程(二)對象的不變性和安全的公布對象
不一致 字段 更新 要求 nts ava 然而 caching mut 一、不變性 滿足同步需求的還有一種方法是使用不可變對象(Immutable Object)。到眼下為止,我們介紹了很多與原子性和可見性相關的問題,比如得到失效數據。丟失更新操作
C#編程(二)
sys 第一個 hang 都是 names 防止 獲取 括號 賦值 C#中的變量 例如:int i;//聲明一個int類型的變量,變量名是 i;在未為該變量進行賦值操作前,禁止使用該變量.使用(=)給變量賦值,在聲明之後可以 i=10來賦值.也可以在聲明一個變量的同時給它初
Pyhton編程(二)之變量、用戶輸入及條件語句
退出 import turn 進行 不能 exec 條件 求和 變量 一:變量 變量定義的規則 1)只能由數字、字母、下劃線組成(不能以數字開頭) 2)不能使用關鍵字作為變量名 [‘and‘, ‘as‘, ‘assert‘, ‘break‘, ‘class‘
R語言高性能編程(二)
按值傳遞 spa matrix 算法 內存映射文件 mem 返回 閾值 gic 接著上一篇 一、減少內存使用的簡單方法1、重用對象而不多占用內存 y <- x 是指新變量y指向包含X的那個內存塊,只有當y被修改時才會復制到新的內存塊,一般來說只要向量沒有被其他對象引用
Python學習筆記五函數式編程(二)
lis 運行 ast 計數 med tro append 避免 如果 參考教程:廖雪峰官網https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000 一、返回函數 高
並發編程(二):線程池
imu 並發數 提交 任務調度 core info 回收 log 減少 相比於線程池,我們可能接觸new Thread更多一點,既然有了new Thread我們為什麽還要使用線程池呢? new Thread的弊端 a、每次new Thread新建對象,
Shell 編程(二)
cut one finished home HR ron roo nes pan for in 循環語句 #!/bin/bash for x in one two three four do echo number $x done 例:取出passwd
異步編程(二)用戶模式線程同步
new 如何 int32 style type mem windows 模式 內存 基元線程同步構造 多個線程同時訪問共享數據時,線程同步能防止數據損壞。不需要線程同步是最理想的情況,因為線程同步存在許多問題。 第一個問題就是它比較繁瑣,而且很容易寫錯。 第二個問
網絡編程(二)——TCP協議、socket
cep 數據請求 b- aps pre alt 技術分享 隱藏 可靠 TCP協議與socket套接字 一、TCP協議 1、可靠傳輸,TCP數據包沒有長度限制,理論上可以無限長,但是為了保證網絡的效率,通常TCP數據包的長度不會超過IP數據包的長度,以確保單個TCP數據包不必
並發編程(二)——開啟進程、
字符串 方法 nat () 之前 multi thread run 終止進程 一、multiprocessing模塊 1、multiprocessing模塊用來開啟子進程,並在子進程中執行我們定制的任務(比如函數),該模塊與多線程模塊threading的編程接口類似
Java並發編程(二)-- 創建、運行線程
內部 ack rdquo 必須 獲得 call() pool start array Java線程 Java線程類也是一個object類,它的實例都繼承自java.lang.Thread或其子類。 Java可以用如下方式創建一個線程: Tread thread =
socket編程(二)
回車 針對 字節 ron soc listen 面向 容易 記錄 TCP下粘包問題 兩種情況下會發生粘包。 1、發送端需要等緩沖區滿才發送出去,造成粘包(發送數據時間間隔很短,數據了很小,會合到一起,產生粘包) 發送方:AB #其實放在緩存裏沒發送 發送方:B #其實放
Java網絡編程(二)
utf-8 ktr except 7月 百分號 軟件學院 port enc rgs **************************IP地址類---InetAddress*************************** 演示代碼: package com.chap
Java GUI編程(二)
check iou ide [] sta ane 事件 textarea apt **********************網格布局 GridLayout********************** 類似於表格一樣,可以設置一個 幾行幾列的表格 小技巧(讓兩個組件垂直排列
Socket網絡編程(二)
length public ket client pack net pan .get clas udp協議發送消息案例 1、創建UdpServer(udp服務器端) package com.cppdy.udp; import java.net.DatagramPacke
java tcp ip網絡編程(二) 套接字的基本使用
數據 all while 功能 傳輸過程 true 地址 right 客戶 ##基本套接字的使用 linux系統把網絡io抽象成socket,對網絡的編程就是對socket的編程。 java把套接字抽象成類似的類 InetAddress SocketAddress 識別j
Javascript面向對象編程(二):構造函數的繼承 作者:yuan一峰
技術分享 share ava 修改 enca end 日期 意思 生成 Javascript面向對象編程(二):構造函數的繼承 作者: 阮一峰 日期: 2010年5月23日 這個系列的第一部分,主要介紹了如何"封裝"數據和方法,以及如何從原型對象生成實例。