Erlang 程式開發原則:該錯的放它錯

最近工作中暫時停下腳步,因為直覺感覺到:奇怪,為什麼 Erlang 程式寫一寫很難除錯。

我是蠻會使用防禦式程式設計 (defensive programming) 的人,因此有許多錯誤處理的程式。

而最近讀了 Building Web Applications with Erlang (http://shop.oreilly.com/product/0636920021452.do) 一書,讀到一句話說:不要使用防禦式程式設計。

不要忙著寫防止出錯的程式,因為程式往往會執行出錯。就讓它出錯的時候程式當掉。

我想了一想,真的啊,如果一個 server 啟動時會出錯,就應該在一開始就讓它撞到錯誤,而不是放出一個狀態模擬兩可的 server 去挑戰其他的程式。

以下二例互做比較。

%% bad style that a server could fail to initiate.
start_link() ->
    gen_server:start_link({local, ?SERVER}, [], []).
%% good style that let it crashed.
start_link() ->
    {ok, Pid} = gen_server:start_link({local, ?SERVER}, [], []),
    Pid.
廣告

About 黃耀賢 (Yau-Hsien Huang)

熱愛 Erlang ,並且有相關工作經驗。喜歡程式語言。喜歡邏輯。目前用 Python 工作。
本篇發表於 Erlang。將永久鏈結加入書籤。

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s