Clean code - Uncle Bob演講的一些心得記錄

揚-avatar-img
發佈於讀後感
更新於 發佈於 閱讀時間約 4 分鐘


前言

目前手邊工作上,與其說是開發新功能,大多時候比較常是優化原有的功能,順便修正以前留下來的bug,因此解讀前人的程式碼、留不留註解、如何讓程式寫的更"乾淨"一點等常見的問題一件一件浮上檯面。

說是這麼說,最根本的出發點其實只是因為我比較"懶",太多類似的業務邏輯其實只是換個名子,一個一個實作出來實在有點像是土法煉鋼。畢竟,軟體設計終究得思考一件事--程式碼的重用性。

這篇只有對演講的其中一部份摘要記錄,再加上自己的心得,不會著重clean code一書中歸納出的一些規則,如SOLID。

為什麼要寫乾淨的程式碼?

從反面來看,寫的雜亂的程式碼光是要看懂就耗費很大的心力,更不用說還要修改、加上新功能。

這部分最直接影響的就是程式的可讀性,而達成可讀性提升的方法來自於良好的命名:包含給予變數、函數一個可以清楚描述自己本身的一個名子。

每個函數要盡可能小,小到一次只做一件事。

客觀的"一件事"可以透過IDE提取方法將函式(方法)抽出來,直到不能再抽出來為止。

以下為原文做重點式摘錄

why clean code?

  • Why are programmers so slow?
  • fast leads the mess
  • mess slows down the productivity
  • add more people
  • old code trains the new people
  • desire to go fast makes the mess
  • once the code works, it would be the mess, so clean it!
The only way to go fast is to go well.
  • Your job is to write the code that other people can maintain and reuse.
  • construct well written prose from the names of the variables and functions
  • make functions smaller
  • function are extracted until it cannot be extracted
  • semantic function tree follow by name
  • return a value will not change the state in convention. No side effect.

看完後的延伸方向

  • Functional Programming
  • Object Oriented Programming
  • Design Pattern
  • Test Driven Development
  • Refactoring
avatar-img
13會員
65內容數
遇到的坑、解過的題、新知識的探索、舊時代的遺毒!? 工作後我發現,文件更新往往跟不上新需求的更迭,犯錯的歷史總是不斷重演。因此,我改變了方式,蒐集從程式上、系統上的每一次異常處理過程,好讓再次遇到相同的問題時能快速應變。此專題就是我的錯題本,期待日後不管在工作上或交流上遇到難題,都能輕鬆地應答:有什麼難的,我都踩過。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
Err500 的其他內容
剛結束公司的內部訓練,對我自己來說,收穫最多的部分並不是來自課程內容,反而是與一同參加課程,來自各部門、不同學經歷的同事們的交流閒談,看看從不同背景、不同角度看待同一件事情,會出現哪些自己從來沒發現過的盲點。
僅就自身的經驗作為心得記錄,並不適用於每個人,請斟酌參考。 畢業於理工科系,最初接觸的程式語言不是現在人人推前後端都能做的javascript,也不是初學易懂好上手應用廣的python,而是如同傳統企業核心用COBOL、Java,理工科入門語言--fortran。
兩年前第一次在誠品打開斜槓青年這本書,當時是為了找日本語gogogo系列以及python相關書籍,經過暢銷書促銷區便隨手拿起翻翻。在那之前早在youtube上看過各式各樣的說書,花了兩小時讀完後,有種相見恨晚之感,因為發現作者許多思維與自己相似,並且以更精煉、更明確的字句闡述,也串聯起以往在不同領域
寫在前面 會想找這本書來看並不是路過翻翻,在FB上曾掃到此書的推薦,又在youtube上看玩說書的影片,才決定路過書店時拿來看看。一共花了兩天,合計大約4小時看完,算是一本需要稍微停下來好好消化一番的書。
下了班經過書店,拿了幾本書,掃過前言跟目錄後就決定把這本書給繼續看下去。 腦科學的書呈現上通常都是類似的方式,講述記憶的運作、腦的組成連結、以及多個研究實證例子,有些雖然舉例生活化,可是理論枯燥乏味。然而本書編排上有些刻意營造的"巧思",讓你從頭看到尾才會發現其中的意義。
你或許聽過只要每天進步1%,一年後就會有37倍的成長,可是如果每天退步一點點,結果只會剩下原本的0.03。所以要透過持之以恆的進步,讓時間複利產生驚人的成果。哦...真的是這樣?
剛結束公司的內部訓練,對我自己來說,收穫最多的部分並不是來自課程內容,反而是與一同參加課程,來自各部門、不同學經歷的同事們的交流閒談,看看從不同背景、不同角度看待同一件事情,會出現哪些自己從來沒發現過的盲點。
僅就自身的經驗作為心得記錄,並不適用於每個人,請斟酌參考。 畢業於理工科系,最初接觸的程式語言不是現在人人推前後端都能做的javascript,也不是初學易懂好上手應用廣的python,而是如同傳統企業核心用COBOL、Java,理工科入門語言--fortran。
兩年前第一次在誠品打開斜槓青年這本書,當時是為了找日本語gogogo系列以及python相關書籍,經過暢銷書促銷區便隨手拿起翻翻。在那之前早在youtube上看過各式各樣的說書,花了兩小時讀完後,有種相見恨晚之感,因為發現作者許多思維與自己相似,並且以更精煉、更明確的字句闡述,也串聯起以往在不同領域
寫在前面 會想找這本書來看並不是路過翻翻,在FB上曾掃到此書的推薦,又在youtube上看玩說書的影片,才決定路過書店時拿來看看。一共花了兩天,合計大約4小時看完,算是一本需要稍微停下來好好消化一番的書。
下了班經過書店,拿了幾本書,掃過前言跟目錄後就決定把這本書給繼續看下去。 腦科學的書呈現上通常都是類似的方式,講述記憶的運作、腦的組成連結、以及多個研究實證例子,有些雖然舉例生活化,可是理論枯燥乏味。然而本書編排上有些刻意營造的"巧思",讓你從頭看到尾才會發現其中的意義。
你或許聽過只要每天進步1%,一年後就會有37倍的成長,可是如果每天退步一點點,結果只會剩下原本的0.03。所以要透過持之以恆的進步,讓時間複利產生驚人的成果。哦...真的是這樣?
你可能也想看
Google News 追蹤
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
Thumbnail
本文探討了不同情境下優化代碼的建議。透過實際的代碼示例,幫助程式設計師提升程式碼的可讀性和可維護性,適合各類型開發人員參考與應用。
Thumbnail
改稿真的不是一件需要太多情緒的事,把錯的挑出來、改掉,就這麼簡單!很少有什麼「大錯」需要去爭執誰對誰錯。不過真的滿多時候鬼遮眼或是偶爾真的會發生某種「明明前一版是對的,這一版居然是錯的」的鬼故事,把問題找出來解決就好!
Thumbnail
如何提升效率?從職場到生活,運用「標準作業程序」(SOP)讓你不再手忙腳亂。 學會打造你的「高效SOP」,告別瞎忙人生,迎接更從容自在的工作與生活吧!
你是否曾在面對複雜任務時感到無助? 你是否想要找到讓工作更有效率的方式? 我將會告訴你一個神奇的公式: 複雜的事簡單做,簡單的事重複做。   ★新手學習地圖 以一個工程師來說, 他的工作充滿了許多複雜性, 如項目規劃,作業安排,問題解決等等。 那他是如何簡單化這些複雜的任務的呢?
Thumbnail
當你剛進入職場時,可能會覺得工作效率低,事情多且繁瑣。這篇文章提供了3種簡單的優化方法:模板化、流程化和清單化,可以幫助你顯著提高工作效率。
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
資料的統合 在程式設計中,其他人通常關心是否注意到執行的細節。作為程式設計師,主要應該關心的是程式的表現,但往往忽略了很多細節,這些細節可以決定程式的好壞。程式的好壞很大程度上取決於資料的統合,也就是資料是否被正規化。 不同類型的資料在系統中呈現一致 正規化可能對一些人來說聽起來很抽象,有些人
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
軟體開發中,我們經常會遇到各種令人抓狂的設計問題。有時候是趕進度的壓力讓我們妥協了設計質量;有時候是忽略了好的設計原則,結果掉進了各種反模式的坑裡。今天我們來繼續聊聊幾個常見的反模式。 寫死 Hard Code 直接將資料值或邏輯硬寫死在程式碼裡,當需求變更時,修改這些 Hard Code
Thumbnail
本文探討了不同情境下優化代碼的建議。透過實際的代碼示例,幫助程式設計師提升程式碼的可讀性和可維護性,適合各類型開發人員參考與應用。
Thumbnail
改稿真的不是一件需要太多情緒的事,把錯的挑出來、改掉,就這麼簡單!很少有什麼「大錯」需要去爭執誰對誰錯。不過真的滿多時候鬼遮眼或是偶爾真的會發生某種「明明前一版是對的,這一版居然是錯的」的鬼故事,把問題找出來解決就好!
Thumbnail
如何提升效率?從職場到生活,運用「標準作業程序」(SOP)讓你不再手忙腳亂。 學會打造你的「高效SOP」,告別瞎忙人生,迎接更從容自在的工作與生活吧!
你是否曾在面對複雜任務時感到無助? 你是否想要找到讓工作更有效率的方式? 我將會告訴你一個神奇的公式: 複雜的事簡單做,簡單的事重複做。   ★新手學習地圖 以一個工程師來說, 他的工作充滿了許多複雜性, 如項目規劃,作業安排,問題解決等等。 那他是如何簡單化這些複雜的任務的呢?
Thumbnail
當你剛進入職場時,可能會覺得工作效率低,事情多且繁瑣。這篇文章提供了3種簡單的優化方法:模板化、流程化和清單化,可以幫助你顯著提高工作效率。
上一篇主要在說如何做決定的,這篇就來寫寫面試前該做什麼準備。
Thumbnail
追求乾淨的程式碼是好的開始,但不要陷入過度設計的陷阱,導致程式難以維護。實際上,考慮團隊狀況和專注於解決真正的問題更為重要。了解公司的規模和現實情況,適時調整工作重心。技術不斷進步,使得寫程式變得更加容易,但這並不意味著工程師的角色會消失。在選擇技術時,也要考慮隱形成本有時簡單的解決方案反而更有效。
Thumbnail
資料的統合 在程式設計中,其他人通常關心是否注意到執行的細節。作為程式設計師,主要應該關心的是程式的表現,但往往忽略了很多細節,這些細節可以決定程式的好壞。程式的好壞很大程度上取決於資料的統合,也就是資料是否被正規化。 不同類型的資料在系統中呈現一致 正規化可能對一些人來說聽起來很抽象,有些人