2011年5月26日 星期四

[閒聊] 關於 Framework 的使用

首先,我理解的 framework 就是在框架中利用定義好的 API 開發。
因此我認為無論是有名有姓的各種 framework,
還是各公司、各團隊內寫出的 framework 都屬於討論範圍。

在開發過程中,一般來講怕的就是不一致、重工、維護困難,
至於使用 framework 可能影響效能方面,
我比較傾向效能通常都是在已經有的基礎上,進行調整(v2 比 v1快 xx%…之類)

基於以上那些討論範圍內的 framework,
如果什麼 framework 都不用的情況下,
我想像到一些情況:

一、
一位 RD X 寫了這樣的東西:
f1() 撈A > 進行B處理 > 進行C處理 > 呈現為D
同時另一位 RD Y 也需要類似的功能,但是顯示方式不一樣,所以 Y 決定自己寫:
f2() 撈A' > 進行B處理' > 進行C處理' > 呈現為E
理應撈出同樣的資料,只是呈現不同。
但因為底下的動作是各自天馬行空寫出來的,
所以就很可能使兩者呈現並不一致。

二、
續上例,
來了一位新的 RD Z,他需要一個新的功能,
有點類似 RD X 之前寫的功能,但後續處理不一樣,
所以他就參考了 RD X 的程式碼,改寫成為:
f3() 撈A > 進行B處理 > 撈H > 進行F處理 > 呈現為G

很不幸的, X 發現進行 B 處理這邊有點小問題,所以對自己的程式做了調整,
程式變成了:
f1() 撈A > 進行B處理'' > 進行C處理 > 呈現為D
但是 Z 已經著手在其他工作上了,並不知道 X 改了 B 部份…

三、
最後,不幸的 X Y Z 三位 RD 都決定離開了!
來了一位 RD W ,他發現有
f1() 撈A > 進行B處理'' > 進行C處理 > 呈現為D
f2() 撈A' > 進行B處理' > 進行C處理' > 呈現為E
f3() 撈A > 進行B處理 > 撈H > 進行F處理 > 呈現為G

這時候他發現要加入第四個功能了,
前面的步驟也是很類似,但無法理解為什麼有好多種不同作法,
所以只好自己又寫了一個新的:
f4() 撈A'' > 進行B處理''' > 進行C處理'' > 進行F處理' > 呈現為G'

以上這些是我簡單想到的可能情況,
使用一套定義好的框架,讓開發團隊在其中開發,
一般來說能降低開發時重工的程度,
也可以避免許多的不一致,後續維護也比較容易。

當然也許有團隊充滿了高人,都能互相理解並且有著高超的技巧,
但一般來說,考慮到團隊合作的情況,
團隊中有高手也會有新手,程度也不盡相同。

當然,
我同意並非一定要使用某些 framework,或必須大量使用 framework,
避免使用不適當的 framework ,也是很重要的課題。
否則只為了一些小功能,使用了龐大的 framework,反而浪費了許多資源;
甚至使用了根本就不適用的 framework,那也只會礙手礙腳;
這時自己訂出一套適當的 framework 也許會比較恰當。

無論工具多好用,
也該在充分瞭解之後、用在適當的地方。
拿螺絲起子去吃火鍋、拿筷子去裝電腦,都是很奇怪的事情。


所以最後回頭看 framework 可能影響效能部份,
一份不易理解、不好維護、更改困難、往往乾脆重寫的程式碼,
要從散落各地的邏輯中找出效能瓶頸,個人經驗是滿困難的…

反而一份容易閱讀、容易維護、容易更改擴充的程式碼,
相對比較容易找出效能瓶頸,
此時再針對瓶頸去最佳化通常會比較容易。


以上是閒扯一些小看法~

沒有留言: