Folly

A collection of 3 posts
[026] 看 Code 說故事:Facebook Folly(三)- Optional
C++

[026] 看 Code 說故事:Facebook Folly(三)- Optional

先前 [https://samtsai.org/2016/01/22/022-facebook-folly-part-2/]的 Lazy 其中一個特性是:運算式/資源只會被執行/索求一次。實作此特性用到了 Optional,位置: * folly/Optional.h Lazy 實作 operator() 覆載函數如下: result_type& operator()() { if (!value_) value_ = func_(); return *value_; } value_ 可被用來「判斷是否已給值(Function func_ evaluated or not)」,也可用來儲值 func_ 的回傳值。 由此來看,Optional 可以讓原本的型別多了一種「供外界查詢是否已被賦值」的能力。
1 min read
[022] 看 Code 說故事:Facebook Folly(二)- Lazy
C++

[022] 看 Code 說故事:Facebook Folly(二)- Lazy

Facebook C++ library 檔案命名慣例為 FileName.h,也就是 Camel Case [https://en.wikipedia.org/wiki/CamelCase] 命名法,開頭大寫。我目前愛用的命名法是 Google 的 Snake case [https://en.wikipedia.org/wiki/Snake_case],長這樣:file_name.h。 單元測試使用 Google C++ test framework [https://github.com/google/googletest] ,各大開源專案的一致選擇。測試碼統一放在 test 目錄(我覺得複數 tests 較為合適)
3 min read
[021] 看 Code 說故事:Facebook Folly Library(一)
C++

[021] 看 Code 說故事:Facebook Folly Library(一)

Facebook 在 2012 年公開其內部重度使用的 Folly C++ library [http://on.fb.me/1ZEooDe]。快速瀏覽過 Folly 原始碼,發現主要開發人員之一是我稱之為 Template-man 的 Andrei Alexandrescu [https://en.wikipedia.org/wiki/Andrei_Alexandrescu],非人類。 Andrei Alexandrescu 有一本書叫《Modern C++ Design [http://amzn.to/1QmUBi2]》,是我最初接觸 C++ Template 的書,當時看的是侯捷老師的中譯本《C++設計新思維 [http://www.taaze.tw/apredir.
2 min read