Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Clean Code
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Johnny Lin
September 05, 2022
Programming
150
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Clean Code
Johnny Lin
September 05, 2022
More Decks by Johnny Lin
See All by Johnny Lin
初探Rust.pdf
johnny178
0
130
Other Decks in Programming
See All in Programming
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
930
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
620
技術的負債解消で開発者の未来を開く- AIの力でコード刷新
kmd2kmd
0
130
これからAgentCoreを触る方へトレンドはGatewayです
har1101
6
450
AI時代のUIはどこへ行く?その2!
yusukebe
22
7.7k
ローカルLLMを使ってB2Bサービスを作っていての学び
yaotti
0
220
作って学ぶ、 JSX (TSX) ランタイムの基本
syumai
7
1.7k
セキュリティの専門家じゃなくてもできる。「セキュリティ意識」をアップデートして サプライチェーン攻撃への耐性を高めよう。
tk3fftk
5
1k
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
380
1B+ /day規模のログを管理する技術
broadleaf
0
120
スマートグラスで並列バイブコーディング
hyshu
0
270
エンジニアと一緒にテストコードの設計と実装を改善した話
mototakatsu
0
230
Featured
See All Featured
エンジニアに許された特別な時間の終わり
watany
107
250k
Making the Leap to Tech Lead
cromwellryan
135
9.9k
Art, The Web, and Tiny UX
lynnandtonic
304
22k
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Amusing Abliteration
ianozsvald
1
210
Building AI with AI
inesmontani
PRO
1
1.1k
Reality Check: Gamification 10 Years Later
codingconduct
0
2.2k
JAMstack: Web Apps at Ludicrous Speed - All Things Open 2022
reverentgeek
1
490
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
72
40k
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.9k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
12
1.2k
Imperfection Machines: The Place of Print at Facebook
scottboms
270
14k
Transcript
讓你的Code 更乾淨🧹 Johnny Lin @Anue Tech Sharing, 2022/09/07
1. Clean Code 2. 命名 3. 函式 4. 註解 Outline
什麼是Clean Code? 優雅、簡單、明瞭 沒有重複的程式碼 能通過所有的測試 較少的相依性
Why Clean Code?
閱讀程式碼、寫程式時間比例 -> 10:1
閱讀程式碼、寫程式時間比例 -> 10:1 花時間寫更簡潔的Code >> 日後閱讀與維護
閱讀程式碼、寫程式時間比例 -> 10:1 花時間寫更簡潔的Code >> 日後閱讀與維護
閱讀程式碼、寫程式時間比例 -> 10:1 花時間寫更簡潔的Code >> 日後閱讀與維護 Clean Code is IMPORTANT
有意義的命名
微小差距的名稱: XYZControllerForEfficientHandlingOfString XYZControllerForEfficientStoreageOfString 避免誤導
同時使用小寫L 、大寫O 當變數名稱 避免誤導
IShapeFactory 與ShapeFactory: 多餘的I 字首 簡短且有力、避免多餘的單詞命名
IShapeFactory 與ShapeFactory: 多餘的I 字首 accountData 與account: 多餘的Data 單詞 簡短且有力、避免多餘的單詞命名
讓名稱代表意圖
函式
「關於函式的首要準則,就是要簡短。第二項準則,就是要比第一項的簡短函式還 要更簡短。」 簡短!
僅兩行、三行或四行 每個函式帶領你到下一個函式 「關於函式的首要準則,就是要簡短。第二項準則,就是要比第一項的簡短函式還 要更簡短。」 簡短!
Single Responsibility Principle(SRP) 「函式應該只做一件事。它們應該把這件事做好。而且他們只做這件事。」 只做一件事
Single Responsibility Principle(SRP) 「函式應該只做一件事。它們應該把這件事做好。而且他們只做這件事。」 如何判斷? 只做一件事
A module should have one, and only one reason to
change. Single Responsibility Principle(SRP) 「函式應該只做一件事。它們應該把這件事做好。而且他們只做這件事。」 如何判斷? 只做一件事
A module should have one, and only one reason to
change. 如果我們以文字的方式描述一個函式,看到其中包含了「不同層次」的抽象概念 步驟,就可以判斷這個程式包含了不只一件事。 Single Responsibility Principle(SRP) 「函式應該只做一件事。它們應該把這件事做好。而且他們只做這件事。」 如何判斷? 只做一件事
One thing
1. 判斷此頁面是否為測試頁面 2. 如果是測試頁面的話,則納入設定與拆解步驟 3. 將此頁面轉換為HTML 網頁
一件事還是三件事?
判斷此頁面是否為測試頁面 如果是測試頁面的話,則納入設定與拆解步驟 將此頁面轉換為HTML 網頁 TO RenderPageWithSetupsAndTeardowns 一件事還是三件事?
生活中的例子: 洗澡 只做一件事
「將flag 變數傳遞給函式,等於大聲宣布此函數做超過一件事。」 - Uncle Bob flag 參數
try 開頭,catch/finally 結尾,不含有其他程式碼 「函式只做一件事,而錯誤處理就是一件事」 錯誤處理就是一件事
程式變得擁擠 重複的改變,倍數增長的工時 避免重複的程式碼 不要重複自己 Don't Repeat Yourself(DRY)
註解
用程式碼表達你的本意 「寫註解的其中一個動機,是因為程式碼寫的太糟糕。」 - Uncle Bob 註解無法彌補糟糕的程式碼
在每個檔案的開頭都會寫入著作權聲名 法律型註解 有益的註解
沒辦法使用少量的單字為變數命名,或是用適當的動詞作為函式的命名 對意圖的解釋 有益的註解
docstring 有益的註解
喃喃自語 糟糕的註解
干擾型註解 糟糕的註解
交給Git 被註解的程式碼 糟糕的註解
“The only way to go fast is to go well.“
- Uncle Bob
https://medium.com/%E6%89%8B%E5%AF%AB%E7%AD%86%E8%A8%98/clean-code-index- 51e209cc47db Reference
Thank you for listening