標(biāo)題: 寫程序 不用函數(shù) 是不是代碼就變長了? [打印本頁]

作者: 李冬    時間: 2022-3-9 09:49
標(biāo)題: 寫程序 不用函數(shù) 是不是代碼就變長了?
如題

作者: rundstedt    時間: 2022-3-9 17:10
長不長關(guān)鍵看你的實現(xiàn)邏輯是否最優(yōu),用不用函數(shù)無關(guān)。
作者: SF600    時間: 2022-3-9 18:08
如果代碼很長的話,函數(shù)調(diào)用簡潔明了,很容易看懂。相反,不用函數(shù)的話,則會生澀難懂。

作者: 786786786786    時間: 2022-3-9 20:38
寫程序在邏輯一樣的情況下,我還是比較習(xí)慣用函數(shù)。方便快捷不容易出現(xiàn)特殊情況
作者: man1234567    時間: 2022-3-10 08:25
未必。比如HELLO或點燈,用函數(shù)代碼會增加。
用函數(shù)如造模塊,用不用都可以,但為啥罕見有人不用呢,你應(yīng)該懂的
作者: 123laohu123    時間: 2022-3-10 10:13
未必 看項目設(shè)計 常用編程用函數(shù)簡單點 有條理用函數(shù)調(diào)用
作者: 1842559923    時間: 2022-3-10 10:17
不是變長了,是可讀性,還有移植性都降低了,而且不美觀
作者: fj51hei    時間: 2022-3-10 10:34
1842559923 發(fā)表于 2022-3-10 10:17
不是變長了,是可讀性,還有移植性都降低了,而且不美觀

但能不能說不用函數(shù)調(diào)用 也就不需要現(xiàn)場保護(hù)啥的,更不需要PC長距離跳轉(zhuǎn)
作者: 名字不是重點    時間: 2022-3-10 12:22
麻煩你,把你對“函數(shù)”這個詞的理解,說說看?
作者: Canyon10    時間: 2022-3-10 12:33
看項目設(shè)計 常用編程用函數(shù)簡單點 有條理用函數(shù)調(diào)用
作者: 名字不是重點    時間: 2022-3-10 12:41
很難想象,編程寫代碼不用“函數(shù)”,有誰能貼一段沒有“函數(shù)”的代碼?

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

再次請求:有誰能貼一段沒有“函數(shù)”的代碼讓我學(xué)習(xí)學(xué)習(xí)?
作者: rundstedt    時間: 2022-3-10 16:45
名字不是重點 發(fā)表于 2022-3-10 12:41
很難想象,編程寫代碼不用“函數(shù)”,有誰能貼一段沒有“函數(shù)”的代碼?

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

其實你把函數(shù)都定義成inline屬性事實上(從機(jī)器碼角度考慮)就沒有函數(shù)了。所有的函數(shù)都在調(diào)用位置展開,不存在調(diào)用和返回。
作者: 名字不是重點    時間: 2022-3-10 20:17
發(fā)表于 2022-3-10 16:45
其實你把函數(shù)都定義成inline屬性事實上(從機(jī)器碼角度考慮)就沒有函數(shù)了。所有的函數(shù)都在調(diào)用位置展開, ...

不存在調(diào)用和返回?那些隨機(jī)事件如何處理?比如串口接收事件,難道每個指令完成后都要判斷一下標(biāo)志?
然后程序的PC指針從ORG 000H 就一路一直走到ROM空間盡頭?才疏學(xué)淺,真想不出。。
作者: rundstedt    時間: 2022-3-10 20:39
名字不是重點 發(fā)表于 2022-3-10 20:17
不存在調(diào)用和返回?那些隨機(jī)事件如何處理?比如串口接收事件,難道每個指令完成后都要判斷一下標(biāo)志?
然 ...

自然有別的邏輯來實現(xiàn)你的功能。你沒用過inline才疏學(xué)淺而已。
作者: 名字不是重點    時間: 2022-3-10 20:56
發(fā)表于 2022-3-10 20:39
自然有別的邏輯來實現(xiàn)你的功能。你沒用過inline才疏學(xué)淺而已。

貼個代碼上來,讓我學(xué)習(xí)一下?
作者: maoyongyi    時間: 2022-3-10 22:33
用函數(shù),就是把復(fù)雜的過程模塊化,代碼不見得就變長了。但可讀性高了。就是用匯編寫,都要用函數(shù)。
作者: maoyongyi    時間: 2022-3-10 22:44
發(fā)表于 2022-3-10 20:39
自然有別的邏輯來實現(xiàn)你的功能。你沒用過inline才疏學(xué)淺而已。

如果有變量,還是要壓堆杙的。
作者: rundstedt    時間: 2022-3-10 22:51
maoyongyi 發(fā)表于 2022-3-10 22:44
如果有變量,還是要壓堆杙的。

inline不存在壓棧,參數(shù)根本就不傳遞。
作者: 188610329    時間: 2022-3-10 23:35
名字不是重點 發(fā)表于 2022-3-10 20:56
貼個代碼上來,讓我學(xué)習(xí)一下?

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

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

inline 本來就是寫在函數(shù)里的,然后來跟你說站在機(jī)器的角度考慮沒有函數(shù),就是一個斷章取義偷換概念的噴子,理他干啥?
作者: 名字不是重點    時間: 2022-3-11 08:48
指數(shù)布丁字?jǐn)?shù)布丁

哈哈~~
作者: univers    時間: 2022-3-11 16:26
規(guī)范的都是寫與一個個函數(shù),解說一定要標(biāo)注清楚,函數(shù)再做成一個一個模塊化的組件,應(yīng)用的時候把這些模塊調(diào)出來就可以組成一個系統(tǒng)了,最多就是局部小改一下。這樣才有時效,代碼看起來整潔,簡潔,明了。
如果你亂寫一通,那時間長了自己不認(rèn)得了。對吧。。!
作者: tatachaoren    時間: 2022-3-12 03:04
寫函數(shù)不一定代碼會變短,但是可移植性,可讀性都高了。想節(jié)省內(nèi)存,還是得增強(qiáng)自己的軟件編寫能力,也就是增強(qiáng)腦子的邏輯
作者: 張三不是我    時間: 2022-3-13 16:39
不一定代碼會變長,關(guān)鍵看程序是如何實現(xiàn)的,使用函數(shù)會使代碼美觀,可讀性變好
作者: Leokex    時間: 2022-3-15 22:31
在團(tuán)隊編寫程序時,使用函數(shù)會使得其它成員能夠讀懂程序,但是代碼長度是由人為編寫的邏輯決定的。比如一個定時器做時鐘LCD1602顯示程序,我的師兄全部打下來,實現(xiàn)功能后,用了七百多行代碼,一看程序發(fā)現(xiàn)有很多while,if,for等嵌套。但是實現(xiàn)同樣功能的代碼,我的學(xué)長打下了就只有四百多行。代碼長度主要還是看個人編寫習(xí)慣、編寫技巧和編寫格式。
作者: 阿吧阿吧    時間: 2022-3-16 14:41
不一定,要分情況的,有的情況下一個簡單地邏輯就可以解決,不需要用到函數(shù),用函數(shù)可能會把問題變得更加復(fù)雜。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1