Monday, July 1, 2013
測試的友善開發&敏捷設計
將所有程式分解為類別與方法的方式中,最好的分解方式常常也是最容易測試的方法,另一方面,假設程式彼此十分緊密,類別間有許多交互的方法呼叫,所有類別都有很多參數,這樣程式不只會難以理解,測試程式碼將會變的醜陋、難讀。
Wednesday, May 22, 2013
Wednesday, April 24, 2013
Sunday, March 17, 2013
Unity3D_EditorWindow_Note
Unity 自訂Editor的視窗
- 一旦他是Ediroe class,必須把Script放在專案資料夾Assets/Editor。
- namespace在UnityEditor,因此必須using UnityEditor。
Saturday, March 9, 2013
Monday, February 25, 2013
C++_SelectionSort_DataStructure_Note
SelectionSort Steps:
假設有N筆資料,將他儲存至data陣列中。
1.從頭到尾選出最小的資料,然後將該筆資料輸出,再以一個足夠大的數,取代該筆資料。
2.重複上列動作直到所有N筆資料都被選出。
假設有N筆資料,將他儲存至data陣列中。
1.從頭到尾選出最小的資料,然後將該筆資料輸出,再以一個足夠大的數,取代該筆資料。
2.重複上列動作直到所有N筆資料都被選出。
Friday, January 4, 2013
Books-Design Patterns
大話設計模式 (作者:程杰) :
這本主要是以C# 來編寫 GoF 的Design Patterns,是一本很不錯的工具書,不過在解釋 Object Oreient Desing (SOLID)六個原則內容上稍微薄弱了一點。設計模式之禪(作者:秦小波):
這本主要是以Java來編寫GoF的Design Pattern,也是一本比較適合當工具書來用,解釋OOD的六大原則,是我看過最詳盡且好懂得,介紹GoF的範例所使用的故事這部分我反而覺得大話設計模式比較親切。深入淺出設計模式(歐萊禮):
一樣是以Java來編寫,不過個人認為它算是學習用的書籍,如果完完全全的初學Design Pattern看這本觀念會學很快,我認為它不能夠成為工具書的原因:不好查閱。不過這本在末章有介紹到MVC(Model View Controller)的Pattern,不過MVC因該可以歸類成 Architect pattern。個人認為:
完全得初學者可以看歐萊禮-深入淺出設計模式。
工具書選擇會是 大話設計模式(GoF的Pattern解釋比較親切)或設計模式之禪(OOD解釋比較好)。
最好還是3本都看過...
另一本
物件導向設計模式:可再利用物件導向軟體之要素(譯者:葉秉則)
如果C++很熟練的人可以看看....Sunday, December 30, 2012
Design Patterns-Object Oriented Design
Oject Orient Design:提到SOLID(WIKI)
包含了6個原則,原則通常會隨著專案可能會違背這些原則,但這些原則可以幫助你在設計時所要考慮因素,為何要違背某一原則?是為了其他類別?在這專案下違背了影響層面很小?
Saturday, December 22, 2012
Desing Pattern–Overview
Design Pattern:
如果發現處於某種情境下,面對著一群限制的問題,正影響著所欲達成的目標,然而,你能夠採用某個設計,克服這些限制並達到該目標,將你領向某個解決方案。問題
情境
解決方案
模式是一種被證實過的設計經驗,可以避免某些常見的錯誤。
模式是共通詞彙,能夠讓我們和其他開發者之間,針對設計進行溝通。
Saturday, December 15, 2012
Wednesday, December 12, 2012
Monday, December 10, 2012
重構-Code Refactoring-Vol.2
1.Replace Temp with Query
2.Introduce Explaining Variable
3.Split Temporary Variable
4.Remove Assignments to Parameters
5.Replace Method with Method Object
6.Substitute Algorithm
Design Patterns-Singleton Pattern& Thread
Singleton Patterns
保證一個類別僅有一個Instance,並提供一個全域訪問點。
1.該物件自行決定是否被Instance,而不是靠其他物件初始化。(將該物件的Constructor需告成Private)。
2.因建構子私有化,所以產生一個Method為公有化(物件為Publuc 、Static)。
Sunday, December 9, 2012
Windows Sockets & C++
網路程式-C/S、B/S
Client/Server:C/S
1.Client將需求傳遞給Server,再將Server回傳的結果已一定形式提供給使用者。2.Server通常處於休眠狀態,直到客戶端對該伺服器發出連線請求,將其喚醒。
Browser/Server:B/S
1.客戶端執行瀏覽器,瀏覽器以超文字形式向Web伺服器提出存取資料庫請求。2.Web瀏覽器是客戶端主要的軟體,系統功能實作的核心部分集中到伺服器上。
Friday, December 7, 2012
Component-based Development & XNA & Design Patterns
他強調把程式碼的功能性分開的軟體開發過程。
Component based Programming在遊戲引擎裡被廣泛得運用,如Unity3D:
Component Based Programming由三個主要構成:
System: 處理Render、Physics、Particle。
Entries:又稱為GameObject,出現在遊戲引擎畫面上的物件(游標、地板…等)。
Component:一個Entries可能會包含數個Componets,為這物件添加功能如Box Collider(物件碰撞網格)、Mesh Renderer(Render畫面)。
Thursday, December 6, 2012
Design Patterns-Memento Pattern
備忘錄模式-在這如果我想做一個遊戲,以RPG來說,在進入遊戲戰鬥時我可以讓玩家選擇重新開始這場戰鬥,就像FFXIII玩家可以在戰鬥中隨時重新挑戰怪物更高分數、不同打法,
那該如何儲存腳色能力?
Tuesday, December 4, 2012
Monday, December 3, 2012
重構-Code Refactoring Principles
Why Code Refactoring Work:
1.難以閱讀的程式,難以修改。2.邏輯重複,難以修改。
3.添加行為時需要修改現有程式碼,難以修改。(同時違反Desing Patterns:Open Close Principle)
4.複雜條件邏輯程式,難以修改。
Indirection and Refactoring:
1.Enable sharing of logic
一個sunmethod在兩個不同的地點被呼叫,或是superclass中的method被subclasses共享。2.To explain intention and implementation separately:
選擇每個Class和Method的名字,來解釋自己意圖的機會。Class或Method內部解釋和實現這意圖的做法。3.To isolate change:
在兩個不同地點同時使用同一個物件,其中一個地點想改變物件行為,則產生"同時影響兩處"的風險。為此可做出一個subclass,並在需要修改處引用這個subclass,這樣就不必承擔這風險。4.To encode conditional:
利用polymorphism,可以靈活彈性而清楚地表達條件邏輯。(Desing Patterns:strategy pattern)。重構是為了"未來"而不是為了"當下"。
Don't Do Code Refactoring when Project is reach Deadline.
從重構過程贏的生產力只有在最後期限過後才能夠體現出來,所以當專案已近最後期限,避免重構。Tuesday, November 20, 2012
C++&CLR&CLI&MFC
CLR 共通語言執行環境:
1.提供一個標準化且提供 Visual Basic、C#、C++多種高階語言撰寫之程式執行環境。2.可以使用.Net Framework相關的DLL,CLR一定要裝.Net Framework。
3.寫出得Dll 可以直接被 Visual studio參考。
CLI共通語言規範:
1.CLR就是實作Microsoft的 CLI。2.CLI 實質上是一個 Virtual machine,讓高階語言撰寫的應用程式,可以在不修改及重新編譯原來的原始程式碼之情形狀況下,於不同的系統環境中執行。
3.CLI 可以開發有關 CLR和MFC得技術。
MFC Microsoft Foundation Classes:
1.不需要安裝.Net Framework,換句話說不能使用 .Net Framework 的DllCLR
using namespace System: //使用.Net Framework的DLLConsole::Write(L"ASD");
int^ 、String^
可追蹤的Handle: (C++/CLI 環境下)
儲存位址,並且當堆積(Heap)做記憶體空間重整,移動其所參考的物件時,記憶體回收機制會自動更新儲存的位址。
CLR陣列跟C++陣列不同。
array
也可
array
C++
nullptr 常用於把指標指定成null。(指定成0,其不夠直觀)
int* pNumber(nullptr);
Subscribe to:
Posts (Atom)