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