找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2818|回復(fù): 25
打印 上一主題 下一主題
收起左側(cè)

寫(xiě)程序 不用函數(shù) 是不是代碼就變長(zhǎng)了?

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:709761 發(fā)表于 2022-3-9 09:49 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
如題
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:879809 發(fā)表于 2022-3-9 17:10 | 只看該作者
長(zhǎng)不長(zhǎng)關(guān)鍵看你的實(shí)現(xiàn)邏輯是否最優(yōu),用不用函數(shù)無(wú)關(guān)。
回復(fù)

使用道具 舉報(bào)

板凳
ID:1006015 發(fā)表于 2022-3-9 18:08 | 只看該作者
如果代碼很長(zhǎng)的話(huà),函數(shù)調(diào)用簡(jiǎn)潔明了,很容易看懂。相反,不用函數(shù)的話(huà),則會(huì)生澀難懂。
回復(fù)

使用道具 舉報(bào)

地板
ID:1008998 發(fā)表于 2022-3-9 20:38 | 只看該作者
寫(xiě)程序在邏輯一樣的情況下,我還是比較習(xí)慣用函數(shù)。方便快捷不容易出現(xiàn)特殊情況
回復(fù)

使用道具 舉報(bào)

5#
ID:584814 發(fā)表于 2022-3-10 08:25 | 只看該作者
未必。比如HELLO或點(diǎn)燈,用函數(shù)代碼會(huì)增加。
用函數(shù)如造模塊,用不用都可以,但為啥罕見(jiàn)有人不用呢,你應(yīng)該懂的
回復(fù)

使用道具 舉報(bào)

6#
ID:1008919 發(fā)表于 2022-3-10 10:13 | 只看該作者
未必 看項(xiàng)目設(shè)計(jì) 常用編程用函數(shù)簡(jiǎn)單點(diǎn) 有條理用函數(shù)調(diào)用
回復(fù)

使用道具 舉報(bào)

7#
ID:551638 發(fā)表于 2022-3-10 10:17 | 只看該作者
不是變長(zhǎng)了,是可讀性,還有移植性都降低了,而且不美觀
回復(fù)

使用道具 舉報(bào)

8#
ID:712493 發(fā)表于 2022-3-10 10:34 | 只看該作者
1842559923 發(fā)表于 2022-3-10 10:17
不是變長(zhǎng)了,是可讀性,還有移植性都降低了,而且不美觀

但能不能說(shuō)不用函數(shù)調(diào)用 也就不需要現(xiàn)場(chǎng)保護(hù)啥的,更不需要PC長(zhǎng)距離跳轉(zhuǎn)
回復(fù)

使用道具 舉報(bào)

9#
ID:824490 發(fā)表于 2022-3-10 12:22 | 只看該作者
麻煩你,把你對(duì)“函數(shù)”這個(gè)詞的理解,說(shuō)說(shuō)看?
回復(fù)

使用道具 舉報(bào)

10#
ID:1009420 發(fā)表于 2022-3-10 12:33 | 只看該作者
看項(xiàng)目設(shè)計(jì) 常用編程用函數(shù)簡(jiǎn)單點(diǎn) 有條理用函數(shù)調(diào)用
回復(fù)

使用道具 舉報(bào)

11#
ID:824490 發(fā)表于 2022-3-10 12:41 | 只看該作者
很難想象,編程寫(xiě)代碼不用“函數(shù)”,有誰(shuí)能貼一段沒(méi)有“函數(shù)”的代碼?

個(gè)人認(rèn)為,不同的編譯語(yǔ)言對(duì)“函數(shù)”的叫法不同:A(基于ASM)、B(基于BASIC)叫做“Sub”(子程序),;
而C(C51、C#)之類(lèi)就有“FUNCTION”的叫法。
“函數(shù)”的特點(diǎn)就是代碼可讀、邏輯、復(fù)用、移植等等的體現(xiàn)。
不用函數(shù),似乎還沒(méi)見(jiàn)過(guò)。比如C51中,串口中斷,就是一個(gè)“函數(shù)”,最常見(jiàn)的delay_ms(x)也 一個(gè)“函數(shù)”,更別提顯示“函數(shù)”、按鍵掃描“函數(shù)”。。。

再次請(qǐng)求:有誰(shuí)能貼一段沒(méi)有“函數(shù)”的代碼讓我學(xué)習(xí)學(xué)習(xí)?
回復(fù)

使用道具 舉報(bào)

12#
ID:879809 發(fā)表于 2022-3-10 16:45 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2022-3-10 12:41
很難想象,編程寫(xiě)代碼不用“函數(shù)”,有誰(shuí)能貼一段沒(méi)有“函數(shù)”的代碼?

個(gè)人認(rèn)為,不同的編譯語(yǔ)言對(duì)“函 ...

其實(shí)你把函數(shù)都定義成inline屬性事實(shí)上(從機(jī)器碼角度考慮)就沒(méi)有函數(shù)了。所有的函數(shù)都在調(diào)用位置展開(kāi),不存在調(diào)用和返回。
回復(fù)

使用道具 舉報(bào)

13#
ID:824490 發(fā)表于 2022-3-10 20:17 | 只看該作者
發(fā)表于 2022-3-10 16:45
其實(shí)你把函數(shù)都定義成inline屬性事實(shí)上(從機(jī)器碼角度考慮)就沒(méi)有函數(shù)了。所有的函數(shù)都在調(diào)用位置展開(kāi), ...

不存在調(diào)用和返回?那些隨機(jī)事件如何處理?比如串口接收事件,難道每個(gè)指令完成后都要判斷一下標(biāo)志?
然后程序的PC指針從ORG 000H 就一路一直走到ROM空間盡頭?才疏學(xué)淺,真想不出。。
回復(fù)

使用道具 舉報(bào)

14#
ID:879809 發(fā)表于 2022-3-10 20:39 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2022-3-10 20:17
不存在調(diào)用和返回?那些隨機(jī)事件如何處理?比如串口接收事件,難道每個(gè)指令完成后都要判斷一下標(biāo)志?
然 ...

自然有別的邏輯來(lái)實(shí)現(xiàn)你的功能。你沒(méi)用過(guò)inline才疏學(xué)淺而已。
回復(fù)

使用道具 舉報(bào)

15#
ID:824490 發(fā)表于 2022-3-10 20:56 | 只看該作者
發(fā)表于 2022-3-10 20:39
自然有別的邏輯來(lái)實(shí)現(xiàn)你的功能。你沒(méi)用過(guò)inline才疏學(xué)淺而已。

貼個(gè)代碼上來(lái),讓我學(xué)習(xí)一下?
回復(fù)

使用道具 舉報(bào)

16#
ID:1009545 發(fā)表于 2022-3-10 22:33 | 只看該作者
用函數(shù),就是把復(fù)雜的過(guò)程模塊化,代碼不見(jiàn)得就變長(zhǎng)了。但可讀性高了。就是用匯編寫(xiě),都要用函數(shù)。
回復(fù)

使用道具 舉報(bào)

17#
ID:1009545 發(fā)表于 2022-3-10 22:44 | 只看該作者
發(fā)表于 2022-3-10 20:39
自然有別的邏輯來(lái)實(shí)現(xiàn)你的功能。你沒(méi)用過(guò)inline才疏學(xué)淺而已。

如果有變量,還是要壓堆杙的。
回復(fù)

使用道具 舉報(bào)

18#
ID:879809 發(fā)表于 2022-3-10 22:51 | 只看該作者
maoyongyi 發(fā)表于 2022-3-10 22:44
如果有變量,還是要壓堆杙的。

inline不存在壓棧,參數(shù)根本就不傳遞。
回復(fù)

使用道具 舉報(bào)

19#
ID:624769 發(fā)表于 2022-3-10 23:35 | 只看該作者
名字不是重點(diǎn) 發(fā)表于 2022-3-10 20:56
貼個(gè)代碼上來(lái),讓我學(xué)習(xí)一下?

他就是偷換概念,你還讓他發(fā)代碼?

就算寫(xiě)個(gè)流水燈 都需要 “main函數(shù)”,所以,這個(gè)“不用函數(shù)”這個(gè)偽命題,居然能討論到那么多樓,也夠奇葩的。

inline 本來(lái)就是寫(xiě)在函數(shù)里的,然后來(lái)跟你說(shuō)站在機(jī)器的角度考慮沒(méi)有函數(shù),就是一個(gè)斷章取義偷換概念的噴子,理他干啥?
回復(fù)

使用道具 舉報(bào)

20#
ID:824490 發(fā)表于 2022-3-11 08:48 | 只看該作者
指數(shù)布丁字?jǐn)?shù)布丁

哈哈~~
回復(fù)

使用道具 舉報(bào)

21#
ID:382454 發(fā)表于 2022-3-11 16:26 | 只看該作者
規(guī)范的都是寫(xiě)與一個(gè)個(gè)函數(shù),解說(shuō)一定要標(biāo)注清楚,函數(shù)再做成一個(gè)一個(gè)模塊化的組件,應(yīng)用的時(shí)候把這些模塊調(diào)出來(lái)就可以組成一個(gè)系統(tǒng)了,最多就是局部小改一下。這樣才有時(shí)效,代碼看起來(lái)整潔,簡(jiǎn)潔,明了。
如果你亂寫(xiě)一通,那時(shí)間長(zhǎng)了自己不認(rèn)得了。對(duì)吧!。!
回復(fù)

使用道具 舉報(bào)

22#
ID:488334 發(fā)表于 2022-3-12 03:04 | 只看該作者
寫(xiě)函數(shù)不一定代碼會(huì)變短,但是可移植性,可讀性都高了。想節(jié)省內(nèi)存,還是得增強(qiáng)自己的軟件編寫(xiě)能力,也就是增強(qiáng)腦子的邏輯
回復(fù)

使用道具 舉報(bào)

23#
ID:1010140 發(fā)表于 2022-3-13 16:39 | 只看該作者
不一定代碼會(huì)變長(zhǎng),關(guān)鍵看程序是如何實(shí)現(xiàn)的,使用函數(shù)會(huì)使代碼美觀,可讀性變好
回復(fù)

使用道具 舉報(bào)

24#
ID:1006510 發(fā)表于 2022-3-15 22:31 | 只看該作者
在團(tuán)隊(duì)編寫(xiě)程序時(shí),使用函數(shù)會(huì)使得其它成員能夠讀懂程序,但是代碼長(zhǎng)度是由人為編寫(xiě)的邏輯決定的。比如一個(gè)定時(shí)器做時(shí)鐘LCD1602顯示程序,我的師兄全部打下來(lái),實(shí)現(xiàn)功能后,用了七百多行代碼,一看程序發(fā)現(xiàn)有很多while,if,for等嵌套。但是實(shí)現(xiàn)同樣功能的代碼,我的學(xué)長(zhǎng)打下了就只有四百多行。代碼長(zhǎng)度主要還是看個(gè)人編寫(xiě)習(xí)慣、編寫(xiě)技巧和編寫(xiě)格式。
回復(fù)

使用道具 舉報(bào)

25#
ID:1010818 發(fā)表于 2022-3-16 14:41 | 只看該作者
不一定,要分情況的,有的情況下一個(gè)簡(jiǎn)單地邏輯就可以解決,不需要用到函數(shù),用函數(shù)可能會(huì)把問(wèn)題變得更加復(fù)雜。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表