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
レガシーコードの触り方 / Working Effectively with Legacy Code
Search
Takuto Wada
PRO
May 13, 2017
Programming
79
17k
レガシーコードの触り方 / Working Effectively with Legacy Code
オープンセミナー2017@岡山
Takuto Wada
PRO
May 13, 2017
Tweet
Share
More Decks by Takuto Wada
See All by Takuto Wada
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
27
7.4k
ピラミッド、アイスクリームコーン、SMURF: 自動テストの最適バランスを求めて / Pyramid Ice-Cream-Cone and SMURF
twada
PRO
10
1.6k
組織に自動テストを書く文化を根付かせる戦略(2024秋版) / Building Automated Test Culture 2024 Autumn Edition
twada
PRO
15
6k
これまでと違う学び方をしたら挫折せずにRustを学べた話 / Programming Rust techramen24conf LT
twada
PRO
26
23k
開発生産性の観点から考える自動テスト(2024/06版) / Automated Test Knowledge from Savanna 202406 Findy dev-prod-con edition
twada
PRO
33
23k
自動テスト実行結果の目的を整理する / Organizing objectives of automated test results
twada
PRO
14
3.2k
変更容易性と理解容易性を支える自動テスト(2024/02版) / Automated Test Knowledge from Savanna 202402 YAPC::Hiroshima edition
twada
PRO
22
13k
実録レガシーコード改善 / Working with Legacy Code: the True Record
twada
PRO
103
47k
Property-based Testing の位置付け / Intro to Property-based Testing
twada
PRO
11
6.4k
Other Decks in Programming
See All in Programming
サーバーゆる勉強会 DBMS の仕組み編
kj455
1
300
DMMオンラインサロンアプリのSwift化
hayatan
0
190
月刊 競技プログラミングをお仕事に役立てるには
terryu16
1
1.2k
ゼロからの、レトロゲームエンジンの作り方
tokujiros
3
1k
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
9
2.4k
Amazon Nova Reelの可能性
hideg
0
200
Запуск 1С:УХ в крупном энтерпрайзе: мечта и реальность ПМа
lamodatech
0
950
ESLintプラグインを使用してCDKのセオリーを適用する
yamanashi_ren01
2
240
快速入門可觀測性
blueswen
0
500
20年もののレガシープロダクトに 0からPHPStanを入れるまで / phpcon2024
hirobe1999
0
1k
知られざるDMMデータエンジニアの生態 〜かつてツチノコと呼ばれし者〜
takaha4k
1
420
asdf-ecspresso作って 友達が増えた話 / Fujiwara Tech Conference 2025
koluku
0
1.4k
Featured
See All Featured
A designer walks into a library…
pauljervisheath
205
24k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
3
240
How to Think Like a Performance Engineer
csswizardry
22
1.3k
Intergalactic Javascript Robots from Outer Space
tanoku
270
27k
Navigating Team Friction
lara
183
15k
The Cost Of JavaScript in 2023
addyosmani
46
7.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
98
18k
The Cult of Friendly URLs
andyhume
78
6.1k
Imperfection Machines: The Place of Print at Facebook
scottboms
267
13k
Building Applications with DynamoDB
mza
93
6.2k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
47
5.1k
Music & Morning Musume
bryan
46
6.3k
Transcript
ϨΨγʔίʔυͷ ৮Γํ ాਓ !U@XBEB .BZ !ΦʔϓϯηϛφʔԬࢁ
ాਓ JEUXBEB !U@XBEB HJUIVCUXBEB
None
ひとり歩きするスタンド ελϯυ໊ϫΠϧυɾαόϯφ
assert(typeof item.id === 'strong') | | | | | |
| false | | "foo" | Item{id:"foo",name:"bar"} "string" --- [string] 'strong' +++ [string] typeof item.id @@ -1,6 +1,6 @@ str -o +i ng https://github.com/power-assert-js/power-assert power-assert
ΑΖ͓͘͠ئ͍͠·͢
ݱ͔ΒͷதܧͰ͢
ർฐ͖ͬͨ͠ݱ
IUUQTXXXqJDLSDPNQIPUPTPLJOBXBTPCB ߥΈ͖ͬͨίʔυ
രॲཧͷΑ͏ͳϦϦʔε
ͭͷlͳΒΘ͠z
IUUQTXXXqJDLSDPNQIPUPTELBMP lςετΛॻ࣌ؒ͘ͳ͍z
ετϨε ςετ
ࣗಈςετ ετϨε
ςετΛॻ͕࣌ؒ͘ͳ͍ͷͰ ͳ͘ɺςετΛॻ͔ͳ͍͔ Β͕࣌ؒͳ͘ͳΔͷͰ͢ɻ
lಈ͘ίʔυʹ৮ΕΔͳz IUUQTXXXqJDLSDPNQIPUPT!/
&EJU1SBZࢮ͕͍ͬͯΔ
$PWFS.PEJGZ
w ʮςετΛॻ͕࣌ؒ͘ͳ͍ʯͷͰ ͳ͘ʮςετΛॻ͔ͳ͍͔Β͕࣌ؒ ͳ͘ͳΔʯ w ʮಈ͘ίʔυʹ৮ΕΔͳʯͱಆ͏ɻ ৮Βͳ͘ͱपΓ͕มΘͬͯಈ͔ͳ ͘ͳΔɻ৮Εͳ͚Είʔυ؇ ͔ʹࢮΜͰ͍͘ ͭͷʮͳΒΘ͠ʯͱಆ͏
ͭͷlಓ͠Δz
w ʮϨΨγʔίʔυͷδϨϯϚʯ w lίʔυΛมߋ͢ΔͨΊʹςετΛඋ͢Δ ඞཁ͕͋Δɻଟ͘ͷ߹ɺςετΛඋ͢Δ ͨΊʹɺίʔυΛมߋ͢Δඞཁ͕͋Δz w ϨΨγʔίʔυʹ৮ΔͨΊͷ ޠኮͱٕ๏Λཧͨ͠ຊ w
TUBDLPWFSqPXDPN͔Βͷ ඃݴٴୈҐ ϨΨγʔίʔυվળΨΠυ
w ϨΨγʔίʔυվળΨΠυΑΓந ͕ߴ͍ w ιϑτΣΞͷϦΤϯδχΞϦϯάΛߦ ͏ͭͷબࢶΛ͍ࣔͯ͠Δ w ϦϑΝΫλϦϯά w ϦΞʔΩςΫςΟϯά
w ϏοάɾϦϥΠτ ϨΨγʔιϑτΣΞվળΨΠυ
Ͳ͜ʹςετΛ ॻ͍͍͔ͯ͘
ʮ௧ΜͩՕॴʯͱʮख͕ಧ͘Ռ࣮ʯ
w ϦεΫ w खಈςετͷίετ w ࣗಈԽίετ ςετͷτϦΞʔδ
ςετέʔεΛҰཡʹ·ͱΊΔ ςετέʔε σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
ϦεΫΛݟੵΔ ςετέʔε ϦεΫ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ
ৼΓࠐΈͷ֬ೝ
खಈςετͷίετΛݟੵΔ ςετέʔε ϦεΫ खಈςετͷ ίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁ ৽نϢʔβొ
ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
ࣗಈԽίετΛݟੵΔ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ σβΠϯมߋ ηΩϡϦςΟΞϥʔτ औҾཤྺ ޱ࠲ͷౚ݁
৽نϢʔβొ ݕࡧ݁Ռͷฒͼସ͑ ͓ۚͷೖۚ ৼΓࠐΈͷ֬ೝ
༏ઌॱҐΛ͚ͯฒସ͑Δ ςετέʔε ϦεΫ खಈςετͷ ίετ ࣗಈԽίετ ޱ࠲ͷౚ݁ ৼΓࠐΈͷ֬ೝ औҾཤྺ ݕࡧ݁Ռͷฒͼସ͑
͓ۚͷೖۚ ηΩϡϦςΟΞϥʔτ ৽نϢʔβొ σβΠϯมߋ
Ͳ͏ςετΛ ॻ͍͍͔ͯ͘
w ςετ͕ͳ͍ͷطʹઃܭ͕ѱ͍ஹީ w ઃܭ࣮Λม͑Δͷ͕લఏ w ࣮ͷςετΛॻ͔ͳ͍͜ͱ w ςετ͕Χόʔ͢Δൣғʹ༡ͼΛ࣋ͨ ͤɺΧόʔൣғΛϦϑΝΫλϦϯά w
ঢ়گʹԠͯ͡&&ςετΛ͍͜ͳ͢ ઃܭͷՄಈҬΛ֬อ͢Δ
w ࠷ॳ͔Βશ෦Ζ͏ͱ͠ͳ͍ w ςετۦಈʹͩ͜ΘΔͳ w ςετϑΝʔετʹͩ͜ΘΔͳ w ʮϢχοτʯςετʹͩ͜ΘΔͳ w ςετͷ࣮ߦʹͩ͜ΘΔͳ
w ςετͷཏੑʹͩ͜ΘΔͳ ͩ͜ΘΔͳ
w ྑ͍Ϣχοτςετͷࢦඪʹ༏ઌ ͕͋Δ w ࠶ݱɺ܁Γฦ͠Մೳ 3FQFBUBCMF w ಠཱ͍ͯ͠Δ *OEFQFOEFOU
w ଞͦΕ͔ΒͰ͍͍ ͩ͜ΘΖ͏
w ߹෦ͷݕ౼ͱۛຯ w ߜΓࠐΈͷൃݟͱґଘͷ w ࠶ݱੑ͋Δςετϋʔωεͷඋ w ूதฤू )ZQFSBXBSF&EJUJOH
w ίϯύΠϥ*%&·͔ͤ w ༷Խςετ w ࢼߦϦϑΝΫλϦϯά ϨΨγʔίʔυվળͷٕ๏ ৄ͘͠ σϞͰ
σϞطʹୀ৬ͨ͠ ઌഐ͕ॻ͍ͨ ṖͷίʔυΛҾ͖ܧ͙
IUUQTXXXqJDLSDPNQIPUPTUPNQBHFOFU ςετ࣭Λ্͛ͳ͍
w ࣭͕ʮΘ͔ΔʯΑ͏ʹͳΔ w Θ͔Δ͜ͱͦ͜େࣄ w ςετΛॻ͚ͩ͘Ͱɺྑ͘ͳΒͳ͍ w ମॏܭʹΔ͚ͩͰ૫ͤͳ͍ w ࣭Λ্͛Δͷઃܭͱϓϩάϥϛϯά
w ࠶ઃܭͱϦϑΝΫλϦϯάΛςετͰࢧ͑Δ ςετ࣭Λ্͛ͳ͍
lςετͰ্࣭͕Βͳ͍ Ͱ͢Αɻςετ͋͘·Ͱ ࣭Λ͋͛Δ͖͔͚ͬɻ࣭Λ͋ ͛ΔͷϓϩάϥϛϯάͰ͢ɻ ͜Εେੲ͔Βͦ͏ɻz
w ߹෦ͷݕ౼ͱۛຯ w ߜΓࠐΈͷൃݟͱґଘͷ w ࠶ݱੑ͋Δςετϋʔωεͷඋ w ूதฤू )ZQFSBXBSF&EJUJOH
w ίϯύΠϥ*%&·͔ͤ w ༷Խςετ w ࢼߦϦϑΝΫλϦϯά ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠