記得在以前的博文中說過
vs的智慧型提示就是
aop,被人恥笑過。今天就詳細寫寫,名稱就叫「漁魚之辯」。
依現有的
aop的狹義定義,
vs的智慧型提示不算
aop。正如,按新華字典上的解釋,「操」不能算罵人的詞。
為了探析
vs的智慧型提示到底算不算
aop,先看看
aop的內涵:
·我們對系統有某一方面的關注
·這些關注分散在系統的多個地方
·通過某些技術或方法將這些關注點「織出」、「織入」以集中控制
看乙個例子:
例子1:程式中的魔數
程式中魔數分散在系統的各數,將它們提出為
const 變數或
static
變數以集中控制。
這算不算
aop呢?有點太輕量級了。正如蚯蚓的神經結不能稱為大腦一樣。
例子2:
ide的智慧型提示算不算
aop?
ide的智慧型提示做了什麼呢:
·我們關注型別的行為和它的字段
·型別有哪些行為或字段?這些知識分散在技術文件之中或者**中或者我們的大腦中。
·ide
通過反射或
tag技術或其它技術將這些關注點集中起來,當我們打某個字元或快捷鍵時展現給我們(織出),然後,當我們選擇了乙個方法或字段時,自動輸出一些**輸出到原始碼檔案中(織入)。
這算不算
aop呢?這個例子比例子
2重一點。
例子3:c#
的擴充套件方法
+ ide
的智慧型提示
·我們對某一或某些型別的行為進行擴充套件,或者是呼叫,或者是工具類或工具方法。通過這些擴充套件,我們可以節省**量,可以共用以前的**
·在沒有擴充套件方法之前,上述呼叫分散在系統的各處。你想知道這些關注點,必須去查詢系統中引用的各個類。假定有6個類
classutil1, bbbb, hsbdkc, ca, jdf, csld
都針對型別
t提供了工具方法,想呼叫這些工具方法,必須採用某種途徑得到這
6個類的類名,才能去呼叫這些方法,而這些類的類名分散在系統的各處,想得出,需要花費不菲的代價。
·通過擴充套件方法和
ide的智慧型提示,當我們打了這個型別例項的名稱之後,打乙個「
.」,那麼那些分散在系統各處的擴充套件方法就被
ide「織出」了放在我們的面前任我們選用,我們應用了擴充套件方法之後,編譯器在編譯時將自動將那些工具方法「織入」程序式。
這個例子的重量級又較例子
2更勝一籌。這到底算不算
aop呢?
來一段維根斯坦式的話:一棵樹稱得上樹林嗎?十棵樹在一起,稱得上樹林嗎?一百顆樹在一起,稱得上樹林嗎?一千棵樹。。。一萬棵樹在一起呢?
《建築的永恆之道》書中提出質、門、道三個概念:無形之質、有形之門、永恆之道。我對這三個概念以及概念之間的關係進行了篡改(亞歷山卓原書中是道通過門實現質,而我總覺得道比質更具備目的性,就把道和質換了下位置,並且發現,這樣說的更通順一些。亞歷山卓的粉絲別扁我!):
無形之質通過有形之門來實現永恆之道。
(按亞歷山卓的表述應該是:永恆之道通過有形之門實現無形之質)
看如上三個例子。
aop的三點內涵這是無形之質,而具體對這個無形之質的實現算有形之門,如:例子1中的
const
或static
;例子2
中的ide
的智慧型感知;例子
3中的擴充套件方法
+智慧型感知;以及
aop的經典實現
aspectj
。這些實現屬於有形之門。通過它們我們可以達到永恆之道:解決問題。
如果將aop僅僅侷限於已有的有形之門,那麼我們進了這個門,就可能錯過其它的門。
*************************
小插曲***************====
看三個例子,輕鬆一下。
例子4:
雨傘——用時開啟,不用時關上,省地方。
例子5:
書本——讀時開啟,不讀時關上。
例子6:
vs中的region
例子4-6
應用的是「摺疊」模式。
*************************
插曲結束
***************====
例子7:搜尋引擎
·我們對想要在網上查詢資訊
·這些資訊分散在網上的各個地方
有興趣的人也可以去琢磨單元測試,琢磨豐田生產系統中的質量控制方法,它們的核心——「無形之質」與上面的例
1-3,例
7是類似的。
好了,上面的例子全是事後諸葛,只有學習借鑑之用,並無多大的建設意義。
來個現實點的例子。
最近天涯社群湧現出一系列聲討拐賣兒童的帖子,典型如:
看到這個帖子,您想到那些建設性的方面呢?
我當時是想到了
aop。
下面就用
aop的「無形之門」分析一下:
·丟失孩子的家長尋找孩子的願望——這是關注點,這是方面
·丟失的孩子分散在全國各地——這是現實
·通過某些技術或方法將這些關注點「織出」呢?
關鍵就是這個「織出」。
通過這些帖子可以看出,現在幾乎人人都有手機,大多數手機都能拍照,而大部分人都有較強的道德意識在不付出較大代價的前提下去拯救這些孩子。用手機拍照、然後放到乙個**上集中起來是個很簡單的「織出」。
丟失孩子的家長可以瀏覽這些來判斷是否是自己丟失的孩子。
然而,當**很多時,這種瀏覽是不具效率的,需要提供更有效的「織出」關注點的方法。這就需要用到影象搜尋和人臉識別技術。
家長也可以上傳自己孩子的**,然後志願者看見可疑人可以拍照下來,同家長上傳的**進行比對。
這樣的系統如果建立且成功運轉起來,就是乙個有形之門。
通過有形之門來達到永恆之道——解決問題。
最好,來一首和本文無關的歌曲《忽悠一萬年》
漁魚之辯 兼談質 門 道以及模式
記得在以前的博文中說過 vs的智慧型提示就是 aop,被人恥笑過。今天就詳細寫寫,名稱就叫 漁魚之辯 依現有的 aop的狹義定義,vs的智慧型提示不算 aop。正如,按新華字典上的解釋,操 不能算罵人的詞。為了探析 vs的智慧型提示到底算不算 aop,先看看 aop的內涵 我們對系統有某一方面的關注...
售前談演講之 演講內容與個人魅力之辯
在討論這個問題之前,我們姑且把內容和個人魅力定義一下 內容包括所有的觀點 理念和知識。個人魅力包括因個人成就或貢獻或地位在社會心態上的一種情節。我們來做乙個假設,你是微軟公司的乙個售前工程師,你訓練有素,比爾.蓋茨是微軟總裁,比爾.蓋茨自己做了乙份精美的ppt,並把ppt給你,要求你演練多次,把比爾...
年以前的詩 前言 兼談程式與詩之美
前言 兼談程式與詩之美 本來翻譯 effective c 的 blog 突然貼出詩來,可能會讓人覺得有些怪怪的。主要是最近忙工作忙得四腳朝天,每天都要到晚上 10 點多,還要花 1 個多小時的時間趕回家,即使打車也要四五十分鐘。週末也至少要加一天班,剩下的一天睡覺還不夠。翻譯實在是沒有時間進行,進度...