tag: design

17Jul

Law of Demeter - Ne állj szóba idegennel!

Az utolsó design cikkhez értünk, ez a SOLID utáni ráadás. Law of Demeter, más néven a principle of least knowledge egy ajánlás  a szoftverfejlesztéshez, azon belül is az objektumorientált nyelvekhez. Ha valaki találkozott már a kódjában hosszú method chainingel, mint például:

$user = $this->getServiceLocator()->get("SqlModelFactory")->createModel("Users")->findById($ID); // félreértés ne essék, nem minden method chaining lesz "rossz"
Szeged-domotor

A szegediek lehet értik

akkor valószínűleg nem árt, ha olvassa ezt :)

Tovább »

09Jul

ISP - Interface segregation principle

Amikor új applikáció tervezésébe kezdünk, akkor nem árt komolyan fontolóra venni, hogy milyen absztrakciókat is fogunk használni az egyes modulok és submodulok esetén. Ha ezen modulok egyike esetünkben egy osztály, akkor az absztrakció formája nem lesz más, mint egy interface. Tegyük fel, hogy ezt létrehoztuk és az adott osztályt implementáltuk is, minden klappol, megkaptuk érte a kis pénzünket és nem utolsó sorban úgy működik, ahogy a megrendelő elképzelte elképzeltük. refactoring-to-solid-code-32-728

Tovább »

05Jul

Betonozás 3.0 - Liskov és a haverok

Kódolni pofonegyszerű.
Legalábbis a facebook hirdetéseink alapján ma már mindenféle tudás nélkül bármit össze lehet kattintgatni és még lehet külsőre jól is néz ki. Ellenben ha minőségi munkáról van szó, akkor bizony közel sem olyan egyszerű a dolog. Ha húsz év múlva mi, programozók "uraljuk" majd a világot és ha véletlenül okozunk valami gebaszt, ami komoly károkat okoz, akkor biza a sarkunkra lépnek. A gond az, hogy a történelem jelen állása szerint akkor nem tudunk semmit felhozni majd a védelmünkre.
Miért nem?
Ugyanis szinte minden szakmában vannak bizonyos szabályok, amiket betartanak. Szabályozva vannak, normák szerint dolgoznak. Ellenben ha belegondolok, hogy is nézett ki az első pár kódsor, amiért pénzt mertem kérni, nos az egy szabálynak felelt meg:
  • matchelt rá a .* regexp karakterekből állt.
Viszont szükségünk van szabályokra, hogyha egyszer odaáll elénk a főnőkünk, akkor tudjuk azt mondani, hogy én betartottam a szabályokat, minden másra ott a 'not my fault!', a tesztek lefutottak, tehát minden tőlem telhetőt megtettem a minőség érdekében. Ha egyszerre többen dolgoznak egy projekten szintén kellenek a szabályok, mert hiába a compiler, ritka ronda dolgok másznak ki a kezünk alól, ha eluralkodik az irodában a káosz (itt most egy perc néma megemlékezés azokért, akik mind a mai napig verziókövetés nélkül dolgoznak csapatban ). Ezen szabályok egyik gyűjteménye az ún. SOLID irányelvek, aminek a harmadik betűjét fogjuk most megvizsgálni, az LSP-t (Liskov's substition principle) magyarul.. inkább nem írom le. liskov

Tovább »

03Jul

Betonozás 2. rész - OCP

Az előző cikkben elkezdtük tárgyalni a SOLID elveket. Az SRP-t ki is végeztük, így jöjjön a SOLID második pillére az OCP, azaz az open-closed principle, ami annyit tesz, hogy "open for extension, closed for modification", tehát a cél az lenne, hogy úgy tudjuk bővíteni az adott kódrészt (modul, osztály, csomag), hogy nem kell reflectionnel szétgányolnunk az egészet belenyúlnunk a forrásába. surgery in a operating room.

Tovább »

28Apr

Díszítsük fel a wrappert!

A decorator pattern a struktúrális minták közé tartozik, és a célja roppant egyszerű: magába foglal egy másik osztályt és plusz funkcionalitással látja el azt, így az eredeti osztály metódusai érintetlenek maradnak. Nézzük meg hogy is történik mindez!  

Forrás: foodnetwork.com

Forrás: foodnetwork.com

Tovább »

04Apr

Facade pattern

Az elmúlt időszakban kissé eltávolodtunk a kódtól, pedig nem csak rendszerszinten lehet tekinteni itt a dolgokra, így most kicsit visszatérünk a hétköznapi kóder életbe, a tervezési minták világába. Cikkünk témája a facade pattern, aminek célja az, hogy a kliensek számára egy letisztult, egyszerűen használható interfészt biztosítson egy komplex objektumhálózat/modul használatához, miközben elburkolja annak működését. Besorálását tekintve a struktúrális minták közé tartozik, viselkedésében pedig kb. az Adapter ellentéte lesz.

atm140120_20140120_202328_l

Az ATM is egy facade

Tovább »

10Nov

Élőben jelentkezünk a helyszínről!

Aki Budapest belvárosában tartózkodik november 25.-én és nem tud jobb alternatívát találni arra mivel is üsse el az időt este 7-től, annak felajánlanék egy alternatívát:

Tervezési minták a valóságban

Hallottál már a tervezési mintákról? Talán már utána is jártál, hogy pontosan mik azok? Esetleg tudod azt is, hogy hol lehet őket használni? Ha a válaszod nem, akkor se csüggedj, mert most minden ezzel kapcsolatos kérdésedre választ kaphatsz. Meetupunkban példákat mutatunk különböző keretrendszerek forráskódjából, mely során Te is megértheted, vajon hol és mikor van létjogosultsága az egyes mintáknak. Sőt, valószínűleg rájössz, hogy már Te is használtad ezeket, csak nem tudtál róla! Jelentkezés: • Önéletrajz elküldésével a meetup[kukac]schonherzbazis.hu-ra "Meetup regisztráció" jeligével. Ebben az esetben a részvétel INGYENES. • Ha korábban már regisztráltál önéletrajzzal, akkor is INGYENES. Csak írj nekünk egy e-mailt a meetup[kukac]schonherzbazis.hu-ra "Meetup regisztráció" jeligével. • Ha nem szeretnél önéletrajzot küldeni, akkor a belépő regisztráció nélkül 1000 Ft, amelyet a helyszínen vásárolhatsz meg: Link a meetup.com -ra.
bouncer A résztvevők közt kisorsolunk egy örök élet és egy ingyen sör kártyát, amit a kidobófiúnál "beválthat"!

06Jul

Termi(ter)ator 2

A mai téma egy roppant egyszerű tervezési minta lesz, amire - ahogy a későbbiekben kiderül - a 3-31-Leadprogramnyelveink többségében már példát is találunk. Ha valaha volt már dolgod valamilyen adatbázissal (amit erősen remélek), legyen az mongo vagy épp SQL, akkor nagy az esély, hogy tömbökön másztál végig, mikor a lekérések eredményeit jelenítetted meg/végeztél vele műveletet. A végigjárásra a foreach parancsot használtad, amiről nem is sejtenéd, hogy mennyi köze lesz a mai témához.

Tovább »

16Feb

Builder Pattern és a 7 hardveres

Mai cikkemben a Builder Pattern kerül terítékre, hogy egy újabbat leleplezzünk a létrehozási minták közül. Mielőtt azonban beleugranánk abba, hogy mit is csinálunk ezen mintában, előtte valamit át kell beszélnünk, ami az objektumaink interfészével és működésével kapcsolatos.inception-trailer-movie-leonardo-de-caprio1 Vegyünk egy konkrét példát: Van egy controllerosztályunk, legyen pl. AjaxController, amivel az oldalunkra érkező ajax lekéréseinket szeretnénk kezelni.

Tovább »

29Jan

Tervezési minták - Adapter pattern

Kicsit megtörjük most a sort és a létrehozási minták helyett (amik közül a jómunkásember Builder következne) egy másik csoportból fogunk elővenni egyet, mégpedig a struktúrális minták közül, az adapter pattern-t. Ezen mintának a lényege, hogy két inkompatibilis interfész között hidat képez. Minderre egy különálló osztályt fogunk használni, aminek az a feladata, hogy a két független vagy éppen inkompatibilis osztály funkcionalitását kombinálja.1280px-Notebook-Computer-AC-Adapter A fenti kép is jó például szolgálhat. A laptopunk akkumulátorát és a konnektort egy adapter köti össze, ami a két összeférhetetlen "interfészt" fogja működőképessé tenni. Ellenben írjunk egy példát, az mindig segít. Tegyük fel, hogy oldalunk egy külső API-t használ és ez a szolgáltatás lassú/netán nem mindig elérhető, így a tartalmát szeretnénk gyorsítótárazni, na meg az API kulcsunkat se akarjuk mindenáron pörgetni, nehogy túllépjük a limitet. Ezt a gyorsítótárazást először balga módon a fájlrendszerbe tesszük.

Tovább »

24Jan

Tervezési minták - Singleton és a hét törpe

Elérkeztünk hát a tervezési minták taglalásához, így hát vegyük is át pontosan mit is értünk ez alatt.

Az informatikában programtervezési mintáknak (angolul Software Design Patterns) nevezik a gyakran előforduló programozási feladatokra adható általános, újrafelhasználható megoldásokat. Egy programtervezési minta rendszerint egymással együttműködő objektumok és osztályok leírása. - Wikipedia
A tervezési mintákat az informatikába Christopher Alexander építész ötlete nyomán hozta be egy programozókból álló négyes, az ún. Gang of Four a 90-es évek végén. Összegyűjtöttek 23 ilyen gyakran előforduló mintát és a Design Patterns c. könyvben forradalmasították az objektumorientált programozást. Három csoportra tagolhatók, melyek közül mi most az első csoportból emelnénk ki a legegyszerűbbet, mégpedig a singleton-t.

Tovább »

2014-2018 © Letscode.hu. Minden jog fenntartva. Build verzió: