面向?qū)ο缶幊淌腔凇笔挛飳傩院头椒ㄓ泄残浴钡那疤嵯虏拍茏畲蠡l(fā)揮其效用的。
如果一個(gè)系統(tǒng)中有共性的類不多,無法/沒必要進(jìn)行抽象,那就不適合使用這一編程模型。因?yàn)轭悓?shí)例化需要大量運(yùn)算和內(nèi)存。此時(shí),使用面向過程的語言更合適。面向過程語言中所有方法都是靜態(tài)的,無需實(shí)例化便可隨意調(diào)用,占用內(nèi)存和CPU時(shí)間更少。需要解決的問題是:
變量、方法的作用域問題并行時(shí)沖突的問題基類與子類實(shí)例變量數(shù)不同
對于問題1,在可信任的編程環(huán)境中不必考慮惡意篡改和調(diào)用;即使考慮,也可以使用語言提供的機(jī)制(閉包、返回函數(shù)、模塊等)進(jìn)行規(guī)避;對于問題2,可以考慮使用單線程語言(如js)或鎖(語言提供或自己實(shí)現(xiàn))進(jìn)行規(guī)避;對于問題3,在面向過程編程中,設(shè)計(jì)方法時(shí)往往會保持純函數(shù)特性,如果函數(shù)需要用到什么變量,通過函數(shù)參數(shù)定義傳入,函數(shù)中間不引用任何實(shí)參以外的變量,因此便沒有了成員變量的必要;在我的實(shí)踐中,一個(gè)復(fù)雜的全量業(yè)務(wù)使用面向過程式nodejs實(shí)現(xiàn)時(shí),運(yùn)行時(shí)內(nèi)存占用也不過20M,但一個(gè)簡單業(yè)務(wù)的java實(shí)現(xiàn)會輕易就超過50M.
|
新聞熱點(diǎn)
疑難解答
圖片精選