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
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Johnny Lin
September 05, 2022
Programming
0
140
Clean Code
Johnny Lin
September 05, 2022
Tweet
Share
More Decks by Johnny Lin
See All by Johnny Lin
初探Rust.pdf
johnny178
0
120
Other Decks in Programming
See All in Programming
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
600
Data-Centric Kaggle
isax1015
2
770
CSC307 Lecture 08
javiergs
PRO
0
670
Grafana:建立系統全知視角的捷徑
blueswen
0
330
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
ThorVG Viewer In VS Code
nors
0
770
AIエージェント、”どう作るか”で差は出るか? / AI Agents: Does the "How" Make a Difference?
rkaga
4
2k
疑似コードによるプロンプト記述、どのくらい正確に実行される?
kokuyouwind
0
380
フロントエンド開発の勘所 -複数事業を経験して見えた判断軸の違い-
heimusu
7
2.8k
AI Schema Enrichment for your Oracle AI Database
thatjeffsmith
0
250
AI時代のキャリアプラン「技術の引力」からの脱出と「問い」へのいざない / tech-gravity
minodriven
20
7k
MUSUBIXとは
nahisaho
0
130
Featured
See All Featured
Product Roadmaps are Hard
iamctodd
PRO
55
12k
Optimizing for Happiness
mojombo
379
71k
Code Reviewing Like a Champion
maltzj
527
40k
Claude Code のすすめ
schroneko
67
210k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
First, design no harm
axbom
PRO
2
1.1k
Building AI with AI
inesmontani
PRO
1
690
Building Adaptive Systems
keathley
44
2.9k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
2
3.6k
Designing Powerful Visuals for Engaging Learning
tmiket
0
230
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
110
The AI Revolution Will Not Be Monopolized: How open-source beats economies of scale, even for LLMs
inesmontani
PRO
3
3k
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