DEBUGGING IS TWICE AS
HARD AS WRITING A
PROGRAM IN THE FIRST
PLACE.
Brian Kernighan
"The Elements of Programming Style" (1980)
Slide 3
Slide 3 text
WHY?
Slide 4
Slide 4 text
CODE HAPPINESS
Slide 5
Slide 5 text
CODE EVOLUTION
Slide 6
Slide 6 text
IMPLICIT IMPACT
Slide 7
Slide 7 text
OK, SO?
Slide 8
Slide 8 text
COST
Slide 9
Slide 9 text
TIME
Slide 10
Slide 10 text
QUALITY
Slide 11
Slide 11 text
SO?
Slide 12
Slide 12 text
WHY SUFFER?
Slide 13
Slide 13 text
THIS IS SOFTWARE
Slide 14
Slide 14 text
WE CAN DO
BETTER
Slide 15
Slide 15 text
IMPOSSIBLE
STATES
https://www.youtube.com/watch?list=PLglJM3BYAMPH2zuz1nbKHQyeawE4SN0Cd&v=IcgmSRJHu_8
Slide 16
Slide 16 text
struct Quiz {
let questions: [String]
let answers: [String?]
}
Slide 17
Slide 17 text
struct Quiz {
struct Question {
let text: String
let answer: String?
}
let questions: [Question]
}
Slide 18
Slide 18 text
struct Quiz {
struct Question {
let text: String
let answer: String?
}
let questions: [Question]
let current: Question
}
Slide 19
Slide 19 text
struct Quiz {
struct Question {
let text: String
let answer: String?
}
let previousQuestions: [Question]
let current: Question
let nextQuestions: [Question]
}
Slide 20
Slide 20 text
INTENT / ACTION
SEPARATION
Slide 21
Slide 21 text
class APIClient {
func requestQuiz() -> Future
}
let apiClient = APIClient() // or DI
var quiz: Quiz?
func refreshQuiz() {
apiClient.requestQuiz().onComplete {
quiz = $0
}
}
struct Quiz {
struct Question {
let text: String
let answer: String?
}
let previousQuestions: [Question]
let current: Question
let nextQuestions: [Question]
}
Slide 36
Slide 36 text
class ViewController: UIViewController {
var quiz: Quiz?
}
Slide 37
Slide 37 text
class ViewController: UIViewController {
struct Props {
let questions: [(
text: String, isAnswered: Bool
)]
}
}