·ͣͪ͜ΒͷίʔυΛޚཡ͍ͩ͘͞
First, please take a look at this code…
Slide 21
Slide 21 text
// 1
function sum(x: number, y: number): number {
return x + y;
}
// 2
let i: number = 0;
function sum2(x: number, y: number): number {
i += x + y;
return x + y;
}
// 3
function sum3(x: number, y: number): number {
return x + y + i;
}
// 4
function sum4(x: number, y: number): number {
const result = x + y;
console.log(result);
return result;
}
Slide 22
Slide 22 text
// 1
function sum(x: number, y: number): number {
return x + y;
}
// 2
let i: number = 0;
function sum2(x: number, y: number): number {
i += x + y;
return x + y;
}
// 3
function sum3(x: number, y: number): number {
return x + y + i;
}
// 4
function sum4(x: number, y: number): number {
const result = x + y;
console.log(result);
return result;
}
Ұ͚͕ͭͩ७ਮͳؔͰ͢
ଞશͯʰෆ७ʱͳؔͰ͢
Slide 23
Slide 23 text
// 1
function sum(x: number, y: number): number {
return x + y;
}
// 2
let i: number = 0;
function sum2(x: number, y: number): number {
i += x + y;
return x + y;
}
// 3
function sum3(x: number, y: number): number {
return x + y + i;
}
// 4
function sum4(x: number, y: number): number {
const result = x + y;
console.log(result);
return result;
}
७ਮͳؔͱ
ΓඞͣҾͱͯ͠༩͑ΒΕ͔ͨΒͷΈܭࢉ͞ΕΔ
ؔͷ֎෦Ͱมߋ͞ΕΔՄೳੑͷ͋ΔσʔλʹҰґଘ͠ͳ͍
࣮ؔߦ෦ͷ֎ଆʹଘࡏ͢ΔԿ͔͠Βͷঢ়ଶΛҰมߋ͠ͳ͍
Slide 24
Slide 24 text
// ҾͷΛ͠ࢉ͚ͨͩ͠ ( ७ਮ )
function sum(x: number, y: number): number {
return x + y;
}
// άϩʔόϧมΛมߋ͍ͯ͠Δ
let i: number = 0;
function sum2(x: number, y: number): number {
i += x + y;
return x + y;
}
// Γ͕Ҿ͚ͩ͡Όͳ͘άϩʔόϧมʹґଘͯ͠Δ
function sum3(x: number, y: number): number {
return x + y + i;
}
// console.log ͱ͍͏શʹ֎ͷੈքʹׯবͯ͠Δ
function sum4(x: number, y: number): number {
const result = x + y;
console.log(result);
return result;
}
෭࡞༻Λແͨ͘͢ΊͷୈҰา
The first step to eliminate side effects…
Slide 27
Slide 27 text
෭࡞༻Λແͨ͘͢ΊͷୈҰา
let i: number = 0;
function sum3(x: number, y: number, i: number): number {
return x + y + i;
}
ॲཧʹඞཁͳσʔλશͯҾͱͯ͠ड͚औΔ
άϩʔόϧมҾͱͯ͠ड͚औΕ0,
Slide 28
Slide 28 text
interface User {
firstName: string;
lastName: string;
greet(): string;
}
Slide 29
Slide 29 text
class User {
constructor(private firstName: string, private lastName: string) {}
public updateFirstName(name: string): User {
return new User(name, this.lastName);
}
public updateLastName(name: string): User {
return new User(this.firstName, name);
}
public greet(): string {
return `hello, ${this.firstName} ${this.lastName}!!`;
}
}
Slide 30
Slide 30 text
class User {
constructor(private firstName: string, private lastName: string) {}
public updateFirstName(name: string): User {
return new User(name, this.lastName);
}
public updateLastName(name: string): User {
return new User(this.firstName, name);
}
public greet(): string {
return `hello, ${this.firstName} ${this.lastName}!!`;
}
}
ΦϒδΣΫτ$MBTTͱͯ͠ఆٛ͢Δ
֤ϝιουͷ࠷ޙʹࣗͷ৽͍͠ΠϯελϯεΛΓʹฦ͢
ຖճ৽͍͠ΠϯελϯεΛͦͷ࣌ͷ෦͔Βੜ͢Δ
ݺͼग़͠ͷίϯϑϦΫτ͕ൃੜ͠ͳ͍