2012年9月26日 星期三

Reflection 反射吧!男孩

個人寫程式只有兩條大守則

第一條:比起效能我更在乎易維護

第二條:絕對不要違反第一條



範例:

有時候剋扈或牢版不希望網站上的圖片實體路徑被裸體公開

因為實體路徑被知道了就會被任意玩弄

想想我們的老朋友 泛型處裡常式

利用它可以搞些卑鄙手段防止被玩弄

例如檢查 登入 Session 之類的東東 確認 某些狀態

若是非登入狀態 將無法取得圖片

這裡沒搞什麼手段 就只是很簡單的藉由讀取路徑再 Response.BinaryWrite 輸出 圖片

圖片路徑就變成這樣 看不出原始路徑

http://localhost:4024/getImage.ashx?name=smile.jpg&type=Jpeg



但是上面說的東東跟這篇的主題沒啥關係 ._.

重點在於這裡為了將圖片轉成 byte[] 用到了一個 ImageFormat

裡面長這樣 用來告知圖片是何種類型

為了支援所有類型 不知不覺它就變成這樣



這樣寫有錯嗎? 當然沒錯 但是不夠優雅呀

打 GAME 要風騷走位優雅輸出 打CODE 也一樣

反射吧!男孩 請回想程式守則第一條



雖然我(有可能)犧牲了效能 但是程式碼變得更簡潔了

而且若是日後 ImageFormat 有任何屬性(Property)增減異動 我也不需要修改程式碼



P.S. 為了寫那個 switch 複製貼上手很酸 -.-

沒有留言:

張貼留言