Compose Method [Beck, SBPP]
You can't rapidly understand a method's logic.
Transform the logic into a small number of intention-revealing steps at the same level of detail
以下 by [Kerievsky, Refactoring to Patterns]
Motivation:
這個 pattern 看起來很簡單, 好像每個 programmer 都應該這樣寫 code, 但是如果你仔細檢視一下自己寫的 code, 你會發現, 應該大部份的 code 都沒有做到這個 pattern 的要求. Compose Method 簡單來說, 就是 method 裡面 compose 其他的東西, 都必須要在同個 detail 等級之下(Mechanics 第五點).
2011年3月23日 星期三
2011年3月20日 星期日
Smell good?
最近為了國人的生活品質與身體健康, 義無返顧的投入了清潔大隊, 在經歷了尖山火池, 天崩地裂, 毒氣瀰漫, 輻射籠罩的考驗中, 能活著回來真的是菩薩保佑, 祖上積福~ 在身體還未被恐怖的碘, 鈽的放射性同位素給侵蝕殆盡前, 趕快將所見所聞來跟大家分享~
在此先端出德高望重的貝克大師[Beck Kent]的武林秘笈心法:
扛布絲埋圾袋 [Compose Method]
在此先端出德高望重的貝克大師[Beck Kent]的武林秘笈心法:
扛布絲埋圾袋 [Compose Method]
Labels:
design pattern,
Solid Programming
2010年3月23日 星期二
function pointer in C++ to boost::function
Effective c++ item 35 舉了一個有趣的例子GameCharacter,
主要的精神在於利用function pointer把真正計算血量的部份,交給專門計算血量的function。達到像Strategy pattern可以隨時抽換實作內容的目的。
一開始看到後面boost時沒什麼fu,主要的原因在於自己對原本c++要怎麼delegate function的實作方式不熟,所以當後面進階的boost::function跟boost::bind的觀念導入後,心中只剩OS:這哪裡方便了?一點都不蝦阿~為了不模糊焦點,我們先不管pattern怎麼用,直接看看function pointer in standard C++的技巧。
主要的精神在於利用function pointer把真正計算血量的部份,交給專門計算血量的function。達到像Strategy pattern可以隨時抽換實作內容的目的。
一開始看到後面boost時沒什麼fu,主要的原因在於自己對原本c++要怎麼delegate function的實作方式不熟,所以當後面進階的boost::function跟boost::bind的觀念導入後,心中只剩OS:這哪裡方便了?一點都不蝦阿~為了不模糊焦點,我們先不管pattern怎麼用,直接看看function pointer in standard C++的技巧。
Labels:
C++,
Solid Programming
2009年12月17日 星期四
2009年12月7日 星期一
Include guard VS. #pragma once
一個簡單的小觀念,卻是我工作以後才開始的習慣-Include guard。
Include guard解決了大型專案修改時,牽一髮動全身的already be defined問題(同一個header被include兩次在c++是不合法的)。另外還有一招叫作#pragma once 有同樣的效果,不同點在於它是用”物理”的檔案位置來避免重複include。所以今天如果專案裡有兩份"一模一樣'"的header file,就…還是會出包。稍微比較一下兩種方法的優缺點。
Include guard解決了大型專案修改時,牽一髮動全身的already be defined問題(同一個header被include兩次在c++是不合法的)。另外還有一招叫作#pragma once 有同樣的效果,不同點在於它是用”物理”的檔案位置來避免重複include。所以今天如果專案裡有兩份"一模一樣'"的header file,就…還是會出包。稍微比較一下兩種方法的優缺點。
Labels:
C++,
Solid Programming
2009年12月2日 星期三
assert(I'm loving it);
我很推崇在code裡加
廢話不多說,讓我先舉幾個
assert,可以讓問題及早被發現,也可以透過assert與client溝通。廢話不多說,讓我先舉幾個
assert常見的用法。
Labels:
Solid Programming
2009年12月1日 星期二
Reference vs. Address
相信大家都知道C++有個特有的參數傳遞方式 - call by reference,只是
大多數都
不太確定它跟call by address的差別與使用時機。我想藉由這篇文章分享我個人的看法。
大多數都
不太確定它跟call by address的差別與使用時機。我想藉由這篇文章分享我個人的看法。
Labels:
C++,
Solid Programming
2009年11月30日 星期一
雞婆的C++
AVI的應徵筆試裡有一題
不過應該有不少人心裡嘀咕著"Compiler會產生什麼function關我什麼事?,我會寫class就好~"
What functions does c++ compiler write for your class silently?答案是:
- Default Constructor
- Destructor
- Copy Constructor
- Copy Assignment Operator
不過應該有不少人心裡嘀咕著"Compiler會產生什麼function關我什麼事?,我會寫class就好~"
Labels:
C++,
Solid Programming
訂閱:
文章 (Atom)