{"id":9251,"date":"2012-07-25T11:24:34","date_gmt":"2012-07-25T09:24:34","guid":{"rendered":"http:\/\/www.devapp.it\/wordpress\/?p=9251"},"modified":"2012-07-25T11:24:35","modified_gmt":"2012-07-25T09:24:35","slug":"test-driven-ios-development-breve-recensione-del-primo-libro-specifico-sul-tdd-in-ios","status":"publish","type":"post","link":"https:\/\/www.devapp.it\/wordpress\/test-driven-ios-development-breve-recensione-del-primo-libro-specifico-sul-tdd-in-ios\/","title":{"rendered":"Test-Driven iOS Development: breve recensione del primo libro specifico sul TDD in iOS"},"content":{"rendered":"<p><a href=\"http:\/\/www.amazon.it\/gp\/product\/0321774183\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=0321774183\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" src=\"http:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/07\/test-driven-ios-development-cover.jpg\" alt=\"test-driven-ios-development-cover\" title=\"test-driven-ios-development-cover\" width=\"240\" height=\"240\" class=\"alignleft size-full wp-image-9338\" srcset=\"https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/07\/test-driven-ios-development-cover.jpg 240w, https:\/\/www.devapp.it\/wordpress\/wp-content\/uploads\/2012\/07\/test-driven-ios-development-cover-150x150.jpg 150w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/a> Oggi vorrei spendere due righe per raccontarvi un libro, nello specifico il primo testo sul TDD e iOS: <strong>Test-Driven iOS Development<\/strong> di Graham Lee. Come avrete intuito, TDD \u00e8 l&#8217;acronimo di <strong>Test Driven Development<\/strong> ed \u00e8 un processo di sviluppo software molto in voga negli ultimi anni. Ne abbiamo gi\u00e0 parlato su questo sito, quindi se non conoscete l&#8217;argomento vi invito a leggere <a href=\"http:\/\/www.devapp.it\/wordpress\/uno-sguardo-a-unit-test-impariamo-a-prevenire-ore-e-ore-di-debug-durante-lo-sviluppo-di-applicazioni-ios.html\" target=\"_blank\">questo articolo<\/a>. Passando al libro, credo non sia facile dare un giudizio oggettivo al testo, senza che questo sia influenzato dalla mia idea riguardo il TDD in generale, ma partiamo dall&#8217;inizio.<\/p>\n<p>Il libro \u00e8 molto chiaro nella sua esposizione e tratta un caso d&#8217;uso specifico: in particolare saremo guidati nella realizzazione di un&#8217;applicazione master\/detail che, sfruttando le <a href=\"http:\/\/blog.stackoverflow.com\/2012\/02\/stack-exchange-api-v2-0-no-longer-beta\/\" target=\"_blank\">API di stackoverflow<\/a>, mostri l&#8217;elenco delle domande e relative risposte per un tag selezionato.<\/p>\n<p>Il tutto avviene per\u00f2 con un approccio completamente nuovo rispetto alla &#8220;vecchia&#8221; maniera di scrivere software, segue infatti l&#8217;approccio TDD.<!--more--><\/p>\n<h4>Cosa significa seguire l&#8217;approccio Test-Driven Development?<\/h4>\n<p>Che <strong>si scrivono prima i test<\/strong> e solo successivamente si scrive il codice appena sufficiente per superarli.<\/p>\n<p>Si, avete letto bene.. ho scritto proprio &#8220;appena sufficiente&#8221;! Gi\u00e0 perch\u00e9 \u00e8 proprio questo che sta alla base del TDD: il codice che supera il test deve *solo* superare il test e non deve far altro, perch\u00e9 altrimenti l&#8217; *altro* non sarebbe coperto da test! Semplice, no?<\/p>\n<p>Non mancano nel libro un&#8217;introduzione ai framework principali per usare al meglio TDD e due capitoli finali in cui si va oltre il TDD stesso.<\/p>\n<p>Il mio personale giudizio \u00e8 che se siete interessati all&#8217;argomento \u00e8 un libro molto utile da leggere, in alcuni casi ritengo personalmente che calchi troppo la mano, ricorrendo addirittura al MethodSwizzling (<a href=\"http:\/\/cocoadev.com\/wiki\/MethodSwizzling\" target=\"_blank\">http:\/\/cocoadev.com\/wiki\/MethodSwizzling<\/a>) per rendere <em>testabile<\/em> una classe o creandone delle subclass con metodi specifici per l&#8217;introspezione, devo ammettere per\u00f2 che alla fine si ritrova con un codice sul quale si pu\u00f2 intervenire tranquillamente a fare refactoring o aggiungere funzionalit\u00e0 senza aver paura di &#8220;rompere&#8221; qualcosa che era gi\u00e0 stato fatto.<\/p>\n<p>Potete acquistare il testo direttamente su Amazon.it in una delle due versioni disponibili:<\/p>\n<ul>\n<li>versione cartacea, al costo di 20,03 \u20ac con spedizione gratuita (<a href=\"http:\/\/www.amazon.it\/gp\/product\/0321774183\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=0321774183\" target=\"_blank\">Link diretto<\/a>)<\/li>\n<li>versione elettronica kindle edition, al costo di 14,38 \u20ac (<a href=\"http:\/\/www.amazon.it\/gp\/product\/B007RNK0W6\/ref=as_li_qf_sp_asin_il_tl?ie=UTF8&#038;tag=de0d-21&#038;linkCode=as2&#038;camp=3370&#038;creative=23322&#038;creativeASIN=B007RNK0W6\" target=\"_blank\">Link diretto<\/a>)<\/li>\n<\/ul>\n<p>Buona lettura!<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Oggi vorrei spendere due righe per raccontarvi un libro, nello specifico il primo testo sul TDD e&#8230;<\/p>\n","protected":false},"author":53,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[870],"tags":[1011,1161,1162,1163],"class_list":["post-9251","post","type-post","status-publish","format-standard","hentry","category-libri-e-manuali","tag-manuali-programmazione","tag-tdd","tag-test-driven-development","tag-test-driven-ios-development"],"acf":[],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9251","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/users\/53"}],"replies":[{"embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/comments?post=9251"}],"version-history":[{"count":18,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9251\/revisions"}],"predecessor-version":[{"id":9345,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/posts\/9251\/revisions\/9345"}],"wp:attachment":[{"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/media?parent=9251"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/categories?post=9251"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.devapp.it\/wordpress\/wp-json\/wp\/v2\/tags?post=9251"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}