[活動記實] 讀書會~Clean Code (無瑕的程式碼)@加爾第咖啡

** 所有相關活動的完整照片,可至-「2013.05.18_Clean Code 讀書會」Flickr 相片集瀏覽。 **

上上星期六 (5/18) HSDc. 所舉辦的「Clean Code (無瑕的程式碼) 讀書會」,在相當熱絡的研討與歡樂的氣氛下,圓滿落幕了。

「Clean Code」中譯本的技術編輯(Simon, 博碩文化)也特別蒞臨此次的活動,與會過程中不只用心地回應讀者許多問題外,還分享了在翻譯該書時的用字遣詞,以盡能表達出原文的意境,實在相當感謝他能為業界翻譯如此高品質的譯本。還有,他也為讀友們帶來一項福利,在博碩的粉絲團內按個「讚」,就有機會抽中「Clean Code」原版書籍,定價可是 NT$2,200,不便宜呢。

這次讀書會的導讀與主持不得已就由我個人來擔任。我把時間安排大致分為讀書內容的心得分享、問題提問、自由討論。

一開始先作個腦力激盪 (brain storm),這裡我用心智圖 (mindmap)先整理出關於「Clean Code」的 5W-What, Why, When, Which, Who。雖然看來僅是簡單的整理,但讀友們大都發言踴躍,在分享一些對「乾淨的程式碼」的看法與心得,以及一些問題討論,這樣也討論到中午 12:40 才休息,大家各自用完中餐後,下午 1:30 繼續研討。

Clean Code 心智圖

下午整個主題就完全以書本大綱內的「How-to」為重心了,一章一章地討論大綱內容。畢竟作者就已開宗明義內提及:「小事情上誠實,可不是一件小事。」;同時又提到:「神 (我以為是魔鬼?)就在細節內。」。所以,程式碼當然就要回歸到「How-to」細節內,這可是不能眼高手低的。

事實上,這本書大概到第 10 章就足夠了,後續的內容,有其他作者撰寫的、有作者早期的論文,也有從「Refactoring」一書節錄的重構型錄,許多內容其實翻過就可以了。(不過看來我最認真!? 關於第14章-「持續地精煉」,我可是逐行閱讀其程式碼,整整花了三個晚上還不容易了解內容,直至與 Ringle 討論過後,他認為該範例還是不夠「Clean」,仍需要繼續「精煉」。 >_< ) 即使只研讀到第10章左右,但也不容易,直到下午約5:00結束時才勉強「翻完」,其實仍是有諸多細節尚未討論的。不過也算是盡心了,讀友們的發言夠是踴躍了,也相信有許多研討的內容對未來他們的工作,在長期上會有相當體會與助益的。 讀書會@吳興街加爾第咖啡

閱讀全文 »

[好書分享] Clean Code~無瑕的程式碼

無瑕的程式碼:敏捷軟體開發技巧守則 無瑕的程式碼:敏捷軟體開發技巧守則 (中譯本)
Clean Code: A Handbook of Agile Software Craftsmanship
-----------------------------------
作者:Robert C.Martin
譯者:戴于晉、博碩文化
出版社:博碩
ISBN:9789862017050
Amazon 評鑑:四顆半星

內容簡介
本書的原文書名為《Clean Code: A Handbook of Agile Software Craftsmanship》,根據作者的說法,《無瑕的程式碼》為Jolt得獎著作《敏捷軟體開發:原則、樣式及實務》的前傳。

在台灣另一本銷售極佳的書籍《重構─改善既有程式的設計》,根據亞馬遜Amazon網站的統計,購買該書原文版《Refactoring: Improving the Design of Existing Code》,又同時購買的其他書籍第一名,正是《Clean Code: A Handbook of Agile Software Craftsmanship》這一本書。

.第一章
作者開宗明義說明什麼是 Clean Code,他詢問了包含C++發明人 Bjarne Stroustrup、Eclipse 策略教父 Dave Thomas、極限程式設計大師 Ron Jeffries、維基與極限程式設計發明人,Ward Cunningham 等等的大師,從他們的眼光來描述什麼是 Clean Code,最後才說到作者本人認為的 Clean Code 應該長成什麼樣子,有什麼好處,以及學習撰寫Clean Code的基本原則。

最早知道這本書大約是前年 Ringle 已購買的原版書籍,並發現他常在課堂教授的空檔就津津有味地細讀該書,我想會吸引他如此認真閱讀絕對非同小可。不過當時我拿來略翻一下,有太多生活化的白話字彙 (如同極致軟體系列,但卻又更厚上太多),要翻查這些生字太吃力了些,故而放棄閱讀原文。沒想到國內出版社今年有相中該書,將之翻成中譯本,而且許多專業字彙還保留了原文的對應 (我很習慣軟體的原文字彙),讓我得以在兩個星期內就看完本書,而且到第10章以前 (約一半),可是逐字細讀。第10章以後,總感覺有些雜燴,有些是其他作者的論文,有些是原作者早期的文章,有許多主題已經是偏向程式開發領域的技術性議題,用來解釋「Clean Code」,我是覺得反而沒必要細讀,大略知道本意即可。

當時 Ringle 告訴我 Clean Code 的原則就是:每一個函式 (function, or method),不超過10行,最好是5行以內。天啊,這讓我很難以想像,我知道函式不能肥大,也不要有一堆的 if-then-else or switch 之類的判斷式,但如何縮短為只有10行以內的寫作,我也很難理解。不過細讀本書內容之後,總算能瞭解要如何作,當然,你更應該體會為何要這麼作。

簡而言之,程式寫作是一門「craftsmanship」,我還蠻喜歡中譯本將之翻為「工藝典範」。它既要精確,卻也期望將程式寫作昇華為具有美感的作品。我覺得,稍具有良心與審美觀的程式設計師,絕對不是只有滿足於「可以執行程式」。寫出來程式往往只是起點而已,持續不斷地精煉 (也就是重構),讓程式整潔,軟體才有可能具彈性與維護性。往往程式設計師只滿足於讓程式「順利運作」的狀態,有經驗豐富 (還有良心)的程式設計師,知道那其實是一種專業上的自殺行為。

所以,事實上,寫程式就如同寫散文一般,程式寫得艱澀冗長讓人無法理解,就代表散文寫作能力不佳。程式設計大師不認為他們在寫程式,而是在說故事。大師利用所選定的程式語言機制,來幫助建造更豐富更具表達力的語言,讓這個語言可以用來說故事。而簡短的函式,有意義的命名,以及漂亮的結構,則都有助於描述故事。

閱讀全文 »

開放「Excel 即時報價暨分析圖表」小型程式交易委製開發專案

*** 現因個人已轉至 Multicharts 交易系統,小型程式交易委製已停止 ***

※ 參考委託案例
 o 聊聊 C# 實作 Excel 選擇權報價交易系統
 o [交易系統] C#.NET 開發海外期貨部位策略管理系統

由於常接收到諸多欲作程式化交易的讀者來電或來信詢問,原來不便接受個人化的委製開發,不過經與所屬顧問團隊負責人討論之後,同意可將視其為小型化的專案 (project),以服務有實際需求的個人用戶。

開發週期係以「週」為開發單位,並視所需完成的功能來報價計費。最短一週、一般這類小型化專案不致超過一個月。(當然仍需視系統的複雜度來決定,若為企業層級的系統,則另行專案處理。)

接收即時性的報價源與圖表分析的處理,會以 Excel 作為主要的界面,畢竟這仍是最普及、且易於與各券商的報價系統連結的應用系統。

其實利用 Excel 非作為程式化交易 (即自動化的下單),而是善用 Excel 的特長:統計分析,然後再作為決策判斷的交易系統。

所以要打造 Excel 成為個人化的即時性決策系統,會需要完成三大部分:即時報價源、分時資料紀錄、圖表分析

一、即時報價源:

一般 Excel 會透過 DDE or RTD 連結券商所提供的免費報價系統,僅需透過連結字串與 Excel 儲存格的對應,即可以取得即時性的報價資料,參考如下圖。
報價資料即時接收

少數用戶可能會透過更穩定的專線或特定的傳輸協定,來連結券商的報價系統。此時就必須參考券商所提供的傳輸協定,來撰寫連結資料的 Data Adapter。

閱讀全文 »

[HSDc. 讀書會] 無瑕的程式碼 (Clean Code)

報名請至: http://www.hsdc.com.tw/course/reading_meeting_20130518

研討書籍:無瑕的程式碼:敏捷軟體開發技巧守則 (中譯本)
原文:《Clean Code: A Handbook of Agile Software Craftsmanship

o 報名費用 :免費。自行於當場點餐、下午茶點或飲料即可。
o 日期:2013/05/18 (星期六) AM 10:30 ~ PM 16:30
o 地點:加爾第咖啡莊敬店。北市信義區吳興街269巷1弄21號
    電話:(02) 2345-1136
    http://kaldi-coffee.com.tw/mainwebsite/about4_a.html

這是一本好書。透過從程式碼的簡潔撰寫原則與不斷精煉的過程中,得以反思軟體設計關於結構設計上的議題。

我們希望與會學員們起碼約略有翻閱過該書,但不需要全部看完。只要針對書本內任一章節,可以作心得分享,甚或問題提問討論即可。

我們希望是以相當輕鬆的態度來參與讀書研討。重要的是分享,甚或是提出問題一同討論,這才會是舉辦讀書會的意義所在。

***
請注意,由於需要保留及計算報名學員們的座位,請確定會前來參加後才填寫報名單,若不克前來,也請於報名表單或來信取消報名。

※ HSDc. 團隊主要成員均會參與,並歡迎接受提問。

o 對象:對軟體設計相關議題有興趣者,包括在職軟體開發人員及相關資訊科系講師及學生等。
o 主辦單位:HSDc 軟體設計顧問中心。
o 備註:
 o 本次讀書會預計開放 24 個名額。(額滿即停止報名)
 o 如因故未能參與,請取消報名,以免影響其他學員權益。
 o 請自行攜帶讀書會研討相關書籍。

§ 書籍大綱

閱讀全文 »

[好文分享] 奮起湖的哭聲~令人感動的忠犬故事

看到這一篇短文,讓我不禁淚目盈眶。感動之餘,也罕見的將此篇文章完整納入我個人部落格珍藏。連著看了兩次,作者的文筆平實卻又能歷歷在目的呈現出忠犬「阿桑」被遺棄卻痴痴等待在「奮起湖」停車場的故事。

看到忠犬「阿桑」,也讓我馬上聯想到我的玄鳳鳥寶-粉圓,牠的世界真的就是繞著以主人為中心。只要看到我一定要掙著到我身邊才安心,硬關在陽台大鳥籠時,牠就會隔著紗窗一直望著我;把粉圓放出來到我書桌椅子上後,待牠「度咕」打瞌睡時,我只是到客廳泡杯熱咖啡,牠一沒看到我就緊張萬分,四處張望直著哀號驚懼聲。

天啊,這些這麼對主人如此依賴忠心的寵物,為何還會有人要遺棄牠們啊!?就如文中所述,如果牠們是人有想法,是不是在想說,「主人為什麼不要我了?」

「奮起湖的哭聲」插圖-蘇力卡繪圖
「奮起湖的哭聲」插圖-蘇力卡繪圖

閱讀全文 »

[文摘] 吳清源梅與蘭芳論述棋道及帶給的啟發

原文的標題是這樣:吳清源梅蘭芳論的是棋道 但給予的啟發又不僅僅侷限於棋道

個人覺得寫得很好,有些關於 吳清源 的軼事,以前在所閱讀書籍並未看到,故此特別摘錄備存。

其實關於「吳清源」與「梅蘭芳」相遇的軼事,我曾在「天外有天 (作者:吳清源)」一書中有看到「吳清源」提及過,一次是在孩提時期,另一次則是吳赴日已成為知名棋手時,「梅蘭芳」到日本公演時兩人再次相遇並聊起以前往事的描述。

不過我倒是沒看到有這段從「梅蘭芳」的口述,說他曾經在「北京」看過吳孩提時期與一位老先生的對局,而且已事隔30年,「梅蘭芳」竟然還可以記得這麼一清二楚,當時吳可還是一位12歲的孩童而已啊,而「梅蘭芳」卻已是國劇當代名伶,是最頂尖的一把交椅,卻對吳是如此的印象深刻,實在令人佩服與尊敬。

一位是古往今來的圍棋不出世大天才,一位是承上啟下的京劇大師,兩人相差30歲,卻是如知己般惺惺相惜。

兩人對所謂的「棋道」所延伸的義理有著一致性的見解,除了學習與模仿之後,再來就是要有自己「高度的思想」,還要有相當的「力量」從現實中實踐之。我認為這也是「知行合一」體踐的最好詮釋。

閱讀全文 »

軟體思維顧問

專職軟體輔導與教育訓練的獨立顧問。輔導企業資訊單位如何有效組織系統開發與維護;輔導開發人員達成有效的專業分工。傳授如何把軟體作軟 (Keeping Software Soft)的技能,得以提昇系統的彈性/延展,並進而創造系統的再利用價值。

Personal