日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
我的大腦不能再處理面向?qū)ο罅?/div>

今天我意識(shí)到已經(jīng)沒(méi)有什么比面向?qū)ο缶幊谈_我了。尤其是 Java。人們確實(shí)都在用它嗎!?

— Swizec (@Swizec) April 29, 2012

前幾個(gè)星期我在做一個(gè)編譯器的作業(yè)——語(yǔ)義分析部分要用到面向?qū)ο螅?jiǎn)直是噩夢(mèng)。需要用訪(fǎng)問(wèn)者模式去遍歷樹(shù),并做些奇怪的事情。

這讓我一度想在角落里蜷縮起來(lái),在臥室里邊自言自語(yǔ),邊來(lái)回?fù)u晃。這讓River Tam在逃離房間前大喊:“太擁擠了!”

OOP像什么

[[79120]]
神經(jīng)?。?/p>

在面向?qū)ο缶幊汤?,一切都攪在一起。函?shù)和數(shù)據(jù)綁在一起,所有的一切都相互依賴(lài),當(dāng)你要調(diào)用一個(gè)函數(shù)時(shí)根本就不知道這個(gè)函數(shù)用來(lái)做什么。

而且這是在假設(shè)單個(gè)對(duì)象是沒(méi)有什么錯(cuò)誤的情況下的。不然誰(shuí)又知道會(huì)發(fā)生什么呢?這個(gè)世界就要爆炸了!

面向?qū)ο髮?xiě)出來(lái)的軟件根本沒(méi)辦法理解。我曾經(jīng)覺(jué)得我可以理解,但我寫(xiě)了幾個(gè)月的面向過(guò)程的程序后,我發(fā)現(xiàn)我已經(jīng)沒(méi)有腦力去理解面向?qū)ο蟮拇a了。太亂了。

 
 
 
  1. foo: object {
  2.    i: private integer = 0;
  3.    add: function (a:integer) {
  4.       i += a;
  5.       return i;
  6.    }
  7. }
  8.  
  9. /* lots of code happens here, foo has been passed around, things happened */
  10. /* foo is not a singleton though, just used a lot */
  11.  
  12. a:integer = foo.add(5);
  13.  
  14. // What is the value of a?

要回答這個(gè)簡(jiǎn)單的問(wèn)題需要知道一切:foo的整個(gè)執(zhí)行歷史,整個(gè)代碼。是你命名的,你必須記住名字。

噢,我有提到bar類(lèi)嗎?它依賴(lài)于foo。哦耶,它們?nèi)ツ暌驗(yàn)槔娑蔀榱伺笥?。相?dāng)有趣。盡管bar曾經(jīng)用baz騙過(guò)foo(譯者注:foo和bar在計(jì)算機(jī)世界里常被用于例子中的變量名,函數(shù)名。)沒(méi)有人知道foo將會(huì)如何反擊!

面向過(guò)程編程

在@sbelak 的數(shù)次激勵(lì)下,我在兩年前開(kāi)始學(xué)習(xí)面向過(guò)程編程。

有人說(shuō)面向過(guò)程可擴(kuò)展性更高,幾乎不需要更多的代價(jià)就可以擴(kuò)展到多處理器上,清晰的代碼,可以寫(xiě)出更容易開(kāi)發(fā)、更容易維護(hù)、更少bug的軟件。

我雖然沒(méi)有體會(huì)到所有的這些好處,但我現(xiàn)在已經(jīng)可以用一種新的思維來(lái)思考我寫(xiě)的代碼了,那是一種更容易理解的方法。

最初寫(xiě)函數(shù)式程序時(shí),就像對(duì)我進(jìn)行前腦切除手術(shù)一樣痛苦,就像用熱紅的烙鐵燒我的腳一般讓我掙扎不堪。你確定這里不需要用循環(huán)語(yǔ)句?但我需要變量,不是嗎?至少要一點(diǎn)可變性吧?真的嗎?不需要嗎?這就像一種儀式,任何時(shí)候你們都可能會(huì)跳起來(lái),對(duì)我說(shuō)“給你個(gè)驚喜”,然后開(kāi)始嘲笑我。

但我堅(jiān)持下來(lái)了。雖然我的代碼看上去很可怕,但我愛(ài)上了它了。

函數(shù)式代碼首先吸引我的地方就是在于寫(xiě)python函數(shù)時(shí)僅需要傳遞數(shù)據(jù)。不需要儲(chǔ)存中間變量,僅僅傳遞一個(gè)函數(shù)的結(jié)果給另外一個(gè)函數(shù)。

誰(shuí)又在乎中間的步驟?我關(guān)心的僅僅是這一大塊代碼創(chuàng)建了X,而不是它首先做了Y,然后Z,然后把A和B合并成了X。

當(dāng)然,你當(dāng)然可以定義一個(gè)X的函數(shù),將Y,Z,A,B都包含在內(nèi),但為什么要?jiǎng)?chuàng)建一個(gè)僅僅被調(diào)用過(guò)一次的函數(shù)呢??jī)H僅像這樣

X = A+B(Y(Z))不是更好么?

數(shù)據(jù)的瀑布

[[79121]]
普萊維斯瀑布

我現(xiàn)在思考代碼的方式是就像是數(shù)據(jù)的瀑布。

你有了數(shù)據(jù),函數(shù)鏈上的函數(shù)都是一個(gè)暗礁。數(shù)據(jù)持續(xù)的下落,可能改變了某些屬性,然后落到了下一個(gè)函數(shù)上。

***你有一個(gè)水池了。就在這里你的數(shù)據(jù)在經(jīng)歷了許多函數(shù)后,***落進(jìn)了水池??赡芩€會(huì)下落到下一個(gè)函數(shù),或者你在需要的時(shí)候可以使用它。

你可以說(shuō)這就是面向過(guò)程式編程啊。但它也是函數(shù)式編程,這就是我如何理解代碼的。你的想法可能不同。

不論你是如何理解你的代碼的,不管你在你腦中如何運(yùn)行代碼——但如果你能處理復(fù)雜的面向?qū)ο?,我就要脫帽?duì)你致敬。你是真的比我厲害。

我想你應(yīng)該試試“函數(shù)式編程”。你會(huì)喜歡它的。


網(wǎng)站標(biāo)題:我的大腦不能再處理面向?qū)ο罅?
分享地址:http://m.5511xx.com/article/cochghe.html