日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

转:函数要多小才够好——谈小函数之道

發(fā)布時(shí)間:2023/12/20 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 转:函数要多小才够好——谈小函数之道 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

轉(zhuǎn)載自:?http://justjavac.com/other/2012/05/29/to-use-little-function.html

“設(shè)計(jì)良好的函數(shù)往往比較小,而過大函數(shù)的設(shè)計(jì)往往一塌糊涂,或者存在很大的優(yōu)化空間。”

兼聽則明,參考評(píng)論:http://www.cnblogs.com/chgaowei/archive/2011/09/07/2170265.html

假面佛

支持函數(shù)功能 按照功能單元來劃分
但粒度太小 你會(huì)發(fā)現(xiàn)調(diào)試 閱讀代碼也很蛋疼,為什么呢?
因?yàn)槟愕倪壿嬮L(zhǎng)度是必須的,如果拆分太多,函數(shù)太多,函數(shù)掉函數(shù)反而不利于閱讀和維護(hù)。
這個(gè)要適度來拆分。

?

也許你認(rèn)為討論函數(shù)的大小沒有必要,原因是函數(shù)設(shè)計(jì)的本質(zhì)是內(nèi)聚,它的大小只是它的表現(xiàn)形式。 而上面的原因有必要讓我們討論一下函數(shù)的大小問題。

我對(duì)函數(shù)的核心思路:我提出代碼最小處理單元的概念:一個(gè)基本操作(賦值,比較等),一個(gè)函數(shù)調(diào)用(包括調(diào)用后判斷返回值進(jìn)行判斷)都看成一個(gè)最小處理單元。 那么,一個(gè)函數(shù),最小處理單元合理的個(gè)數(shù)范圍在7以內(nèi)。 如果超過了7,你就要考慮把他們拆分成多個(gè)函數(shù)了(為什么是7?人同時(shí)能夠處理的信息不超過7個(gè))。

最小數(shù)目沒有限制,即便是只有1個(gè),也有存在的必要

在下面的情況下我會(huì)將函數(shù)拆分為更小的函數(shù):

1、一眼不能夠看到函數(shù)所有的代碼。

如果函數(shù)過長(zhǎng),無法一眼看到一個(gè)函數(shù)所有的代碼,我會(huì)毫不猶豫的拆分。 我不想讓讀者去翻屏,也不想讓讀者前顧后盼,顧此失彼。?漂亮的函數(shù)應(yīng)該讓讀者一眼就知道他在做什么以及怎么做的

2、局部變量過多。

如果局部變量超過七個(gè),我會(huì)考慮拆分函數(shù)。 變量過多意味著我要記錄太多的狀態(tài),這會(huì)加重我大腦的負(fù)擔(dān),同時(shí)要考慮太多的東西。 這也同時(shí)意味著我可能沒有對(duì)函數(shù)功能進(jìn)行深入的思考。

3、太多的縮進(jìn)。

太多的縮進(jìn)意味著太多的嵌套,要么是循環(huán),要么是判斷,都會(huì)導(dǎo)致復(fù)雜的邏輯。

4、不處于同一抽象層次。

舉例,有一個(gè)初始化函數(shù),需要初始化配置數(shù)據(jù),套接字,數(shù)據(jù)庫連接,通道狀態(tài)。

Void init() {Config_init();Socket_init();Db_init();Int I = 0;For (I = 0;I < max_chn_num;i++)//初始化所有通道{G_user_chn[i].status = status_init;……} }

上個(gè)函數(shù)中對(duì)所有通道的初始化一塊代碼就和其他的不處于一個(gè)抽象層次,我們應(yīng)該將它封裝起來:

void chn_init() {Int I = 0;For (I = 0;I < max_chn_num;i++)//初始化所有通道{G_user_chn[i].status =status_init;……} }

函數(shù)最小可以有多小,它存在的意義

我見過的最優(yōu)秀的函數(shù):

int max(int a, intb) {return a > b?a:b; }

這個(gè)函數(shù)很小,只有一行,但是他存在的意義在于:在函數(shù)的調(diào)用點(diǎn),我們一眼就知道是獲取a和b中的最大值,而不是分析?a > b?a:b?的邏輯。 這樣可以節(jié)省程序員的腦力成本,從而達(dá)到一個(gè)目的:漂亮的函數(shù)應(yīng)該讓讀者一眼就知道他在做什么以及怎么做的

最后的建議:

在對(duì)新員工培訓(xùn)的過程中,發(fā)現(xiàn)程序員新手一般對(duì)函數(shù)的大小不夠敏感。 所以,我建議你可以多嘗試編寫10行左右(甚至更小)的函數(shù),慢慢你會(huì)發(fā)現(xiàn)小函數(shù)原來具有大威力。

轉(zhuǎn)載于:https://www.cnblogs.com/kira2will/p/3550649.html

總結(jié)

以上是生活随笔為你收集整理的转:函数要多小才够好——谈小函数之道的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。