Upgrade to Pro — share decks privately, control downloads, hide ads and more …

テストを書かない言い訳をさせてくれ

704056da9a4c4e075ad14479beaebab7?s=47 takasek
March 13, 2017

 テストを書かない言い訳をさせてくれ

iOS Test Night #3 - connpass
https://testnight.connpass.com/event/49561/
での発表資料です。

👉続き https://speakerdeck.com/takasek/tesutowoshu-kanaiyan-iyi-wositajie-guo-wwwwwww

参考リンク:

レガシーコード改善ガイド(ウルシステムズ株式会社 平澤章 マイケル・C・フェザーズ 越智典子 稲葉信之 田村友彦 小堀真義) | 翔泳社の本
http://www.shoeisha.co.jp/book/detail/9784798116839

Stable Dependencies Principle
http://wiki.c2.com/?StableDependenciesPrinciple%60

PHP7 で堅牢なコードを書く - 例外処理、表明プログラミング、契約による設計 / PHP Conference 2016 // Speaker Deck
https://speakerdeck.com/twada/php-conference-2016

Swift実践入門 ──直感的な文法と安全性を兼ね備えた言語:書籍案内|技術評論社
http://gihyo.jp/book/2017/978-4-7741-8730-3

開発を効率化するテストのデザインパターン // Speaker Deck
https://speakerdeck.com/orgachem/kai-fa-woxiao-lu-hua-surutesutofalsedezainpatan

UIをSwiftyに書く | try! Swift Tokyo 2017 #tryswiftconf Day1-10 聞き起こし - niwatakoのはてなブログ
http://niwatako.hatenablog.jp/entry/2017/03/02/160620

704056da9a4c4e075ad14479beaebab7?s=128

takasek

March 13, 2017
Tweet

Transcript

  1. ςετΛॻ͔ͳ͍ ݴ͍༁Λͤͯ͘͞Ε by takasek 2017/3/13 iOS Test Night #3 1

  2. Unit Test ॻ͖ͨ͘ͳ͍ Ͱ͟͝Δ…ʂ 2

  3. ςετॻ͖ͨ͘ͳ͍ཧ༝ᶃ ςετϑΝΠϧ΁ͷڑ཭͕ԕ͍ ։͚ͩ͘Ͱ΋ΊΜͲ͍ ԟ෮͢Δͷ͸΋ͬͱΊΜͲ͍ 3

  4. 4

  5. ਖ਼ؾ͔!? 5

  6. " ຊ൪ίʔυͱςετίʔυΛߦͬͨΓདྷͨΓ͢ ΔͨΊʹɺσΟϨΫτϦߏ଄Λ্͕ͬͨΓԼ͕ͬ ͨΓ͠ͳ͚Ε͹ͳΒͳ͍ͱͨ͠Βɺ࡞ۀͷͨͼʹ ·ΔͰ੫ۚΛ෷͍ͬͯΔ͔ͷΑ͏ʹࢥ͑ͯ͠·͏ ͜ͱͰ͠ΐ͏ɻ" ɹɹɹɹɹɹ- ϨΨγʔίʔυվળΨΠυ P243 6

  7. ɹɹɹɹɹɹɹɹɹɹɹɹɹɹɹ- ϨΨγʔίʔυվળΨΠυ P242 7

  8. ଓʑͱಧ͘ɺ೤͍ڞײͷ੠ʂ 8

  9. Ͱ΋ ݱ࣮͸ ͜ΕͰ͢ 9

  10. ͜͏͍͏ϓϩδΣΫτͳΜͯɺݟͨ͜ͱͳ͍ 10

  11. ͜͏͍͏ϓϩδΣΫτͳΜͯɺݟͨ͜ͱͳ͍ ɹɹɹɹɹɹɹɹɹ…΍ͬͯΔਓɺ͍·͔͢ʁ 11

  12. !௥ه! ձ৔ʹ͍ͨ100ਓ௒ͷࢀՃऀதɺ ڍखͨ͠ͷ͸0ਓͰͨ͠ɻ 12

  13. ! 13

  14. ςετॻ͖ͨ͘ͳ͍ཧ༝ᶄ ςετ͸ෛ࠴ʹͳΓ͏Δ ࢓༷΍ΠϯλϑΣʔε͝ͱ ίϩίϩมΘΔίʔυʹରͯ͠ͷςετ ͱͯ΋ͭΒ͍ 14

  15. ҆ఆґଘͷݪଇʢSDPʣ "The dependencies between packages should be in the direction

    of the stability of the packages. A package should only depend upon packages that are more stable than it is. " 1 ύοέʔδͷґଘؔ܎͸ɺ҆ఆੑͷํ޲ʹґΒͳ͚Ε͹ͳΒͳ͍ɻ ύοέʔδ͸ɺΑΓ҆ఆͨ͠ύοέʔδʹͷΈґଘ͢΂͖ͩɻ ɹɹɹɹɹɹɹɹɹɹɹɹɹɹ- Robert C. Martin 1 Stable Dependencies Principle http://wiki.c2.com/?StableDependenciesPrinciple 15
  16. ͳΜͰςετίʔυ͸ ෆ҆ఆͳϓϩμΫτίʔυʹ ੵۃతʹґଘ͠ʹ͍ͬͯΔͷ…ʁ 16

  17. ࣗಈςετͷಈػ ❌ ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘ 17

  18. ࣗಈςετͷಈػ ❌ ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘ ⭕ ಈ࡞৚݅Λςετίʔυʹॻ͖ɺ ෆਖ਼ಈ࡞͸ϏϧυϑΣʔζͰࣗಈͰ஄͘ 18

  19. ࣗಈςετͷಈػɺͦͷઌ ❌ ಈ࡞৚݅ΛਓͷखͰ؅ཧɾ೺Ѳ͠ɺ ෆਖ਼ಈ࡞͸ϏϧυޙʹखಈͰ஄͘ ⭕ ಈ࡞৚݅Λςετίʔυʹॻ͖ɺ ෆਖ਼ಈ࡞͸ϏϧυϑΣʔζͰࣗಈͰ஄͘ # ಈ࡞৚݅ΛϓϩμΫτίʔυʹॻ͖ɺ ෆਖ਼ಈ࡞͸ϏϧυલʹࣗಈͰ஄͘

    19
  20. 20

  21. ςετͰಈ࡞อূ͠ͳ͚Ε͹ ҆৺Ͱ͖ͳ͍ίʔυΛ ॻ͍ͯΔͷ͕ ѱ͍ɻ 21

  22. TDD Red-Green-Refactor !→✅→# 22

  23. ίϯύΠϧΤϥʔ͸ ΋ͬͱ΋ଈϨεͳ !Red 23

  24. ͦͷςετ ୅ΘΓʹܕઃܭͰ ͳΜͱ͔Ͱ͖ͳ͍ʁ 24

  25. 4 ڍಈ͕มԽ͢ΔͳΒ ɹϙϦϞʔϑΟζϜͰந৅Խ͢Δͱ͔ 4 ਖ਼͘͠ͳ͍஋͕ೖΓ͏ΔͳΒ ɹܕʹแΜͰfailable initializerΛ࢖͏ͱ͔ 4 ࿈ಈͯ͠มԽ͢ΔϓϩύςΟ͸ ɹtupleʹవΊΔͱ͔

    ɹenumͷassociated valueʹدͤΔͱ͔ 4 cf. Result ܕ 25
  26. ۩ମྫ͸লུ ੴ઒༸ࢿ (@_ishkawa) ͞Μͷ ஶॻʮSwift࣮ફೖ໳ʯͱ͔ kuniwak͞Μͷຊ೔ͷൃද ʮ։ൃΛޮ཰Խ͢Δςετͷ ɹσβΠϯύλʔϯʯͱ͔ try! Swiftͷൃද

    ʮUIΛSwiftyʹॻ͘ʯͱ͔2 2 UIΛSwiftyʹॻ͘ | try! Swift Tokyo 2017 #tryswiftconf Day1-10 ฉ͖ى͜͠ - niwatakoͷ͸ͯͳϒϩά http://niwatako.hatenablog.jp/entry/ 2017/03/02/160620 26
  27. ͔ͤͬ͘ͷܕ҆શݴޠͳΒ ಈ࡞ͷࣄલ৚݅Λ ܕઃܭʹدͤͯ ΑΓϩʔίετʹ ҆શΛखʹೖΕΑ͏Α 27

  28. ͦΕͰ΋ ςετ͡Όͳ͖ΌอূͰ͖ͳ͍ ϩδοΫ͸ଟ͍…! ͦΜͳͱ͖ɺϓϩμΫτίʔυͱςετίʔυͱ ڑ཭ͷԕ͞͸΍͸ΓωοΫ → ஌ݟ͕ཉ͍͠ʂʂʂʂʂʂ 28

  29. ࠓ೔ͷ݁࿦ iOS Test Night #4 Ͱ͸ ςετࣗମͷํ๏࿦͚ͩͰͳ͘ ςετͷίετͷԼ͛ํ ٻΉ! 29