女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何使用回調(diào)函數(shù)降低程序耦合性?

STM32嵌入式開發(fā) ? 來源:CSDN ? 2023-06-16 17:22 ? 次閱讀

一、前言

耦合性是程序結(jié)構(gòu)中各個模塊之間相互關(guān)聯(lián)的度量。它取決于各個模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。

編寫代碼有兩個核心點:隔離變化、降低復(fù)雜度,而解耦是達(dá)到這兩個目標(biāo)的重要手段。

二、使用回調(diào)函數(shù)降低耦合

問題描述:

實現(xiàn)回家函數(shù)come_home,傳入出發(fā)的時間,打印回家的方式以及到家的時間,有兩種回家方式:開車、走路。其中開車需要1小時,走路需要3小時。

功能分析:

由于回家方式不同,所用時間不同,因此到家的時間不同,可以將come_home函數(shù)代碼分為變化部分以及不變部分,將變化部分寫在回調(diào)函數(shù)中,實現(xiàn)隔離變化的目的。

變化部分:

輸出回家方式,根據(jù)出發(fā)時間,計算到家時間。

不變部分:

輸出到家時間。

1、定義回調(diào)函數(shù)指針

typedef int (*on_arrival_t)(void* ctx, int departure_time);

2、編寫come_home函數(shù)

void come_home(int departure_time, on_arrival_t on_arrival, void* ctx)
{
 int arrival_time = on_arrival(ctx, departure_time); /* 變化部分:調(diào)用回調(diào)函數(shù)計算到家時間 */
 printf("arrival_time: %d
", arrival_time);   /* 不變部分:打印到家時間 */
}

3、實現(xiàn)具體的回調(diào)函數(shù)

/* 開車回家 */
int on_drive(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 1; /* 計算開車回家時間 */
 printf("drive
");      /* 打印回家方式 */


 return arrival_time;
}


/* 走路回家 */
int on_walk(void* ctx, int departure_time) {
 int  arrival_time = departure_time + 3; /* 計算走路回家時間 */
 printf("walk
");      /* 打印回家方式 */


 return arrival_time;
}

4、main函數(shù)

int main(int argc, char* argv[])
{
 come_home(17, on_drive, NULL); /* 17點開車回家 */
 come_home(17, on_walk, NULL); /* 17點走路回家 */
 
 return 0;
}

5、輸出

0df59604-0c25-11ee-962d-dac502259ad0.png




審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴

原文標(biāo)題:使用回調(diào)函數(shù)降低程序耦合性

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發(fā)】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦
    熱點推薦

    C語言使用回調(diào)函數(shù)模擬委托與反射

    函數(shù)是C語言的核心概念。主調(diào)函數(shù)(caller)調(diào)用被調(diào)函數(shù)(callee)是一般的調(diào)用關(guān)系,如果被調(diào)
    發(fā)表于 08-03 16:12 ?577次閱讀

    調(diào)函數(shù)小結(jié)

    ,或者初步代碼完成后仍然會根據(jù)用戶需求添加很多的針對某種情況的處理方法,這時考慮采用回調(diào)函數(shù)方法 總之為系統(tǒng)功能擴(kuò)展、需通過一種接口處理很多種情況,上下級隔離時,就要考慮使用回
    發(fā)表于 07-05 01:51

    pwm程序停止調(diào)用回調(diào)函數(shù)

    會做一個PWM,但有一個問題。搜索之后,我在這個論壇上找到了一個帖子,PWM不適用于動態(tài)定時器驅(qū)動程序,所以我把它轉(zhuǎn)換成靜態(tài)的。pwm開始工作得很好,但是程序停止調(diào)用回調(diào)
    發(fā)表于 03-05 10:05

    請問LWIP協(xié)議中是怎樣自動調(diào)用回調(diào)函數(shù)?

    請問各位大神,LWIP協(xié)議中是怎樣自動調(diào)用回調(diào)函數(shù)的呢?這個原理一直不太理解,求教!!
    發(fā)表于 03-24 22:29

    使用回調(diào)函數(shù),button消失怎么回事

    就消失了。是不是不能再窗口的回調(diào)函數(shù)里,再使用回調(diào)函數(shù)的?我的目的是,使用機(jī)械鍵盤從頁面聚焦到button上。但是焦點一直找不到。有大神能告
    發(fā)表于 05-20 11:11

    請問zigbee中什么時候用回調(diào)函數(shù)

    我是zigbee新手,想問一下zigbee中什么時候用回調(diào)函數(shù)???能用通俗的話給講解一下嗎?謝謝求大神指點
    發(fā)表于 08-26 08:01

    C語言回調(diào)函數(shù)是什么

    什么是回調(diào)函數(shù)?為什么要使用回調(diào)函數(shù)?怎么使用回調(diào)
    發(fā)表于 12-28 07:11

    用DMA去讀取電壓都會調(diào)用回調(diào)函數(shù)的解決辦法

    希望用DMA去讀取電壓,但是每次轉(zhuǎn)化完成后都會調(diào)用回調(diào)函數(shù),這樣太浪費CPU了,解決辦法如下:默認(rèn)是開啟了中斷,但是只要調(diào)用HAL_NVIC_DisableIRQ(DMA2_Stream0_IRQn);把中斷關(guān)閉即可...
    發(fā)表于 08-16 08:38

    調(diào)函數(shù)的作用是什么?怎么使用回調(diào)函數(shù)

    什么是js回調(diào)函數(shù)?回調(diào)函數(shù)的作用是什么?怎么使用回調(diào)函數(shù)
    發(fā)表于 11-01 06:10

    怎樣去寫回調(diào)函數(shù)呢?怎樣去使用回調(diào)函數(shù)

    調(diào)函數(shù)的作用是什么?單片機(jī)怎么用回調(diào)函數(shù)在不同文件之間傳遞數(shù)據(jù)呢?怎樣去寫回調(diào)
    發(fā)表于 02-23 07:40

    為什么單片機(jī)中斷函數(shù)會使用回調(diào)函數(shù)實現(xiàn)?

    為什么單片機(jī)中斷函數(shù)會使用回調(diào)函數(shù)實現(xiàn)
    發(fā)表于 09-20 07:50

    LabWindows/CVI 程序調(diào)函數(shù)設(shè)計

    調(diào)函數(shù)是系統(tǒng)框架設(shè)計中非常重要的一種手段,所謂回調(diào)函數(shù)(callback )是指一個通過函數(shù)指針調(diào)用的
    發(fā)表于 05-03 16:54 ?1.1w次閱讀
    LabWindows/CVI <b class='flag-5'>程序</b> 回<b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b>設(shè)計

    C語言使用回調(diào)函數(shù)模擬委托與反射

    函數(shù)是C語言的核心概念。主調(diào)函數(shù)(caller)調(diào)用被調(diào)函數(shù)(callee)是一般的調(diào)用關(guān)系,如果被調(diào)
    的頭像 發(fā)表于 03-14 10:19 ?1485次閱讀

    函數(shù)指針和回調(diào)函數(shù)的使用方法

    了解開發(fā)語言的朋友應(yīng)該都會對回調(diào)函數(shù)有所了解,在很多的程序開發(fā)語言中都能看到回調(diào)的身影。很多場景下,當(dāng)某個條件成立以后我們希望代碼執(zhí)行某些指定的部分,這個時候可以考慮使
    的頭像 發(fā)表于 04-10 15:08 ?1378次閱讀

    如何使用C語言回調(diào)函數(shù)降低程序耦合呢?

    耦合程序結(jié)構(gòu)中各個模塊之間相互關(guān)聯(lián)的度量。它取決于各個模塊之間接口的復(fù)雜程度、調(diào)用模塊的方式以及哪些信息通過接口。
    的頭像 發(fā)表于 02-22 11:34 ?921次閱讀
    如何使用C語言回<b class='flag-5'>調(diào)</b><b class='flag-5'>函數(shù)</b><b class='flag-5'>降低</b><b class='flag-5'>程序</b><b class='flag-5'>耦合</b><b class='flag-5'>性</b>呢?