顯示具有 Solid Programming 標籤的文章。 顯示所有文章
顯示具有 Solid Programming 標籤的文章。 顯示所有文章

2011年3月23日 星期三

Smell good? [釋疑篇]

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月20日 星期日

Smell good?

最近為了國人的生活品質與身體健康, 義無返顧的投入了清潔大隊, 在經歷了尖山火池, 天崩地裂, 毒氣瀰漫, 輻射籠罩的考驗中, 能活著回來真的是菩薩保佑, 祖上積福~ 在身體還未被恐怖的碘, 鈽的放射性同位素給侵蝕殆盡前, 趕快將所見所聞來跟大家分享~

在此先端出德高望重的貝克大師[Beck Kent]的武林秘笈心法:

扛布絲埋圾袋 [Compose Method]

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++的技巧。

2009年12月17日 星期四

boost::noncopyable

trace到一半忍不住…又忍不住來打混又來跟大家分享了。
還記得陳欠欠之前提到的
雞婆的
C++
嗎?
這篇告訴我們一個該養成的好習慣,防止一些可以避免的錯誤。

2009年12月7日 星期一

Include guard VS. #pragma once

一個簡單的小觀念,卻是我工作以後才開始的習慣-Include guard
Include guard解決了大型專案修改時,牽一髮動全身的already be defined問題(同一個header被include兩次在c++是不合法的)。另外還有一招叫作#pragma once 有同樣的效果,不同點在於它是用”物理”的檔案位置來避免重複include。所以今天如果專案裡有兩份"一模一樣'"的header file,就…還是會出包。稍微比較一下兩種方法的優缺點。

2009年12月2日 星期三

assert(I'm loving it);

我很推崇在code裡加assert,可以讓問題及早被發現,也可以透過assert與client溝通。
廢話不多說,讓我先舉幾個assert常見的用法。

2009年12月1日 星期二

Reference vs. Address

相信大家都知道C++有個特有的參數傳遞方式 - call by reference,只是
大多數都
不太確定它跟call by address的差別與使用時機。我想藉由這篇文章分享我個人的看法。

2009年11月30日 星期一

雞婆的C++

AVI的應徵筆試裡有一題
What functions does c++ compiler write for your class silently?
答案是:
  1. Default Constructor 
  2. Destructor
  3. Copy Constructor
  4. Copy Assignment Operator
我相信有幾位同仁應該還記憶猶新。這個概念其實很簡單記也很重要,但很少人知道。

不過應該有不少人心裡嘀咕著"Compiler會產生什麼function關我什麼事?,我會寫class就好~"