| 程式學習 | 程式語言 | 林信良 | 程式人 | C++ | 傳遞函式 | 函子 | Functor | lambda運算式 | 函式物件

從C++看一級函式

在程式語言C++當中,關於函式的傳遞,目前有很多種可行的作法,而依照開發者當下應用目的不同,函式指標、函子、lambda運算式,都可以是選擇

2020-03-05

| 程式學習 | 林信良 | 程式人 | Pass by value | 傳值 | 傳參 | Pass by reference | C++ | Java

傳值?傳參?

在不同的程式語言當中,若剛好有同名的術語存在,應該搞清楚它在該語言中確切的定義,而不是硬用其他語言中的定義,甚至是不清楚來源的名詞來理解。

2020-02-27

| C++ | Unicode | 程式學習 | 林信良 | 程式人

C++與Unicode

在C++中wchar_t、char16_t、char32_t用於儲存Unicode碼點,char用於儲存UTF編碼實現的碼元,若能清楚掌握何者為儲存碼點,何者是字元編碼實現,就能釐清之間的差別

2020-02-13

| Go | Unicode | UTF | 程式開發 | 程式學習 | 程式人 | 林信良

從Go學Unicode、UTF

在多國語言的編碼上,很多人看到Unicode、UTF,總感到難以區分,因為程式語言隱藏了處理細節,並且對於這部份的定義很模糊,此時,不妨從Go的相關套件著手,也有助於理解之間的差異

2020-01-23

| 鴨子定型 | Duck typing | Go語言

有個性的Go鴨子

編譯時期的鴨子定型,代表著開發者對於型態的掌握,實際上還是有其必要的,因為,如此才能知道複雜度被藏在哪裡,以及問題會發生在編譯時期或執行時期

2020-01-16

| 程式語言 | Go | 函式錯誤 | 錯誤處理

Go的錯誤處理實踐

表面上,程式語言Go以值傳回錯誤的作法,會造成程式碼中四處檢查錯誤的麻煩,實際上,這麼做可以帶來更多的設計方式,讓你優雅地處理錯誤

2020-01-09

| 林信良程式人程式開發程式學習 | JavaScrip | 函數式

解開對函數式的誤解

使事情單純化,是傳遞函式的目的之一,若要強制開發者寫出意圖單一、實作單純的簡明函式,我們在實作時會採用不可變特性,而這麼做的最重要目的,在於釐清副作用函式與純函式的界線

2019-12-26

| 網頁框架 | React | React 16.8 | Hooks | 定義元件 | 開發 | 程式學習 | 程式人 | 林信良

React的鉤子們!

Hooks是個新的思考方式,熟悉React的開發者定義元件時,應使用函式而非類別來進行,並於開頭使用適當的鉤子「勾取」必要的狀態與副作用邏輯,再定義無狀態的使用者介面呈現邏輯

2019-12-05

| 虛擬DOM | Virtual DOM | React | 瀏覽器 | 渲染機制 | 實現React原型 | 物件樹 | 開發 | 林信良 | 程式人

高效的虛擬DOM?

就瀏覽器處理網頁的過程而言,關於文件物件模型(DOM)的應用方式,其實也是重要的環節之一,而在React框架之中,我們可以運用虛擬DOM解決可能引發的效能問題

2019-11-28

| 身分驗證 | 驗證協定 | OpenID Connect | OAuth2 | 驗證 | 授權 | 程式開發 | 林信良 | 程式人

驗證與授權

關於使用者身分的驗證與授權,因現今的應用程式框架會隱藏許多細節,而很難區隔出兩者的差異。其實,我們可以試著從規範來理解整體流程的運作,更能了解不同安全機制的使用時機

2019-11-24

| 狀態管理 | 有限狀態機 | 程式 | 開發 | 林信良 | 程式人 | 狀態樹 | 狀態物件

有限狀態機與前端

關於狀態管理,不只是前端才會面臨的問題,在後端的部份,也會考量,我們可從有限狀態機的角度,來探討狀態、輸入、規則的定義與組合,最終我們會明白,真正能管理狀態其實是開發者本身

2019-11-14

| HTML | js | spaghetti code | MVC | 關切點分離 | HTML混雜JS | 程式開發 | 林信良 | 程式人

關於HTML與JS混雜這件事

在網頁程式碼的設計上,分離HTML與JS現在是許多開發者會被要求做到的,但光是這麼做,並不等於關切點分離,因此也衍生了非侵入式JS、前端MVC框架等作法

2019-10-17