凡有 ”Pattern” 一字,就有紛爭,有紛爭就有恩怨, 有恩怨就有江湖
。。。 。。。
[ "Pattern" 就係江湖 ]
這是一件陳年往事,但記憶依舊鮮明,血腥味依然中人欲嘔:
A:「你呢度點解用 strategy pattern, 而唔用 visitor pattern 」
B: 「雖然我有multiple operations, 但只有一個context, 唔駛用到 visitor pattern。 」
A:「邊個話你得一個 context, 你又有 address context 又有 phone context, 兩個都support lookup operation, 已經係典型嘅 visitor pattern, 你有無考慮過睇熟本 gof 先 ?」
B: 「對唔住, gof 未必啱哂。 佢話 visitor pattern 係為咗 add future method without altering the class definition, 我已經唔同意。 太多其他pattern 可以滿足 open / closed , gof 無解釋過點解一定要用 visitor pattern。 而且 “add future method” 呢度已經開始墮入 overengineering 嘅陷阱」
A:「所以我叫你睇多次 gof, 因為你根本唔熟。 滿足 open / closed 係 visitor pattern 嘅其中一個好處, 並唔係佢嘅目的。 同樣滿足 open / closed 嘅仲有 strategy pattern, decorative pattern, adapter pattern, 但呢啲 pattern 都唔係單純為 open / closed 而生。 而且 "add future method" 係你嘅用詞,帶有貶義成分。 gof 用嘅詞語係 extensible, 亦即係 open / closed principle 入面嘅 “open” 」
B: 「其實你越講就越印證 gof 唔係啱哂。 visitor pattern 嘅真正意義唔係令你 extensible, 而係 support multiple dispatch。 呢句唔係我講,係殿堂級人物 Scott Meyers 講嘅。我哋條 team 用 java, 已經support multiple dispatch, 用 visitor pattern 係多餘」
A: 「你唔熟 gof 都算, 點解連 java 都唔熟 ? java 根本係 single dispatch。」
B: 「 contactContext.lookup("9876-5432"), contactContext 係 polymorphic instance。 請問個 method resolution 係幾時發生? 係 compile time 定 runtime ?」
A: 「 runtime 」
B: 「 既然係咁,resolved method 會隨住 contactContext 嘅 concrete type 不同而變化,啱唔啱? 」
A: 「啱。所以 ?」
B: 「所以 java 係 multiple dispatch」
A: 「呢啲叫 dynamic dispatch。 Java 係 single dynamic disptach language。 不如叫你 Team Lead 出嚟, 我有啲嘢同佢講。」
5 分鐘後 Team Lead 進場, 望住A:「屌,copy and paste 算鳩數啦, KISS 呀,仲 visitor pattern。」, 又望住B:「DLLM, 你連 java 係唔係 multiple dispatch 都搞亂,邊個 in 你架?」 , 又望住我:「兩條撚樣嘈足成個鐘都唔制止下,知唔撚知阻住人放工呀?」
自此,A 和 B 互相仇恨,Team 內氣氛變得異常肅殺。 兩人勢不兩立,一眾 developer 漸漸分為A黨和 B黨。 少數清流如我, 經常成為磨心。黨爭越演越烈,人心渙散,人才紛紛離職。 眼見本來不錯的班底日漸分崩離析,高層決定平息風波,辭退AB二人。
記得兩人同日 last day,只有我為他們送行。
B 搭著我的肩膀,眼眶微紅:「曾經有條撚樣講過,人最大的煩惱就是記性太好。 哼,我偏偏忘記 java 是 single dispatch。 」, 我聳了聳肩,尚未開口,他已消失於偌大的 office中。
A 似乎憤恨如昔,背著我冷冷説道:「技不如人又要面子,也只有你會和他做朋友」, 我嘗試爭辯:「 我也和你做朋友。 為一點小事,葬送一個大好 project, 值得嗎?」, A沉默半餉:「不值得, 但我痛快」。 我默然嘆息,問道:「今後有何打算?」, A很爽快:「去一個無人認識的地方,再闖個名堂。 要是日後你在同行之間,聽説一個乜撚都用 visitor pattern 的人,那個一定是我。」 。。。。二人的面貌我已記不清,我只知道,每個人都會堅持自己的信念,在別人看來,是浪費時間,他們卻覺得很重要。
《完》
Source:
發覺Design Pattern 呢一本書幾有用.
https://lih.kg/bqBdRLV
#32 回覆 - 分享自 LIHKG 討論區