Enviar pesquisa
Carregar
使用 switch/case 重構程式碼
•
17 gostaram
•
8,589 visualizações
Weizhong Yang
Seguir
KKBOX 內部分享
Leia menos
Leia mais
Software
Vista de apresentação de diapositivos
Denunciar
Compartilhar
Vista de apresentação de diapositivos
Denunciar
Compartilhar
1 de 19
Baixar agora
Baixar para ler offline
Recomendados
Mixing Objective-C, Swift and Japan
Mixing Objective-C, Swift and Japan
TingTzu Chang
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
Weizhong Yang
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
Weizhong Yang
Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
Java Virtual Keyboard Using Robot, Toolkit and JToggleButton Classes
Java Virtual Keyboard Using Robot, Toolkit and JToggleButton Classes
Abdul Rahman Sherzad
Introduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
用 Kotlin 做自動化工具
用 Kotlin 做自動化工具
Shengyou Fan
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Weizhong Yang
Recomendados
Mixing Objective-C, Swift and Japan
Mixing Objective-C, Swift and Japan
TingTzu Chang
給 iOS 工程師的 Vue.js 開發
給 iOS 工程師的 Vue.js 開發
Weizhong Yang
給 iOS 工程師的 Flutter 開發
給 iOS 工程師的 Flutter 開發
Weizhong Yang
Flutter 踩雷心得
Flutter 踩雷心得
Weizhong Yang
Java Virtual Keyboard Using Robot, Toolkit and JToggleButton Classes
Java Virtual Keyboard Using Robot, Toolkit and JToggleButton Classes
Abdul Rahman Sherzad
Introduction to Kotlin coroutines
Introduction to Kotlin coroutines
Roman Elizarov
用 Kotlin 做自動化工具
用 Kotlin 做自動化工具
Shengyou Fan
導入 Flutter 前你應該知道的事
導入 Flutter 前你應該知道的事
Weizhong Yang
Golang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
Burp plugin development for java n00bs (44 con)
Burp plugin development for java n00bs (44 con)
Marc Wickenden
How to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App Testing
Daniel Knott
DBI-Assisted Android Application Reverse Engineering
DBI-Assisted Android Application Reverse Engineering
Sahil Dhar
Learn flask in 90mins
Learn flask in 90mins
Larry Cai
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
Jérôme Petazzoni
Page Object in XCUITest
Page Object in XCUITest
Jz Chang
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
NAVER D2
Container based android
Container based android
Lihan Chen
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
정민 안
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Ravi Soni
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Svetlin Nakov
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
Linaro
Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
An Abusive Relationship with AngularJS
An Abusive Relationship with AngularJS
Mario Heiderich
USB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device Framework
Macpaul Lin
Android Booting Scenarios
Android Booting Scenarios
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
Using the Splunk Java SDK
Using the Splunk Java SDK
Damien Dallimore
Android Internals
Android Internals
Opersys inc.
Flutter BLE
Flutter BLE
Weizhong Yang
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
Weizhong Yang
Mais conteúdo relacionado
Mais procurados
Golang Project Layout and Practice
Golang Project Layout and Practice
Bo-Yi Wu
Burp plugin development for java n00bs (44 con)
Burp plugin development for java n00bs (44 con)
Marc Wickenden
How to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App Testing
Daniel Knott
DBI-Assisted Android Application Reverse Engineering
DBI-Assisted Android Application Reverse Engineering
Sahil Dhar
Learn flask in 90mins
Learn flask in 90mins
Larry Cai
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
Arawn Park
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
Jérôme Petazzoni
Page Object in XCUITest
Page Object in XCUITest
Jz Chang
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
NAVER D2
Container based android
Container based android
Lihan Chen
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
정민 안
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Ravi Soni
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Svetlin Nakov
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
Linaro
Composer 從入門到實戰
Composer 從入門到實戰
Shengyou Fan
An Abusive Relationship with AngularJS
An Abusive Relationship with AngularJS
Mario Heiderich
USB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device Framework
Macpaul Lin
Android Booting Scenarios
Android Booting Scenarios
Amr Ali (ISTQB CTAL Full, CSM, ITIL Foundation)
Using the Splunk Java SDK
Using the Splunk Java SDK
Damien Dallimore
Android Internals
Android Internals
Opersys inc.
Mais procurados
(20)
Golang Project Layout and Practice
Golang Project Layout and Practice
Burp plugin development for java n00bs (44 con)
Burp plugin development for java n00bs (44 con)
How to Break your App - Best Practices in Mobile App Testing
How to Break your App - Best Practices in Mobile App Testing
DBI-Assisted Android Application Reverse Engineering
DBI-Assisted Android Application Reverse Engineering
Learn flask in 90mins
Learn flask in 90mins
코틀린 멀티플랫폼, 미지와의 조우
코틀린 멀티플랫폼, 미지와의 조우
Immutable infrastructure with Docker and containers (GlueCon 2015)
Immutable infrastructure with Docker and containers (GlueCon 2015)
Page Object in XCUITest
Page Object in XCUITest
[131]chromium binging 기술을 node.js에 적용해보자
[131]chromium binging 기술을 node.js에 적용해보자
Container based android
Container based android
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Let'Swift 2023 iOS 애플리케이션 개발 생산성 고찰 - 정시 퇴근을 위해 우리는 어떻게 해야할 것인가?
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Maven Zero to Hero with AWS CodeCommit, CodeArtifact, ECR, OWASP Dependency ...
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
Cryptography for Java Developers: Nakov jProfessionals (Jan 2019)
BUD17-310: Introducing LLDB for linux on Arm and AArch64
BUD17-310: Introducing LLDB for linux on Arm and AArch64
Composer 從入門到實戰
Composer 從入門到實戰
An Abusive Relationship with AngularJS
An Abusive Relationship with AngularJS
USB Specification 2.0 - Chapter 9 - Device Framework
USB Specification 2.0 - Chapter 9 - Device Framework
Android Booting Scenarios
Android Booting Scenarios
Using the Splunk Java SDK
Using the Splunk Java SDK
Android Internals
Android Internals
Mais de Weizhong Yang
Flutter BLE
Flutter BLE
Weizhong Yang
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
Weizhong Yang
關於延長役期這件事情
關於延長役期這件事情
Weizhong Yang
Dart null safety
Dart null safety
Weizhong Yang
Github Actions
Github Actions
Weizhong Yang
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
Weizhong Yang
CocoaPods private repo
CocoaPods private repo
Weizhong Yang
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
Weizhong Yang
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
Weizhong Yang
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
Weizhong Yang
貪食蛇
貪食蛇
Weizhong Yang
Aspect Oriented Programming
Aspect Oriented Programming
Weizhong Yang
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Weizhong Yang
Html 5 native drag
Html 5 native drag
Weizhong Yang
Retina mac
Retina mac
Weizhong Yang
Python 的文件系統
Python 的文件系統
Weizhong Yang
Input Method Kit
Input Method Kit
Weizhong Yang
Refactoring
Refactoring
Weizhong Yang
Core animation
Core animation
Weizhong Yang
Mais de Weizhong Yang
(19)
Flutter BLE
Flutter BLE
怎樣在 Flutter app 中使用 Google Maps
怎樣在 Flutter app 中使用 Google Maps
關於延長役期這件事情
關於延長役期這件事情
Dart null safety
Dart null safety
Github Actions
Github Actions
iPlayground: CarPlay and MFI Hearing Aids
iPlayground: CarPlay and MFI Hearing Aids
CocoaPods private repo
CocoaPods private repo
那些年被蘋果 Ban 掉的 API
那些年被蘋果 Ban 掉的 API
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
苦集滅道:透過開發客製 Sketch Plug-in 改善產品設計流程
怎樣寫出比較沒有問題的 Code
怎樣寫出比較沒有問題的 Code
貪食蛇
貪食蛇
Aspect Oriented Programming
Aspect Oriented Programming
Mac OS X 與 iOS 的 Audio API
Mac OS X 與 iOS 的 Audio API
Html 5 native drag
Html 5 native drag
Retina mac
Retina mac
Python 的文件系統
Python 的文件系統
Input Method Kit
Input Method Kit
Refactoring
Refactoring
Core animation
Core animation
使用 switch/case 重構程式碼
1.
Switch/Case Fika Time zonble
2.
很多時候你不該⽤用 Boolean,⽽而是 Enum
3.
你真的需要 這麼多 Boolean 嗎?
4.
其實你需要的是 Enum
5.
其實你需要的是 Enum • ⼀一起聽只有:未連線、台長、聽眾,三種狀狀態 •
⽤用三個 Bool 會變成八種狀狀態,但有五種狀狀態不可能出現 • 如果進入這五種狀狀態,就是 Bug
6.
⼀一個需要分段載入的畫⾯面 ⽤用了了多個 Bool 表⽰示「是否初次載入」、 「是否載入中」、「是否還需要改入更更多資料」…
7.
⼀一個需要分段載入的畫⾯面
8.
需求往往不是⼀一次提出來來的… • ⼀一開始沒做載入中動畫,為了了呈現載入進度,所以多⼀一個 Bool 判斷… •
⼀一開始沒做錯誤處理理,為了了呈現錯誤,所以多⼀一個 Bool 判 斷… • ⼀一開始沒做 Empty Set,所以多⼀一個 Bool 判斷… • 但,放任歷史的遺跡殘留留,就會讓程式碼失控
9.
UI Stack •Ideal State •Empty
State •Error State •Partial State •Loading State
10.
⼀一個需要分段載入的畫⾯面
11.
加上⼀一點 Swift 特性
12.
⼀一個需要分段載入的畫⾯面
13.
⼀一個需要分段載入的畫⾯面
14.
測試 case 也好寫了了 •
測試某些 Action 是否會讓畫⾯面進入某個 State • 測試某個 State 下 Layout 出來來的畫⾯面是否符合預期
15.
歌曲辨識 其實就是: Empty State Loading State Ideal
State Error State
16.
什什麼可以⽤用 Switch/Case 改寫?
17.
FizzBuzz
18.
根據不同時段給不同圖片
19.
Tuple
Baixar agora