, afhankelijk van het beginsel van de omkering van een,,,,,,,,,, 75, aandelen, 33,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen, een deel van de prijs van een reeks genaamd deel 3: vervanging van vaste principles.solid & - het beginsel van de scheiding van taken, de interne (SrP) en open /gesloten (OCP), ter vervanging van de interface isolement, gericht, en de afhankelijkheid van ondersteboven.Elke keer als je de code schreef je onze beginselen moeten leiden, en dat is niet eerlijk, dat jij een solide beginselen zijn belangrijker dan een ander.Toch kan niemand heeft dit directe en grote invloed op de code van je dan afhankelijk van de omkering van de beginselen, of zwemmen op de korte termijn.Als je vindt dat andere beginselen moeilijk te beheersen of de toepassing van dit, een begin, en die van toepassing zijn op de eerbiediging van de in de definitie van de code zijn, een hoge module mag niet afhankelijk zijn van het lage niveau van de module.Beide moeten afhangen van de abstracte, abstract mag niet afhankelijk zijn van de details.Details moeten afhangen van de abstracte.,,, is dit beginsel in z 'n boek, snel de ontwikkeling van software, door Robert C. Martin omschreven beginselen, het model en de praktijk van de tweede editie van soepele en later in beginsel, model Cversie en in de C -praktijken, het is een van de vijf vaste onze beginselen.,, - in de echte wereld, voordat we beginnen, codering, ik wil je een verhaal vertellen.In de syneto, waren we het niet altijd met ons de code erg voorzichtig zijn.Een paar jaar geleden, hebben we weinig weten, zelfs als we ons best doen, niet alle projecten zijn erg goed.We door de hel en terug en we leren van de test en de verkeerde dingen veel.,, solide beginselen en de beginselen van oom BOB schoon (Robert C. Martin) is een van onze regels van het spel te veranderen, verandert ons, het is moeilijk te beschrijven de code.Ik zal een voorbeeld, kortom, de neiging van een aantal belangrijke kaderbesluit laat ons project, de meeste invloed uit te oefenen, goed. Web - project bevat drie belangrijke technologie:: //europa.eu.int /comm /PHP SQL.De toepassing van speciale versie, waar we het over hebben is wat voor soort SQL dat je gebruik te maken.Waar het om gaat, is dat van de http: //europa.eu.int) informatie moet eindigen, op de een of andere manier, in de database.De lijm die tussen hen kunnen PHP.,, wat is dit van essentieel belang is weg, hoe goed de vertegenwoordigers van de drie - drie verschillende lagen van de gebouwen: user - interface, de logica en de duurzaamheid.Zullen we het hebben over de gevolgen van deze laag, in een minuut.Nu, laten we ons concentreren op wat vreemd maar vaak technische oplossingen doen, zie ik. En vaak met SQL code in een dossier van de projecten: //europa.eu.int /comm /PHP etiket, of PHP in navolging van de website en de website http: //europa.eu.int en directe verklaring, _get dollar, of, _post dollar, de variabele.Maar waarom is het slecht?,,,,, de foto 's staat beschreven in de oorspronkelijke versie van ons.De pijl van relaties, en kunnen we de conclusie trekken dat in feite alles hangt af van alles.Als we moeten veranderen in een databank, kunnen we de definitieve redactie http: //europa.eu.int).Als we de veranderingen in een gebied: //europa.eu.int /comm /veranderen, kunnen we uiteindelijk in de naam van de verklaringen opgenomen.Als we kijken naar de tweede fase, wij zullen waarschijnlijk als: //europa.eu.int /comm /wijziging van onze PHP, of in zeer slechte omstandigheden, als we die alle: //europa.eu.int /comm /inhoud van een PHP documenten moeten wij veranderen van een wijziging van de inhoud van het dossier: //europa.eu.int /comm /PHP.Dus, het lijdt geen twijfel dat de afhankelijkheid van de moeizame en modules.Maar dit is nog niet voorbij.Je kan de opslag van het programma, in de tabel van SQL PHP,,,,,,, in de structuur, de vraag naar de database van de PHP terug, uit de gegevens in de tabel wordt gegenereerd.Deze PHP functie of door andere SQL, de terugkeer van verschillende PHP cyclus, en totdat hij alle informatie te verkrijgen en terug...Voor jou misschien, ik weet dat dit voor velen van u klinkt misschien belachelijk, maar als je het nog niet op deze manier te werken, weet je zeker dat het in de toekomst in de carrière.De meeste bestaande project, ongeacht of het gebruik van de taal is geschreven in het oude beginsel van door de programmeurs die niet weet of het beter doen.Als je dit leest, ben je waarschijnlijk een niveau hoger.Ben je klaar, ben je klaar voor het respect voor je carrière, accepteer je vaardigheden, om het beter te doen.In de syneto, na een van onze projecten voor het bereiken van een bijna niet kan worden gehandhaafd, omdat het oude en de afhankelijkheid van de staat van de architectuur en we hebben eigenlijk nooit verlaten, hebben we besloten om niet terug naar de weg.Sindsdien hebben we ons inzetten voor een schone, in het kader van de solide beginselen correct, het belangrijkste is afhankelijk van het beginsel van de omkering.,,,,,, wat is dit gebouw zo verbazingwekkend is afhankelijk van hoe een:,,, de gebruikersinterface (in de meeste gevallen, een web MVC) Wat is Je vervoer of van andere instellingen van de projecten zal afhangen van de logica.De commerciële logica is abstract.De gebruikersinterface is zeer specifiek.De gebruikersinterface is gedetailleerde informatie over een project, maar ook erg onstabiel.Niets kan afhangen van de bu, hangt niet af van je MVC kader, een interessante observatie, wat we kunnen doen is blijven, gegevensbank, mysql of postgresql, hangt af van de logica.Uw logica heeft niets te maken met de database.Dit kan de uitwisseling van op, wil je.Morgen als je wil en postgresql of gewoon de tekst wijzigen van mysql, je kunt het.Natuurlijk, je moet in de nieuwe duurzame methoden in de uitvoering van een bepaalde persistente laag, maar je moet niet worden gewijzigd in de logica van een code.Er is een meer gedetailleerde uitleg, met de voortdurende ontwikkeling van de duurzaamheid betreft persistentie training.De juistheid van de commerciële logica in, we hebben alle klassen, die zijn het creëren van logica van de klasse.Deze fabrieken en het creëren van punten van binnenkomst van de aanvragen naar ons.Veel mensen geneigd te geloven dat deze tot de commerciële logica, maar als ze het scheppen van commerciële voorwerpen, zij is de enige reden dat te doen.Ze hielp ons een andere klasse.Ze biedt het bedrijfsleven en logica is onafhankelijk van deze fabriek.We kunnen het gebruik van verschillende vervoerswijzen, zoals eenvoudige fabriek, produktie van fabrieken, gebouwen en /of gewone object creëren om de logica.Maakt niet uit.Als je een zaak tegen, ze kan haar werk voltooid is, en laat me de code, als je het respect van onze ontwerp - klassieke, in een gebouw op het niveau van het beginsel van toepassing (dip) afhankelijk van het omgekeerde is nogal makkelijk.De uitoefening van die binnen de logica en het is gemakkelijk, het kan zelfs leuk zijn.We kunnen stellen dat een boek - van toepassing, uit te breiden, tests. Phpunit_framework_testcase {functie testitcanreadapdfbook () {% b = nieuwe pdfbook (); r = nieuwe PDFreader ($); de dollar - > assertregexp (/pdf /"boek, $R > lezen ()); deze PDFreader}} - privé - $boeken; de functionele __construct (pdfbook $boek) {% dit boek = $> boeken;} functie terug. () {dollar - > boek > lezen (); pdfbook {}} deze functie Read () {terug" - boek lezen. ";}}, we. Beginnen met de ontwikkeling van onze lezers in pdf - lezer.Tot zover gaat het goed.We hebben een, PDFreader, gebruik, pdfbook,.B) de functie van de,, in de lezer (namens de boeken gelezen, ().We controleren de draad terug na de goedkeuring van een belangrijk deel van een regelmatig uitdrukking te controleren van de lezer (), pdfbook,,.,, weet je, dit is slechts één voorbeeld.We zullen niet de verwezenlijking van een pdf - bestand of andere documenten lezen formaat logica.Dit is de reden waarom we testen alleen controleert de string.Als we de echte toepassing van geschreven is, het enige verschil is dat hoe we het testen van verschillende formaten.Afhankelijk van de structuur zal voor ons zijn vergelijkbaar,,,,,,, met een pdf - boek heeft een pdf - kan een beperkte toepassing van een redelijke oplossing.Als we de werkingssfeer is een lezer, niet meer schrijven, het is eigenlijk een aanvaardbare oplossing te vinden.Maar we willen een algemene boeken schrijven, steun voor de verschillende vormen, waarvan de eerste versie van de PDF.Laten we onze lezers, uitbreiding, tests. Phpunit_framework_testcase {functie testitcanreadapdfbook () {% b = nieuwe pdfbook (); r = nieuwe ebookreader ($); de dollar - > assertregexp (/pdf /"boek, $R > lezen ());}} {privé - lessen ebookreader het boek van de functie van $; __construct (pdfbook $boek) {% dit boek = $> boeken;} functie terug. () {dollar - > boek > lezen (); pdfbook {}} deze functie Read () {terug" - boek lezen. ";}}, noemen, geen functie de terugslag.Test, test, ook door middel van 1:04 begon. In de PM... Phpunit 3.7.28 Sebastian Bergman, tijd: 13 milliseconden, geheugen: 2.50mb, oké (1 een test, 1 beweringen), de voltooiing van het proces van uitgang code 0, maar het heeft een ernstig effect van ontwerp.,,,,,, en onze lezers meer abstract.Meer in het algemeen.We hebben een algemene, ebookreader, gebruik te maken van een zeer specifieke aard van de boeken, pdfbook,.Abstracte afhankelijk zijn van de details.In feite, we moeten de aard van het boek is - maar een detail, mag niet afhankelijk zijn van het type test uit te breiden.,, phpunit_framework_testcase {functie testitcanreadapdfbook () {% b = nieuwe pdfbook (); r = nieuwe ebookreader ($); de dollar - > assertregexp (/pdf /"boek $R > lezen ());}}} {e - Read (API); ebookreader {particuliere $boeken; de functionele __construct (E - $boek) {% dit boek = $> boeken;} functie terug. () {dollar - > boek > lezen ();}} pdfbook uitvoering van klasse E - functie Read () {{terug" - boek lezen. ";}}, een van de meest voorkomende en de meest gebruikte oplossing zal afhankelijk zijn van de invoering van een abstract.We ontwerpen. "In de meest abstracte elementen in het BBP is een interface.Dus, een andere klasse kan afhankelijk zijn van een interface, nog steeds respect ".", creëren we een interface voor onze lezers.E - interface, zei, en de vertegenwoordigers van de vraag, ebookreader,.Dit is de eerbiediging van het beginsel van de scheiding van een interface van de directe resultaten (ISP 's) die pleiten voor een interface dient rekening te worden gehouden met de behoeften van de klanten.De interface van de klant, dus ze heet rekening te houden met de aard en het doel van de klant nodig, en ze zullen die gebruik willen maken van de methode van de klant.Het is heel natuurlijk, ebookreader, het gebruik, de boeken, en lezen (), een,.,,,,,, en geen enkel afhankelijk is, hebben we twee afhankelijk van,,, de eerste afhankelijkheid, ebookreader, oriëntatie, e - interface van het type is, en het gebruik van.Het gebruik van e - ebookreader,,,,,, de tweede is de afhankelijkheid van de verschillende.Het wijst erop dat de pdfbook, in dezelfde, e -, maar het is de verwezenlijking van het type interface.Een, pdfbook, is slechts een bijzondere vorm van e -, waardoor de verwezenlijking van de interface, te voldoen aan de vraag van klanten.,,, maar ook deze programma 's, laten we de stekker in verschillende soorten boeken voor onze lezers.Al deze boeken van de enkele voorwaarde is voldaan, e - interface en de verwezenlijking van het soort test uit te breiden,., phpunit_framework_testcase {functie testitcanreadapdfbook () {% b = nieuwe pdfbook (); r = nieuwe ebookreader ($); de dollar - > assertregexp (/pdf /r van het boek, en GT; Read ()) testitcanreadamobibook (functie);} {% b = nieuwe mobibook (); r = nieuwe ebookreader ($); de dollar - > assertregexp (/boeken /mobiele, R - > lezen ());}}} {e - Read (API); ebookreader {particuliere $__construct boeken; (E - $boek) {% dit boek = $> boeken;} functie terug. () {dollar - > boek > lezen ();}} pdfbook uitvoering van klasse E - functie () {{opnieuw lezen."- boek lezen." dat soort mobibook;}} E - functie Read () {{terugkeer "en het boek gelezen.";}}, die op hun beurt leiden tot we in beginsel open, en de ring is gesloten, afhankelijk van het beginsel van de omkering van de., is een veroorzaakt of kan ons helpen om de eerbiediging van alle andere de beginselen.Voor:,,, - bijna gedwongen je respect voor OCP.,, laat je eigen verantwoordelijkheid.,, laat je het juiste gebruik van het type.,, biedt u de mogelijkheid om uw interface.,,, de laatste idee, dat is het.We doen.Alle vaste beginselen over de training is voltooid.Voor mij persoonlijk, dat deze beginselen en de uitvoering van de projecten en ze in m 'n hoofd is een grote verandering.Ik veranderde het ontwerp en de constructie van de methode zelf, kan ik zeggen dat, sinds die tijd, heb ik alle projecten is de index beter te organiseren en te begrijpen, en ik denk dat de beginselen van een gerichte ontwerp, de meest fundamentele begrippen.Deze begrippen moeten leiden, zodat we ons beter de code en ons leven makkelijker als programmeur.Ontwerp - code gemakkelijker te begrijpen.De computer is slim, ze kan het begrip van de code, ongeacht de complexiteit ervan.Aan de andere kant, mensen met een beperkte, iets dat ze kunnen in hun activiteiten te concentreren.Meer in het bijzonder een aantal dingen, dat is zeven, plus of minus 2, we moeten proberen onze code rond deze cijfers, een paar technische, om ons te helpen dat te doen.De maximale lengte van de functionele en vier lijnen (vijf definitie), zodat ze kunnen worden in onze geest een geschikt zijn.Niet door de indrukking op niveau 5.Niet meer dan negen voor klasse.Meestal het gebruik van vijf tot negen categorieën ontwerp - model.We boven op het hoge niveau van het gebruik van in het kader van het concept van vier tot vijf.Er zijn vijf solide beginselen, elke vijf tot negen is het concept /modules /klasse kan als voorbeeld.Een team is in de programmering van de ideale omvang tussen negen en vijf.In een bedrijf in de negen en vijf cijfers is de ideale tussen, zoals u kunt zien, is het magische nummer zeven, plus of minus 2 is alles om ons heen, dus waarom je code is anders?,
Deel 4: vaste: deel 4
Previous:2: de basis
Next Page:Vaste: 3