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

我曾經得到的一個最好的編程建議

開發 后端
多年以前(早在1992年),我加入了這個瘋狂的skunkworks項目,這個項目使用的是他們叫做Smalltalk的另類程序語言。在加入這個奇特的小組,使用這種奇怪的編程語言不久之后,我依然對實例變量、類變量、類實例變量之間的差別感到困惑。

多年以前(早在1992年),我加入了這個瘋狂的skunkworks項目,這個項目使用的是他們叫做Smalltalk的另類程序語言。“面向對象”作為一個“熱門”項目才剛剛起步。作為“面向對象”的顧問,報酬非常可觀。很多人自以為這就是新的對象派別的全部內容。直到5年前,Alan Kay發表了“我發明了‘面向對象編程’這個術語,但{Java和C++}跟我所知道的有所不同”的言論。(”I invented the term ‘Object Oriented Programming’ and this {Java and C++} is not what I had in mind.”)

在加入這個奇特的小組,使用這種奇怪的編程語言不久之后,我依然對實例變量、類變量、類實例變量之間的差別感到困惑。我參加了來自ParcPlace的Russ Pencin的培訓課程。他說了一些當時我很不喜歡的東西。盡管不明白金玉良言當中的要點,但我還是努力跟上進度。這需要多年的經驗才能漸漸體會其中的價值。建議的內容是?

不要使用‘er’結尾的對象(Don’t make objects that end with ‘er’.)

沒錯。面向對象編程(OOP)的模式在我們稱之為“程序化編程”的文化當中活力十足。現在我們沒有過多地談論這兩種模式之間的對比。也許一部分是因為面向對象語言現在俯拾即是。面向對象編程流派,在眾多派別中脫穎而出。可惜的是,我經常回想起我在2000年左右聽過 Adele Goldberg的演講:“現在我們有很多面向對象編程技術,但就沒有那么多面向對象編程的程序員”。假如我有一個建議想轉告給一群有志成為面向對象程序員的人,那應該是Russ提供的一句金玉良言:“不要使用‘er’結尾的對象。”

這名字到底意味著什么呢?為什么值得人們對它如此興奮?多年以后我發現,面向對象編程的精髓在于將行為綁定在數據上。在你還沒成為他們無歸屬組織的重要一員時,程序就還是由行為和數據構成。在典型的結構化程序設計之中,我們將精力集中在行為(動詞)上,然后弄清楚我們需要哪些數據(名詞)才能執行。總而言之,我們將數據綁定在行為上。但在面向對象程序設計之中,我們將程序的中心用名詞和數據表示,然后弄清楚我們要將哪些行為綁定在他們之上,希望這些我們想要解決的問題能夠在突發的行為中得到答案。

最近我覺得有一個更好的名字來形容一位同事差不多都插手過的每一個“er”對象例子。

給例子起一個更好的名字會讓設計更加具有獨立性,代碼的關聯性更少,總之,更加面向對象。這不是硬性規定,不過這會讓很多例子得到改善。

就拿某種“裝載程序模塊”來說吧,重點在于它的工作單元。模塊有許多實例變量,參數,也許還有很多到處傳輸的數據。如今,取而代之的是LoadRecord和LoadStream。我有理由相信,你們最終使用的工具,更類似于面向對象編程創始人心中設想的模樣。我們想要創造可以描述的對象,然后將某些行為綁定在它上面,而不是將焦點集中在它的行為上,然后弄清楚他們的行為需要哪些數據。

某些以前學過的用er結尾的對象已經絕跡多年

管理者(Manager)——每當我遇到一位管理者時,我就會感到擔憂。大家沒有跟我說它的含義,卻早早地告訴我它的職能。它是注冊表嗎?那就叫它注冊表吧。是歷史記錄還是日志?就那樣稱呼吧。是工廠嗎?就那樣稱呼吧。

控制器(Controller)——我在過去20年內只做過一個上等的控制器對象,它是一個象征著現實世界對象的BallastVoltageController接口。事實上,世界上每一個簡單MVC的執行與控制器的不同作用本應告訴我們這個構想相當協調的事情。

組織者(Organizer 以及許多類似的團體)——焦點在于他們的職能。這是一個用來說明讓眾多這種‘ers’對象轉化為組織極其簡單的不錯例子。就把它們稱為組織吧。現在我們來關注它們的內容。

分析器/渲染器/(Analyzer/Renderer)/等等——“勞動者”對象中定義清晰的例子。假設它們是用來分析/渲染/等等。

生成器/加載器/閱讀器/編寫器/(Builder/Loader/Reader/Writer/)等等——把焦點從被操控的對象身上挪開,它們自身往往承擔著重大的責任。

這樣一條路線規則也會有很多例外

有許多以‘er’結尾的名詞。注冊表、邊框、字母、數字。如果真的是一個名詞的話,那就好了。

有很多‘er’結尾的單詞,盡管重點在于它們的行為上,也變得很常見了,所以我們***至少在一定程度上維持這種情況。分部程序,編譯器,瀏覽器。

當你試圖建立一個以‘er’結尾的域對象模型時,我可以拿比較熟悉的人員管理域作例子,它可以提升個人素質,使人具有管理行為。

你的經歷可能會有所不同,我相信有很多人持反對意見。直到你適應了這種心態一段時間之后,你才能真正體會到。為你的項目/設計提供一個回旋的余地,看看會發生什么。

英文原文:One of the Best Bits of Programming Advice I ever Got

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

【編輯推薦】

  1. 高效編寫Java代碼的幾條建議
  2. Dart語言遭微軟鄙視 谷歌疏遠盟友必敗
  3. JAVA程序員您需要學習的25個標準
  4. Java常見的四種引用
  5. Java程序員慣性思維的一個錯誤
責任編輯:林師授 來源: 伯樂在線
相關推薦

2015-06-02 11:04:02

編程最佳編程建議

2012-09-03 11:03:10

程序員編程

2012-09-03 11:09:37

2012-08-20 09:53:48

編程編程建議程序員

2015-10-08 08:46:29

職業建議

2018-12-04 15:46:53

編程語言Python

2019-08-23 15:54:55

編程語言程序員電腦

2015-09-08 09:25:07

編程經驗教訓

2023-01-04 09:05:17

2016-10-19 13:32:31

JavaMemory

2009-07-27 09:56:51

IT職場建議

2020-08-26 10:03:31

MySQL索引

2015-09-28 11:15:03

java初學者建議

2012-10-09 14:53:47

微軟

2021-03-01 14:44:17

AI 數據人工智能

2021-08-02 08:21:53

Python編程語言開發

2012-04-17 10:38:38

女性編程

2022-05-16 08:42:26

Pandasbug

2018-11-16 17:00:05

Python腳本數據分析

2013-08-26 13:58:20

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 日本成人综合 | 综合九九 | 免费一区在线 | 九九久久国产 | 中文字幕av中文字幕 | 91精品国产一区二区三区 | 国产精品电影网 | 久久亚洲视频网 | 国产精品高清在线 | 日韩在线中文 | 久久精品色欧美aⅴ一区二区 | 在线成人一区 | 欧美日韩国产三级 | 日本免费一区二区三区视频 | 91av免费版| 欧美中文字幕在线 | 激情视频一区 | 日韩一区二区三区在线看 | 日韩欧美一区二区三区免费看 | 婷婷色国产偷v国产偷v小说 | 亚洲在线久久 | 6996成人影院网在线播放 | 九色国产 | 欧美性猛交一区二区三区精品 | 奇色影视 | 免费影视在线观看 | 久久草在线视频 | 免费h在线 | 国产精品久久久久久久久久免费看 | 欧美淫片| 国产伦精品一区二区三区在线 | 成人精品在线视频 | 91在线区 | 国产一级片| 国产亚洲精品成人av久久ww | 亚洲精品亚洲人成人网 | 欧美一级在线视频 | 亚洲嫩草 | 国产高清在线视频 | 四虎永久免费地址 | 色综合网站 |