但也只是簡單的重點整理,更深入的概念需要寫的程式量是很龐大的,要有足夠的內容才能完整整理一篇出來,我也不確定之後會不會再重新整理一次,總之先為這篇淺薄的內容到一聲歉。
甚麼是一個好的函式?
如何讓一個函式看起來混亂不堪: 一個不夠(明瞭目的)的命名、冗長無包裝的邏輯並且重複,過多不同層級的函式包裝於一籃。
『函式應該做一件事情。它們應該把這件事做好,而且它們應該只做這件事。』
事情是指什麼?
你給他命名的東西,像是 MouseLighting ,就只負責讓鼠標發亮,不會有其他額外的運作。
什麼叫做抽象概念?
這邊做一個舉例,參考書中所說的Ruby使用函式會用 TO,TO (函式名),這代表了你為了做這件事情,而做了哪些動作,這些動作就是抽象概念。
TO MouseLighting ,檢查鼠標是否存在,存在的話就對她進行渲染,渲染完後呈現出來。
什麼是降層準則?
為了讓鼠標發亮,所以要先看鼠標是否存在,再對她進行渲染,最後再把渲染好的鼠標呈現出來。
為了要檢查鼠標存不存在,所以要去做全畫面的檢查。
為了對鼠標進行渲染,要根據所設定好的數值,所以先去查詢目前的數值是甚麼,再進行渲染。
為了要查詢現在的數值是甚麼,所以檢查後回傳。
為了最後的呈現出來…..
為甚麼不要寫巢狀結構?
巢狀結構最直覺的一件事情就是程式很大坨,又長又寬的檢修不好檢,再來是可能間接導致的重複程式碼問題,並且多數時候都會違反上述所說到的抽象概念。
可推薦影片:
使用具描述能力的名稱
『當每個你看到的程式,執行結果都與自己想的差不多,會察覺自己政工作再Clean Code之上。』名稱長具可理解性,比起短並且還要查看來的更好,所以取一個好名字非常的重要。
函式的參數
最理想當然是沒有,盡量不超過2個,如果要使用超過一定要有特殊的原因。
比起毫無參數的函式來說,添加參數的函式會間接的強迫人去了解程式中的細節,並且參數和函式處於不同的抽象層次。
指令和查詢的分離
函式應該要能做某件事,或能回答某個問題,但兩者不該同時發生。你的函式應該修改某物件的狀態,或回傳某些與物件有關的資訊,如果想同時完成兩件事,會讓人感到困惑。