成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我的大腦不能再處理面向對象了

開發 后端 項目管理
今天我意識到已經沒有什么比面向對象編程更困擾我了。尤其是 Java。人們確實都在用它嗎!?詳細請看下文

今天我意識到已經沒有什么比面向對象編程更困擾我了。尤其是 Java。人們確實都在用它嗎!?

— Swizec (@Swizec) April 29, 2012

前幾個星期我在做一個編譯器的作業——語義分析部分要用到面向對象,簡直是噩夢。需要用訪問者模式去遍歷樹,并做些奇怪的事情。

這讓我一度想在角落里蜷縮起來,在臥室里邊自言自語,邊來回搖晃。這讓River Tam在逃離房間前大喊:“太擁擠了!”

 

OOP像什么

[[79120]]
神經病?

在面向對象編程里,一切都攪在一起。函數和數據綁在一起,所有的一切都相互依賴,當你要調用一個函數時根本就不知道這個函數用來做什么。

而且這是在假設單個對象是沒有什么錯誤的情況下的。不然誰又知道會發生什么呢?這個世界就要爆炸了!

面向對象寫出來的軟件根本沒辦法理解。我曾經覺得我可以理解,但我寫了幾個月的面向過程的程序后,我發現我已經沒有腦力去理解面向對象的代碼了。太亂了。

  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? 

要回答這個簡單的問題需要知道一切:foo的整個執行歷史,整個代碼。是你命名的,你必須記住名字。

噢,我有提到bar類嗎?它依賴于foo。哦耶,它們去年因為利益而成為了朋友。相當有趣。盡管bar曾經用baz騙過foo(譯者注:foo和bar在計算機世界里常被用于例子中的變量名,函數名。)沒有人知道foo將會如何反擊!

 

面向過程編程

在@sbelak 的數次激勵下,我在兩年前開始學習面向過程編程。

有人說面向過程可擴展性更高,幾乎不需要更多的代價就可以擴展到多處理器上,清晰的代碼,可以寫出更容易開發、更容易維護、更少bug的軟件。

我雖然沒有體會到所有的這些好處,但我現在已經可以用一種新的思維來思考我寫的代碼了,那是一種更容易理解的方法。

最初寫函數式程序時,就像對我進行前腦切除手術一樣痛苦,就像用熱紅的烙鐵燒我的腳一般讓我掙扎不堪。你確定這里不需要用循環語句?但我需要變量,不是嗎?至少要一點可變性吧?真的嗎?不需要嗎?這就像一種儀式,任何時候你們都可能會跳起來,對我說“給你個驚喜”,然后開始嘲笑我。

但我堅持下來了。雖然我的代碼看上去很可怕,但我愛上了它了。

函數式代碼首先吸引我的地方就是在于寫python函數時僅需要傳遞數據。不需要儲存中間變量,僅僅傳遞一個函數的結果給另外一個函數。

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

當然,你當然可以定義一個X的函數,將Y,Z,A,B都包含在內,但為什么要創建一個僅僅被調用過一次的函數呢?僅僅像這樣

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

 

數據的瀑布

[[79121]]
普萊維斯瀑布

我現在思考代碼的方式是就像是數據的瀑布。

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

***你有一個水池了。就在這里你的數據在經歷了許多函數后,***落進了水池。可能它還會下落到下一個函數,或者你在需要的時候可以使用它。

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

不論你是如何理解你的代碼的,不管你在你腦中如何運行代碼——但如果你能處理復雜的面向對象,我就要脫帽對你致敬。你是真的比我厲害。

我想你應該試試“函數式編程”。你會喜歡它的。

原文鏈接:swizec.com

原文鏈接:http://blog.jobbole.com/20874/

責任編輯:林師授 來源: 伯樂在線
相關推薦

2022-06-02 13:20:23

數字化技術

2018-10-23 14:50:24

Linux操作系統Linus

2016-10-11 15:42:08

2013-01-10 10:05:29

編程面向對象編程

2020-07-15 07:49:20

JavaScriptReact代碼

2023-01-10 09:38:09

面向對象系統

2022-09-02 08:57:48

數據C++接口

2022-04-21 10:39:29

InnoDB意向鎖SQL

2017-11-30 14:28:01

2021-10-21 18:47:37

JavaScript面向對象

2013-03-11 09:23:22

Go語言面向對象

2009-07-14 16:51:50

Jython中的對象

2025-01-13 05:00:00

2022-07-30 23:41:53

面向過程面向對象面向協議編程

2022-02-21 07:45:29

面向對象代碼依賴倒置

2012-03-13 16:39:52

Java

2013-12-12 16:37:12

Lua腳本語言

2024-04-02 07:32:58

Go語言接口

2020-02-06 11:30:08

代碼JavaScript&&

2013-07-17 14:13:08

產品產品失敗
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美中文字幕 | 国产高清视频 | 北条麻妃99精品青青久久 | 国产最新视频在线 | 国产欧美在线播放 | 麻豆changesxxx国产 | 中文字幕亚洲区一区二 | 四虎影音 | 99精品久久久 | 亚洲午夜三级 | 久久久国产一区二区三区 | 国产成人精品一区二区在线 | 国产亚洲网站 | 电影在线| 成人高清在线视频 | 亚洲精品成人网 | 国产精品视频不卡 | 羞羞的视频在线 | 亚洲精品欧美一区二区三区 | 免费成人在线网站 | 国产91精品久久久久久久网曝门 | 综合久久久久 | 欧美日韩国产一区二区三区 | 中文字幕视频一区 | 国产伦精品一区二区三毛 | av大片 | 男女羞羞视频免费看 | 亚洲一区二区久久 | 国产福利观看 | 国产一区高清 | 人人干人人干人人 | 91在线观看 | 911影院| 国产91成人| 国产精品综合一区二区 | 亚洲天堂精品一区 | 99精品视频在线观看 | 久久综合狠狠综合久久综合88 | 日韩一级欧美一级 | 免费欧美视频 | 91久久综合亚洲鲁鲁五月天 |