2012年6月10日 星期日

生死格鬥之浪打委派 第一彈 List Sort()、Find()、FindAll()、Exist() 豬走路範例






回憶起我們小時候~ 第一次見到List

閉上眼睛就能感受~ 哇太神啦 不用設大小的伸縮陣列

在我們心中慢慢流動的溫柔~ Array 神馬的再也不用了

 

但是很快的我就發現我對這個新夥計還不夠了解

因為我竟然不會用

List.Sort() → 排序T

List.Find() → 找出一個T

List.FindAll() →找出多個T

List.Exist() →判斷T是否存在

這幾個神奇方法

直到我參拜了前輩的文章

[ASP.NET]利用List的Sort()、Find()、FindAll()、Exist()來解決一些問題

我就像草叢倫看到蠻三刀旋風斬的時候一般,大嘆:神技術,我來試試

果然我還只是個2B,頂多依樣畫葫蘆的假裝會用,實際上在搞什麼鬼還是有看沒懂

老師跟我說:沒關係你還小還不懂,長大就會懂了。

那什麼時候長大呢?

沒錯,現在就長大了。

 

 

 

 

老師的範例其實寫得很明白了,但是為什麼我還是看不懂呢,很簡單,就是這範例還太高檔了,不是當時豬腦的我可以理解的

我們降一個檔次直接用最常用的List<int>保證果斷明白

 

 

 

 

考試囉,如果有好好聽課的話,下面的題目超簡單的

 

 

 

 

神馬?你說沒介紹Sort()、Find()、FindAll()?

不是說了是豬走路範例了嗎,看過一個就應該會走路了

2012年6月9日 星期六

Win8 + Visual Studio 2012 之旅 之一






開機完第一個畫面,看似平板的開始頁面,襲承自WP7的動態磚,概念是自動提供訊息給使用者,而非使用者去找訊息,但是真相是我想開個記事本都找了半天,下圖的記事本是經過一番波折才釘選在首頁的

按下左下角的桌面又會回到像WIN7的介面,但是開始圈圈不見鳥,要開程式還是得用那個難用的開始頁面

當機會賣萌,給你個表情文字:(

Visual Studio 2012變成這鳥樣子,有人說這個就跟程式設計師一樣,過著慘淡灰白的日子

.NET4.5?? MVC4?? 我都不會耶,我就像吃了慚愧棒棒糖一樣慚愧

方案總管換ICO不是很習慣,預設使用.NET4.5跟HTML5,等等我怎麼貌似看到像是 MVC 語法的鬼東西

預設的網站專案跑起來長這樣,還滿漂亮的,右下角看到社群網站入侵的Mark

2012年6月8日 星期五

自修練功 大雜燴 翻寫 VB 版






詳情參照上篇

自修練功 大雜燴 委派 x 多層式架構 x 介面

UI

定番 華而不實 五專案

IAccessType.vb

Form1.vb

TSQL.vb

TypedDataSet.vb

LINQ.vb

專案檔 資料庫依舊是偉大的北風

LINQ x 浪打 x VB + CS

吃飽太閒 把之前的練習 翻寫成VB

結果卡關在 classlibrary 中使用 connectionStrings

怎麼寫都是 Null Reference

查了一下 發現比想像中麻煩 算了 先擱著

反倒是VB LINQ 的浪打被我胡亂try出寫法 好爽

這種 集抽象 極簡 於一身 令人蛋疼又糾結的寫法 我最愛了

哪天有閒 再把各種查詢方式玩一遍吧

C#

VB.NET

2012年6月3日 星期日

自修練功 大雜燴 委派 x 多層式架構 x 介面






如果只是想要打發笅剋扈速度交差了事的話,下面可以都不用看

如果跟我一樣無聊,沒事喜歡亂搞實驗的話就看吧。

 

 

 

 

基本上就是把最近學摸索的委派(還在持續摸索中)跟偉大的願景 - 寫一個多層架構的 符合物件導向概念的 偉大的應用程式 做結合

偉大的願景就跟崇高的理想一樣,輕易的就會被現實的專案時程打敗

但是對於一個燃燒摳頂小宇宙的PG來說,它還是散發著耀眼的光芒

以上廢話

 

 

 

 

UI很簡單長這樣

有五個專案看起來很強大,實際上不會有人這麼幹,但是可以作夢當作不同團隊開發各自的專案再整合

DatabaseAccessLayer 的 介面 IAccessType 定義所有資料存取的方法

類別 TSQL、TypedDataSet、LINQ 都繼承 IAccessType 各自所屬一個專案

這裡可以做夢當作不同團隊都用不同的方式存取資料庫,但是都必須遵守 介面 IAccessType 實作所有屬性方法事件

在程式需要存取資料庫的時候透過 繼承 IAccessType 的物件,來叫用方法取得資料

只是這次的練習很簡陋,所以沒有邏輯層

這次另一個練習重點是委派,分別使用了3種不同的委派寫法

radioButton的選擇決定使用何種委派方法,進而建立負責存取資料庫的物件的實例

或許這看起來很多此一舉,直接在判斷後面把類別指定給物件就好了,根本不必這麼麻煩

這裡可以做夢假設切換的條件是未知的,在某些特殊的情況下才切換,且發生的時機未知而不固定

由於未知且不定,很難明確的靠判斷式來取得實例,因為如果要判斷的條件本身不存在的話,就必須先判斷存在再判斷條件,將會十分複雜

另外委派的幾個好處:

1.當條件發生時再叫用方法

2.對不同狀況只要叫用不同方法即可,只要叫用的方法具有相同的簽名

3.易於擴充及維護(※物件導向概念的精隨)

為什麼易於擴充及維護呢?

舉例來說假如我很神真的全部用判斷式來搞定

但是再怎麼神我要判斷一種模式,勢必要寫一個 if

如果之後多了一種模式,我就必須再加一個 if

這個判斷式會長大!而且會越來越可怕,因為他們彼此間還可能互相關聯高耦合

如果我還沒有封裝這個判斷式,整個程式裡充斥著無數個這種判斷式,恩...你知道的

但是用委派則不必煩惱,面對不同狀況只要叫用不同方法

多了一種模式只要多一個新的方法,其他的無需顧慮

這裡我選擇 IEnumerable 來當回傳值,但是其實這對TSQL類TypedDataSet類是不便的,因為DataTable沒有直接轉換成 IEnumerable 的現成方法

這裡我簡單的用了一個結構來轉換資料來符合 IEnumerable

這裡又能做夢了,可以當作新舊系統用不同的存取方式,但是現在面臨整合並存,先定義明確的介面當規則,然後想辦法在新舊系統上實作這個介面,整體就能運行

雖然對某一方而言是多繞遠路多做工,但是我想沒有人會想要重新寫個系統

Form1.cs

TSQ.cs

TypedDataSet.cs

LINQ.cs

專案檔 資料庫是偉大的北風

題外話,師父曾說過,物件導向就是武林神功,入門容易精通難,但是只要你能夠隨便學個一招半式就能夠走遍天下,學八成就能出師授課,學100%就是新世界的神