De wederopbouw van oudere code: 9

, de herstructurering van oude code 9 deel: analyse van de problemen,,,,,,,,,, 49, aandelen, 5,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' dit artikel niet missen, is dat een reeks voor de wederopbouw van een deel van de oude code. De wederopbouw van oudere code: 8 - - - - - - afhankelijk is van een schoon architecturerefactoring oudere code - Deel 10: winning van de methode van de anatomie en de lange, in deze handleiding zullen Wij ons blijven richten op onze logica.We zullen beoordelen, zou runnerfunctions.php, behoort tot een klasse, dan?Zullen wij rekening houden met de aandacht en de methode van de eigendom.Tot slot, we zullen meer weten over het concept van de imitatie.Nou, waar wacht je op?Lezen.,,, runnerfunctions van programma 's, gerichte, hoewel wij de meeste van de code, in de vorm van een gericht doel van de organisatie van de klas, goed, sommige functies gewoon zitten in een dossier.We moeten een voor de functie, runnerfunctions.php, meer gerichte aspecten.,, totaal wrong_answer_id = 7; een totaal min_answer_id = 0; een totaal max_answer_id = 9; de functionele iscurrentanswercorrect ($minanswerid = min_answer_id, maxanswerid dollar = max_answer_id) {terugkeer - Afrikaanse (ongeveer minanswerid, maxanswerid dollar).= wrong_answer_id; de functie van het (de)} {% display = nieuwe clidisplay (); $spel = nieuwe spel ($); $spel - > toevoeging van ("chet"); een spel - > toevoeging van ("Pat"); een spel - > toevoeging van (Sue "); {% dobbelstenen = rand (0, 5) + 1; $spel - > delen ($dobbelstenen); en ().Didsomebodywin ($spel, iscurrentanswercorrect ());} functie (spel didsomebodywin dollar iscurrentanswercorrect) {als ($iscurrentanswercorrect) {terug!$spel - > wascorrectlyanswered (}); anders {terug!$spel - > wronganswer ();}}, en mijn eerste reactie was om ze in de klas.Dit is niet wat een genie, maar het maakt ons begonnen dingen te veranderen.Laten we kijken naar dit idee in feite kan werken.,, totaal wrong_answer_id = 7; een totaal min_answer_id = 0; een totaal max_answer_id = 9; runnerfunctions {functie iscurrentanswercorrect ($minanswerid = min_answer_id, maxanswerid dollar = max_answer_id) {terugkeer - Afrikaanse (ongeveer minanswerid, maxanswerid dollar).= wrong_answer_id; de functie van het (de) ///////} {...///////} functie (spel didsomebodywin dollar iscurrentanswercorrect) {///////...///////}}, en als we dat doen, hebben we behoefte aan een herziening van onze test, we gamerunner.php, het gebruik van nieuwe soorten.We noemen de algemene categorie van wat er in de tijd nodig te dopen.We weten niet eens of deze categorie bestaat in het eigen of worden geassimileerd, spelletjes.Dus maak je geen zorgen, nomenclatuur, privé - functie? Generateoutput ($zaden) {ob_start (); srand ($zaden); (nieuwe runnerfunctions ()) - > het (de); - produktie = ob_get_contents () (); ob_end_clean; terug te komen van de produktie;}, in Mijn goldenmastertest.php, documenten, we moeten aan ons de code.De functie van generateoutput (), moet worden gewijzigd, en op de derde rij, het creëren van een nieuwe objecten en een beroep doen op het (de), het.Maar deze mislukking.,, PHP een oproep niet functioneren didsomebodywin (), gewijzigd, en nu moeten we... Onze nieuwe soorten verder.,, {% dobbelstenen = rand (0, 5) + 1; $spel - > delen ($dobbelstenen); en ().De dollar - > didsomebodywin ($spel, de dollar - > iscurrentanswercorrect ()));,, maar we moeten de omstandigheden veranderen, maar in de verklaring voor het (de),,.De nieuwe code noemt, didsomebodywin () (), iscurrentanswercorrect, van de huidige, herschrijven, de dollar - > ze.,, waardoor de belangrijkste door het goud, maar de loper test.,, PHP een oproep niet functioneren iscurrentanswercorrect () /... /runnerfunctionstest.php lijn 25, problemen. Dat is makkelijk op te lossen, maar assertanswersarecorrectfor (), door het creëren van een object, de eerste loper. Privé - functie, assertanswersarecorrectfor ($correctanserids) {% = nieuwe runnerfunctions (tweede); voor (correctanserids dollar id) {% dit > asserttrue ($- > iscurrentanswercorrect ($), USD);}, id), dit probleem moet op drie andere functies, testitcanf, goed geregeld.Indwronganswer () {% tweede = nieuwe runnerfunctions (); de dollar - > assertfalse ($- > iscurrentanswercorrect (wrong_answer_id, wrong_answer_id);} {% - functie testitcantellifthereisnowinnerwhenacorrectanswerisprovided () = nieuwe runnerfunctions (); de dollar - > asserttrue ($- > didsomebodywin ($- > afakegame (), de dollar - > acorrectanswer ())); de functie van testitcantellifthereisnowinnerwhenawronganswerisprovided (}) {% tweede = nieuwe runnerfunctions (); de dollar - > assertfalse ($- > didsomebodywin ($- > afakegame ($), - > awronganswer ());}, en dat maakt de code door, de invoering van een herhaling van de code.Nu we in de groene alle testen, halen we de atleten in een val (,,).,,, - de functie van particuliere; setup () {% dit > loper = nieuwe functie nu (); testitcanfindcorrectanswer (}) {% dit > assertanswersarecorrectfor ($- > getcorrectanswerids () testitcanfindwronganswer (functie);}) {% dit > assertfalse ($- > de tweede > iscurrentanswercorrect (wrong_answer_id, wrong_answer_id)); de functie van testitcantellifthereisnowinnerwhenacorrectanswerisprovided (}) {% dit > asserttrue ($- > de tweede > didsomebodywin ($- > afakegame ($), - > acorrectanswer ())); de functie van testitcantellifthereisnowinnerwhenawronganswerisprovided (}) {% dit > assertfalse ($- >II - > didsomebodywin ($- > afakegame ($), - > awronganswer ());} privé functie assertanswersarecorrectfor ($correctanserids) {voor (correctanserids dollar id) {% dit > asserttrue ($- > de tweede > iscurrentanswercorrect (dollar de id) {});,, heel goed.Al deze nieuwe te creëren en de wederopbouw heeft me aan het denken.We geven ons de naam "ras".Misschien kunnen zeggen dat onze klas is hetzelfde.Laten we het opnieuw.- dat is heel makkelijk.,,,,, als je geen controle ", de tekst van de zoektocht," aan de Top van de doos, vergeet niet veranderen, met inbegrip van de hand, omdat de herstructurering om de dossiers ook.,, nu hebben we een document dat de gamerunner. Php, een andere Naam, runner.php, en een derde van een spel genaamd,. Php.Ik weet het niet van jou, maar voor mij is het erg in de war.Als de eerste keer dat ik deze drie dossiers, ik weet niet wat ik moet doen.We moeten af van die in ten minste een.,, we creëren, runnerfunctions.php redenen, ik vroeg op in de wederopbouw van het dossier, is de instelling van een van de methoden en testen van alle documenten.We hebben alles, maar niets anders kan leiden, tenzij in ons goud meester klaar in de omgeving.We kunnen nog steeds dezelfde dingen doen die we niet, maar de code, gamerunner. Php.We moeten worden bijgewerkt, met inbegrip van het creëren van een verbod, voordat we gaan, __dir__, require_once. "PHP __dir__ /blijkt; require_once. "/loper. Php; (nieuwe runner ()) - > het (de);,,, doe het.We moeten display.php, duidelijk, dus als de spelers, de schepping van een nieuw, clidisplay, het zal weten te bereiken.,,, de analyse van het probleem, ben ik van mening dat de gerichte programma 's, een van de belangrijkste kenmerken van de definitie van het probleem.Ik was altijd afvragen, 'wat is de naam van dit zeggen? "Deze methode is, de aandacht van het object?"Ik moet zorgen dat het voorwerp van bijzondere waarde?"Verbazingwekkend, dit soort problemen heeft veel macht, duidelijk in de activiteiten en de architectuur.We vragen een antwoord te geven op deze problemen in een groep syneto.Veel tijd, een programmeur met een dilemma, hij of zij alleen staan, vragen de aandacht van 2 minuten om ons advies, op een thema.De mensen die bekend zijn met de opbouw van de code zal vanuit het oogpunt van software te beantwoorden, terwijl anderen meer vertrouwd te maken met de werkzaamheden op het gebied van de commerciële aspecten kunnen ontdekken over de belangrijke adviezen, laten we het proberen te denken.We kunnen blijven concentreren op, lopen, naar de les.Het is zeer waarschijnlijk de afschaffing of wijziging van dit spel, dan,,,, in de eerste plaats, hoe moet iscurrentanswercorrect (), de gezondheidszorg, de loper?Ze moeten iets vragen en antwoorden?Het lijkt erop dat deze methode zou beter spelen.En ik ben ervan overtuigd dat de trivia spel moeten zorgen, als is het juiste antwoord.Ik geloof echt dat het een spel, moet zorgen voor de resultaten van de antwoorden.We doen een mobiele voor de wederopbouw.Zoals we hebben gezien dat alles uit mijn vorige les, ik zal je vertellen dat het uiteindelijke resultaat.,, require_once __dir__. "/clidisplay. Php; include_once __dir__. "/spel. Php; categorie plaats (functie) {//////////////run (...} functie (spel didsomebodywin dollar iscurrentanswercorrect) //////////////}} {..., moet worden opgemerkt dat deze methode niet alleen gaan, van essentieel belang, maar constante definitie van de beperking van het antwoord, maar ook voor didsomebodywin ().,,???????Als een loper beslissen wanneer iemand winnen?Als we van mening zijn, zien we een probleem als de duisternis van de zaklamp, functie, didsomebodywin ($spel, iscurrentanswercorrect dollar) {als ($iscurrentanswercorrect) {terug!$spel - > wascorrectlyanswered (}); anders {terug!$spel - > wronganswer ();}}, of deze methode, die in een spel.Het spel van de verificatie van de antwoorden.En dan is het weer een spel van de voorwerpen terug, wascorrectlyanswered (), of, wronganswer (). De methode is.Deze methode voor het effectief zijn.Het is al over, het spel.Dit is een typisch voorbeeld van een code, de geur, jaloers is.Een soort van andere soort dingen moeten doen.Tijd om te gaan, runnerfunctionstest, klasse, uitbreiding van phpunit_framework_testcase {particuliere $plaats; functionele setup () {% dit > loper = nieuwe runner ();}}, en zoals gewoonlijk hebben we het testen.Tdd?Wie?Dat laten we geen testen meer, dus dit dossier kunnen gaan.Het schrappen van de programmering is mijn favoriete deel.,, wanneer we onze test, we hebben een heel goed fout.,, fatale fout: noemen is niet omschreven methode: didsomebodywin (), spelen de code en, nu is het tijd voor verandering.De methode voor het kopiëren en plakken, spelen, zal de magie om alle door de test.Waar is de oude en die aangeraakt, gametest,.Maar in deze methode op de juiste plaats, het zijn er twee problemen: de spelers moeten veranderen, sturen we een vals spel voorwerpen, we hoeven niet meer te doen, een deel van het spel, en doe de {% dobbelstenen = rand (0, 5) + 1 dollar per spel - > volume ($dobbelstenen); en (;).$spel - > didsomebodywin ($spel, de dollar - > iscurrentanswercorrect ()));,, vaste koerier is makkelijk.We veranderen, de dollar - > didsomebodywin (...), in het spel, de dollar - > didsomebodywin (...).We moeten terug naar hier, dan een andere keer, voordat we de volgende stap.De wederopbouw van de functie van testitcantellifthereisnowinnerwhenacorrectanswerisprovided testen.,, () {% spel =, spot, spot (wascorrectlyanswered spel [] "); een spel - > moeten worden aanvaard ('wascorrectlyanswered") - >. () - > weer een (pseudo); de dollar - > asserttrue ($spel - > didsomebodywin ($- > acorrectanswer ());}, dit is een belachelijk gemaakt was.Onze na voltooiing van de test, we gebruiken onze valse, in plaats van gebruik te maken van onze nep, we zullen het gebruik van spot.We kunnen gemakkelijk worden over een methode, het spel, en ik hoop dat het wordt genoemd en de terugkeer van de waarden die we willen.Natuurlijk, we kunnen onze nep - klasse door de uitbreiding, spelletjes, en zich aan te passen.Maar waarom een instrument bestaat?,, functionele testitcantellifthereisnowinnerwhenawronganswerisprovided () {% spel =, spot, spot (spel [kan] "); een spel - > moeten worden aanvaard ('wronganswer") - >. () - > en (echt); de dollar - > assertfalse ($spel - > didsomebodywin ($dit - - GT; awronganswer ());}, na onze tweede methode wordt herschreven, we kunnen ontdoen van vals spel van een klasse van de methode, starten maar.De oplossing van het probleem.,, de laatste gedachten, zelfs als we proberen te denken, in de tweede plaats hebben we grote vooruitgang geboekt.We leren de verantwoordelijkheid hebben wij vastgesteld, in een andere categorie van methoden en variabelen.We denken dat op een hoger niveau, we gaan in de richting van een betere oplossing.In de syneto team, er is een sterke overtuiging, voor de code te schrijven, tenzij het om nooit toegezegd om de code van ten minste een beetje schoon.Dit is een tijd van de methode van de code, kan leiden tot betere, minder afhankelijkheid, meer tests en, uiteindelijk, de vermindering van de fouten.,,, bedankt voor je tijd.




Previous:
Next Page: