模塊 為什么程序開(kāi)發(fā)時(shí)一定要使用封裝而不能讓用戶直接訪問(wèn)變量?
為什么程序開(kāi)發(fā)時(shí)一定要使用封裝而不能讓用戶直接訪問(wèn)變量?編程語(yǔ)言有兩個(gè)極端:一是把用戶當(dāng)成小偷,以“用戶一定會(huì)犯錯(cuò)”為原則。此時(shí),它將盡可能地封裝和限制用戶的行為。以Java為代表。其優(yōu)點(diǎn)是用戶門(mén)檻較
為什么程序開(kāi)發(fā)時(shí)一定要使用封裝而不能讓用戶直接訪問(wèn)變量?
編程語(yǔ)言有兩個(gè)極端:一是把用戶當(dāng)成小偷,以“用戶一定會(huì)犯錯(cuò)”為原則。此時(shí),它將盡可能地封裝和限制用戶的行為。以Java為代表。其優(yōu)點(diǎn)是用戶門(mén)檻較低,因此開(kāi)發(fā)人員可以快速啟動(dòng)現(xiàn)成的代碼。缺點(diǎn)是開(kāi)發(fā)效率低。
一是將用戶視為上帝,為所欲為。以C/Python為例,甚至可以在Python運(yùn)行時(shí)修改代碼本身。其優(yōu)點(diǎn)是開(kāi)發(fā)效率高,缺點(diǎn)是使用門(mén)檻高,容易入坑。當(dāng)然,因?yàn)槟凶銐虻淖杂?,所以您可以人為地設(shè)置“約束”,即自封裝,這樣所有處理您的代碼的開(kāi)發(fā)人員都將遵守您的“條約”。
在這兩個(gè)極端之間也有大量的語(yǔ)言,例如rust。
封裝并不意味著“好”或“壞”,它取決于您使用的語(yǔ)言的“最佳實(shí)踐”。一個(gè)好的程序是遵循“最佳實(shí)踐”并根據(jù)實(shí)際情況編寫(xiě)的程序。
C語(yǔ)言開(kāi)發(fā)單片機(jī)為什么大多數(shù)都采用全局變量的形式?
可能您看到的大多數(shù)應(yīng)用程序都比較簡(jiǎn)單,或者M(jìn)CU的性能不強(qiáng)。為了減少調(diào)用函數(shù)導(dǎo)致的性能下降,請(qǐng)使用全局變量
!第一,情況無(wú)話可說(shuō),問(wèn)題不大。
第二,也很普遍。我認(rèn)為這與歷史遺留的問(wèn)題有關(guān)。主流MCU上的100m似乎已經(jīng)存在了大約15年。因此,人們普遍認(rèn)為單片機(jī)的性能較差。每個(gè)人都會(huì)想到一種提高代碼效率的方法。全局變量的廣泛使用是應(yīng)用最廣泛和最有效的一種!但這不符合PC應(yīng)用程序程序員編寫(xiě)的模塊化、高內(nèi)聚、低耦合的方法。不行,功能和性能只能優(yōu)先考慮
!您是否忽略了由這個(gè)全局變量引起的軟件風(fēng)險(xiǎn)以及開(kāi)發(fā)和維護(hù)困難?當(dāng)然不是。我們應(yīng)該嚴(yán)格管理這些全局變量,給每個(gè)變量一個(gè)明確的定義、類型和函數(shù),這些都應(yīng)該在文檔中明確描述!如果你理解了這樣一個(gè)文檔,你就會(huì)理解一半以上的軟件功能和框架(可能沒(méi)有框架),這樣開(kāi)發(fā)和維護(hù)就可以繼續(xù)了。
回到現(xiàn)在,MCU的主頻超過(guò)1GHz。選擇200米以上的MCU非常容易,內(nèi)存為512KB。因此,MCU的全局變量也可以成為歷史。讓我們擁抱更合適的軟件開(kāi)發(fā)思想和方法,模塊化和面向?qū)ο螅?/p>