Kódaudit és kódjavítási szempontok Magento projekteknél

Első lépés a Magento kódaudit során

Érdemes megnézni, történt-e valamilyen hard-kódolás a projektben, találunk-e benne olyan módosításokat, amelyek a core fájlokban lettek kivitelezve, nem pedig config-ban újraírva, vagy community/local codepool-ba áthelyezve, majd ott módosítva. Ehhez arra van szükségünk, hogy legyen egy ugyanolyan típusú (community/enterprise) Magento projektünk (a verziószám is egyezzen), amivel össze tudjuk hasonlítani.

 

Ehhez PHPStorm-ot fogunk használni, de egyéb programokkal is nagyon szépen kivitelezhető az összehasonlítás. Kattintsunk az app/code/core könyvtárra, majd jobb klikk rajta, „Compare With…” (Ctrl + D), majd válasszuk ki a „társ-környezet”-ben ugyanezt a mappát.

 

Miután elfogadtuk (OK), felugrik egy ablak a változásokkal, itt nyugodtan kapcsoljuk ki a „Show new files on left side”, illetve a „Show new files on right side” opciókat, csak összezavarna bennünket. Ezek után, ha minden igaz, csak a „Show difference” lehetőség marad aktív, ami kifejezetten a különbségek listázására való.

Sajnos olyan opciót nem találtam, ami a kommenteket nem veszi figyelembe, így bár a kódrészek megegyeznek, a kommentek miatt több fájlt is feldob, mint különbséget. Ettől eltekintve esetemben nincs különbség a 2 projekt között. Ha ez a te esetedben nem így van, tehát különbségek vannak a rendszerben, azokat a fájlokat, amelyek eltérnek az eredetitől, vissza kell állítani, és a módosításokat át kell helyezni.

tips Ezt többféleképpen is megtehetjük :

 

  1. Core fájl átmásolása az app/code/core/…/File.php elérésről, az app/code/local/…/File.php helyre, majd az eredeti fájl revertálása annak alaphelyzetébe

 

  1. A fájl config-ból való felülírása egy a saját modulunk fájljával, az eredeti fájlt ebben az esetben is alaphelyzetbe kell állítanunk, és azt mint ős-osztályt kiterjeszteni belőle

 

  1. Harmadik lehetőségként Observer-rel megvalósítani a működésbeli különbségeket

 

A fenti listából az első megoldást tartom a leggyorsabbnak, míg az utolsót a legszebbnek.

 

Amennyiben ezek megtörténtek ‒ tehát a capp/code/core fájlok az eredeti állapotukba, az új működések pedig valamilyen módon kiszervezésre kerültek ‒, a következő lépés az app/design/[frontend/adminhtml] mappa(k) tartalmának összehasonlítása. Sajnos gyakran előfordul, hogy a fejlesztő nem hoz létre saját template vagy layout fájlt, hanem a base/default/[template/layout] mappá(k)ban szereplő eredeti fájlokat módosítja.

 

Ennek javítása is hasonlóképpen történik, mint a kód esetében. A módosított fájlokat átmásoljuk a saját témánk alatt ugyanabban a struktúrában, az eredeti fájlokat pedig eredeti állapotukra revertáljuk. pl. az app/design/frontend/base/default/template/catalog/product/list.phtml-t másoljuk az app/design/frontend/rwd/theme/template/catalog/product/list.phtml elérésre, az eredetit pedig visszaállítjuk.

Layout fájlok esetében elég csak a változó részt átmásolni, nem szükséges az egész layout fájlt egy-egy rész miatt mozgatni, illetve még szebb megoldás, ha reference-szel hivatkozunk egy definiált Block-ra.

 

Template-ek esetében is érdemes felmérni annak lehetőségét, hogy tudjuk-e layout-ból számunkra megfelelő módon változtatni, módosítani. Ha layoutból módosítva azonban nem a megfelelő helyen jelennek meg a kérdéses új elemek/blokkok/template-k, a fent említett módszer (template mozgatása, változtatása) biztos megoldást jelent.

 

Tegyük fel, hogy ezeken a helyeken is minden rendben volt, a template és layout fájlok is ott kerültek módosításra, ahol ennek történnie kell (akkor ez egy nagyon szép projekt, valószínűleg a továbbiakban sem lesz vele gond). A meglévő modulok illetve template fájlok minőségét kell ellenőrizni, ezeket az alábbi szempontok alapján tudjuk megtenni, melyekre egyesével kitérünk:

 

  • Kódredundancia – kódismétlés
  • Kódrelevancia – bizonyos kódok megfelelő helyen történő tárolása
  • Installer Scriptek – minőség és megbízhatóság
  • Template fájlok – objektumhívások minimalizálása
  • Block / Controller ellenőrzés – terhelés, megvalósítás

 

 

Kódredundancia – kódismétlés

 

A kódredundancia: alatt az értendő, mikor egy adott modulon ‒ vagy akár több összefüggő modulon keresztül ‒ ugyanazt a működést valósítjuk meg, akár ugyan azzal a módszerrel, de több különböző helyen. Ha a kódban ilyet találunk, biztosan rossz helyen szerepelnek ezek a kódrészek, hiszen ezeknek optimális esetben egy helyen kell lennie, és onnan kerülnek meghívásra.

Sajnos ezt nem olyan könnyű kiszúrni, hiszen a kód nem egzakt, többféleképpen is nekifuthatunk valaminek az ellenőrzésének, így ennek a felmérése, megtalálása több időt vehet el, mint a végén az az idő, amelyet a javítására kell fordítani. Az alapvető szempont, hogy legjobb már az elején, a fejlesztés indításánál, felkészíteni az egységes működésre ezeket a folyamatokat, és ennek szellemében létrehozni a különböző megoldásokat.

 

Kódrelevancia – bizonyos kódok megfelelő helyen történő tárolása

 

Vannak kódok, melyeknek egyértelmű helyeik vannak, ilyen pl. egy új modul aloldala, action-je, aminek egyértelműen controller-be kell kerülnie, hiszen egyéb esetben nem működik. Vannak kódok azonban, amelyek funkciótól függően lehetnek Block-ban, vagy Helper-ben is, sőt, akár még Model-be is kerülhetne, de  ezeknek is megvan a pontos helye. Az általános működéshez kapcsolódó kódok azonban nagy valószínűséggel Helper-be kell, hogy kerüljenek, a keresztfunkcionalitás segítése érdekében. Jellemzően ilyenek az egy-egy modul állapotát ellenőrző kisebb metódusok, és/vagy amelyek közvetve vagy közvetlenül, de a config értékekkel dolgoznak.

 

Ezen felül kerülhetnek ide még az aktuális end user-hez kapcsolódó, de alaphelyzetben még le nem fejlesztett ellenőrzések, mint pl. egy adott típus ellenőrzése egy kiterjesztettebb regisztráció után, stb. $helper->isStudent(); $helper->isTeacher() stb. (Bár ezeket szintén akár observer-rel is meg lehet oldani.)

 

Ide lehet sorolni még bizonyos a Model-ekhez kapcsolódó „működéseket”, melyek néha eltévednek a megvalósítás közben. Jó példának tartom ide a Model exportálandó mezőit, illetve annak CSV header-eit, aminek nem helper-ben vagy block-ban a helye, hiszen bárhol ahol a Model meghívásra kerül, szükség lehet erre, aminek egyszerűbb és logikusabb módja az adott Model-ben tárolni.

Ide raknám még a Model-hez az esetleges parent-child elemek lekérését, tehát ha az egyik adott Model-nek van egy 1-* kapcsolata egy másik Model-el, azt esetleg egy $model->getChildSomethings(); metódussal a „fő” Model-ben elhelyezhető.

cikkgrafika-koderelevancia

Installer Scriptek – minőség és megbízhatóság

 

Az installer script-ek írása közben gyakran megfeledkezünk még mi magunk is arról, hogy valamilyen varázslatos és megmagyarázhatatlan módon (valaki töröl egy jellemzőt, mezőt, értéket, majd újra futtatja a script-et), időnként duplán futnak le, és így nem várt hibába ütközünk.

 

Ennek kiküszöbölése nem annyira időbeli, mint hozzáállásbeli erőfeszítést igényel. Bár valószínűleg saját script-ünk futtatásakor a saját környezetünk adataira támaszkodva készítjük el azt, érdemes ezeket mindenre felkészítve, már eleve egy ellenőrzéssel indítani.

Ha jellemzőt adunk hozzá, akkor a jellemzőt keressük először, és a hozzáadását kössük feltételhez. Tábla mezőinek manipulálásakor is érdemes ellenőrizni annak aktuális állapotát. A $installer->endSetup(); kódot, csak a 100%-ig biztos lefutáshoz illesztjük be, ha try-catch-be rakjuk az installer működését, az endSetup() ne ezen kívül, hanem a try végében helyezkedjen el, így biztosítva, hogy csak a helyes működéssel lép verziószámot modulunk.

 

Template fájlok – objektumhívások minimalizálása

 

A template fájlok (.phtml) írása során is igyekeznünk kell annak azonnali áttekinthetőségére, illetve a kód újrahasznosíthatóságára. Mit jelent ez?

 

  • Nem égetünk bele értékeket
  • Nem valósítunk meg benne működést
  • Nem hívunk a szükségesnél több metódust benne

 

Helyette:

 

  • Az értékeket/beállításokat lehetőleg már (a frontend-es kolléga támogatását elősegítve) layout szinten megadhatónak fejleszteni.
  • Mindennemű működést, ami a lekéréseken felül kerül hívásra, a Block-okban megvalósítani
  • A template-ek bizonyos szintű összetettségétől függően (pl. 2 különböző típus elágazásánál) külön template-ekbe szervezni.

 

Idetartozónak tartom még, bár valójában ez minden részében igaz a fejlesztéseknek, hogy egy-egy értéket (0, 1, 2) soha nem értékével azonosítunk, ezeket érdemes, sőt kötelező valamilyen konstansba helyezni, és így beszédes változónévvel azonnal áttekinthetővé tenni annak értékét. Erre is nagyon jó példák találhatóak a Core Magento-ban, termék Status értékek, xml config path-ek, valamilyen minimum/maximum értékek meghatározása.

cikkgrafika-templates

Azonfelül, hogy ezek sokkal áttekinthetőbbek, beszédesebbek is így, ha mindenhol ezt az értéket használjuk, arra keresni is sokkal egyszerűbb (kevesebb találat), illetve egy helyen tudjuk módosítani adott esetben.

 

Block / Controller ellenőrzés – terhelés, megvalósítás

 

A block-ok és controller-ek ellenőrzésénél két dolgot kell figyelembe venni, és ez a két dolog elég szorosan összefügg. A megvalósítás mikéntje, és a terhelés, amit ki kell állnia. Minél jobb a megvalósítás, annál kisebb a terhelés.

Amennyiben egy template fájlból a block getCollection() metódusa több alkalommal is hívásra kerül, azt jó megoldás cache-elni a block-ban, így valódi adatbázis művelet csak elsőre lesz, minden további csak a cache-elt objektumlistáig jut. Erre találunk egyébként core példákat is, amelyeket minden további nélkül lehet útmutatásként használni.

 

A controllerek esetében érdemes az egyes action-ök méretére egy pillantást vetni. Nem kívánok itt sem fontméretet sem pedig a sorok számát megadni, hogy mekkora terjedelemig megfelelő egy action, de abban azt hiszem, megegyezhetünk, hogy a szemnek kényelmesen áttekinthetőnek kell azt találnia, mind formai mind mennyiségi szempontból.

Amit még a controllerek-hez hozzátennék, hogy véleményem szerint az ezekben elhelyezett block példányosítások sem szükségszerűek, szintén meg lehet oldani a block-on belül. Ezzel máris csökkentjük annak méretét.

 

Összegzés

Ez mennyiségileg nem olyan sok dolog, hiszen mindössze 5 részletesebb és 2(1) ezektől különálló lehetséges problémafaktort tekintettünk át, de ha azt vesszük figyelembe, hogy egy-egy projekten akár nagyobb számú (értsd x > 4) fejlesztő is dolgozhat egymás mellett, modulonként akár egyszerre tízes nagyságrendű fájlokat hoznak létre/módosítanak, már nem is olyan kevés.

Ha minden ilyen fájlban csak egy ilyen apró hiba van, már az is indokolhat egy kisebb refaktorálást a projekt élesítése előtt/után. Illetve a témánkat tekintve, ezeken a pontokon végighaladva, egy részletesebb képet kapunk arról, hogy az új projektünk mennyi, és milyen problémákkal rendelkezik, melyeket meg kell oldanunk.

 

Szükséged van további segítségre? Keress minket azonnal, vagy olvass többet kódaudit szolgáltatásunkról.

 

434 válaszok
  1. Drug And Alcohol Treatment Near Me says:

    Alcohol Rehab Near Me Free http://aaa-rehab.com Alcohol Rehab Near Me http://aaa-rehab.com Alcohol Programs Near Me
    http://aaa-rehab.com

  2. banners says:

    whoah this weblog is fantastic i love reading your articles.
    Keep up the great work! You already know, lots of individuals
    are hunting round for this info, you can help them greatly.

    My site :: banners

  3. best mattress 2020 says:

    I love your blog.. very nice colors & theme. Did you make this website yourself or did
    you hire someone to do it for you? Plz respond as I’m looking to design my own blog and would like to know where u got this from.
    cheers

    Look at my blog post best mattress 2020

  4. best mattress 2021 says:

    I’ve been surfing on-line greater than 3 hours today, but I never discovered any attention-grabbing article like yours.
    It is pretty worth enough for me. In my view, if all webmasters and bloggers made
    good content material as you probably did, the net will likely be much more helpful than ever before.

    Feel free to visit my homepage :: best mattress 2021

  5. best mattress 2021 says:

    Nice post. I was checking constantly this blog and I’m impressed!
    Very useful information particularly the last part :) I care for such information a lot.
    I was looking for this particular info for a very long time.
    Thank you and best of luck.

    Also visit my webpage: best mattress 2021

  6. LewisWic says:

    bitcoin online kopen en verhandelen, geld verdienen vanuit huis , [url=http://online-crypto-trading.com/de/automatisierter-Bitcoin-Handel.html]bitcoin aktuell kurs[/url]
    [/url]

  7. dakisolatie says:

    Oh my goodness! Amazing article dude! Thanks, However I am encountering difficulties with your RSS.
    I don’t understand the reason why I cannot subscribe to it.
    Is there anybody else having identical RSS problems?
    Anyone that knows the answer will you kindly respond?
    Thanks!!

    Also visit my homepage … dakisolatie

  8. SEO service NL says:

    Hey there would you mind letting me know which webhost you’re using?
    I’ve loaded your blog in 3 different web browsers and I must say this blog loads a lot faster then most.
    Can you recommend a good web hosting provider at a honest price?

    Many thanks, I appreciate it!

    Also visit my blog post – SEO service NL

  9. bayan escort says:

    Hey there! This post couldn’t be written any better! Reading this post reminds me of my good old room mate! He always kept talking about this. I will forward this page to him. Pretty sure he will have a good read. Many thanks for sharing!

  10. order viagra says:

    Hey just wanted to give you a quick heads up.
    The text in your post seem to be running off the screen in Firefox.

    I’m not sure if this is a formatting issue or something to
    do with web browser compatibility but I figured I’d post
    to let you know. The style and design look great though!
    Hope you get the problem solved soon. Many thanks

    Here is my web page … order viagra

  11. DurekItape says:

    You expressed that effectively. basics of writing an essay [url=https://englishessayhelp.com/]homework hotline[/url] dissertation topics in education

  12. DurekItape says:

    Point very well applied.! how to write a movie in an essay [url=https://discountedessays.com/]writing websites[/url] choosing a dissertation topic

  13. buy viagra soft usa says:

    So obviously, we are keeping it stable, but every time something creative comes not at home, as Mikhailik’s inoculation viagra prescription is gloweringly weakened. Little by miniature we are preparing for circle, towards the next year in the triumph grade.

  14. generic viagra says:

    In children born formerly 32 weeks of gestation, cerebral immaturity usually leads to intraventricular hemorrhage (IVH): this occurs in 60-90% of cases. With hemorrhages of the third and fourth degrees, the distribution of cerebrospinal flowing is psychoneurotic, which leads to distention of the ventricles of the perspicacity and hydrocephalus http://ed4rx.com buy cialis. It is severe IVH and post-hemorrhagic hydrocephalus that many times lead to the expiration of too early babies.

  15. DwayneAporb says:

    Really lots of awesome tips. canadian drugs [url=https://canadianpharmaceuticalsrx.com/]erectile dysfunction medications[/url] drug price

  16. DirekItape says:

    Reliable stuff. Thanks. writing essays about yourself [url=https://essayextra.com/]dissertation[/url] undergraduate dissertation

  17. Henry Nork says:

    I’m a 17 year old male who has very good experience with Relationships, I have helped a lot of my friends get through situations and got everything back to normal. I want to start a website where people post any questions about their Relationship and allow me to help them get things back in action again.. If anyone has any ideas please let me know..

  18. Melviwoord says:

    Kudos. A good amount of stuff!
    doctor prescription [url=https://canadianpharmacyfirst.com/]cheap drugs online[/url] canadian pharmacy drugs online

  19. RV Maintenance Near Me says:

    Hi there! I could have sworn I’ve visited this web site before but after
    going through a few of the articles I realized it’s new to me.
    Anyhow, I’m certainly pleased I stumbled upon it and I’ll be bookmarking it and checking back frequently!

    My website; RV Maintenance Near Me

  20. RV Shops Near Me says:

    Pretty nice post. I just stumbled upon your weblog and wanted to say that I’ve really enjoyed browsing your
    blog posts. In any case I will be subscribing to
    your feed and I hope you write again very soon!

    Here is my site: RV Shops Near Me

  21. DurekItape says:

    Nicely voiced without a doubt. ! essay writing online [url=https://paperwritingservicestops.com/]write my essay[/url] meaning of thesis

  22. DwayneAporb says:

    Incredible tons of superb advice. drugs online [url=https://canadianpharmaciesmsn.com/]online pharmacy[/url] mexican pharmacies online

  23. Melviwoord says:

    Very good facts, Cheers.
    prescription without a doctor’s prescription [url=https://canadianrxonlinepharmacy.com/]canadian pharmacies that ship to us[/url] walgreens pharmacy

  24. DurekItape says:

    Thanks a lot, Lots of knowledge!
    pay you to write my essay [url=https://englishessayhelp.com/]papers writing service[/url] dissertation editing services reviews

  25. DwayneAporb says:

    Thank you! Ample posts!
    global pharmacy canada [url=https://rxpharmacymsn.com/]canadian pharmacies that are legit[/url] online drugstore pharmacy

  26. DirekItape says:

    You explained this terrifically. introduction essay writing [url=https://homeworkcourseworkhelps.com/]cheap essay writing services[/url] phd diss

  27. Magda Mcpadden says:

    Greetings! Very helpful advice in this particular article! It is the little changes that will make the most significant changes. Thanks for sharing!

  28. Familie pubquiz politiek Overijssel says:

    Have you ever thought about adding a little bit more
    than just your articles? I mean, what you say is important and all.
    However just imagine if you added some great visuals or videos to give
    your posts more, “pop”! Your content is excellent but with images and videos, this blog could undeniably be one of the best
    in its niche. Terrific blog!

    My blog post … Familie pubquiz politiek Overijssel

  29. Tereasa Turben says:

    An outstanding share! I have just forwarded this onto a colleague who has been conducting a little homework on this. And he actually ordered me breakfast simply because I found it for him… lol. So let me reword this…. Thank YOU for the meal!! But yeah, thanx for spending some time to discuss this matter here on your website.

  30. Vance Leehy says:

    Hello there! I could have sworn I’ve been to this blog before but after looking at many of the posts I realized it’s new to me. Anyhow, I’m certainly happy I stumbled upon it and I’ll be book-marking it and checking back often!

  31. Business Coaching says:

    Excellent post. I was checking constantly this blog and I am impressed!
    Extremely helpful info specifically the last part :) I care for such information much.
    I was seeking this particular info for a very long time.

    Thank you and good luck.

    Visit my blog post Business Coaching

  32. Delilah Boccella says:

    I blog frequently and I truly thank you for your content. Your article has really peaked my interest. I’m going to bookmark your blog and keep checking for new information about once per week. I opted in for your RSS feed as well.

  33. Stan Gibbon says:

    I truly love your blog.. Excellent colors & theme. Did you develop this website yourself? Please reply back as I’m trying to create my very own site and would love to know where you got this from or exactly what the theme is named. Cheers!

  34. Lauren Hollen says:

    Hi there! I simply want to give you a big thumbs up for your excellent information you’ve got here on this post. I’ll be returning to your site for more soon.

  35. Minh Eckler says:

    Can I simply just say what a comfort to uncover someone that actually understands what they are discussing on the internet. You certainly know how to bring a problem to light and make it important. More people need to look at this and understand this side of the story. I was surprised that you’re not more popular since you definitely have the gift.

  36. Clemencia Beacom says:

    I want to to thank you for this very good read!! I definitely loved every little bit of it. I have you saved as a favorite to look at new things you post…

  37. Evelyne Millage says:

    I was more than happy to discover this web site. I want to to thank you for ones time just for this fantastic read!! I definitely enjoyed every part of it and i also have you saved to fav to check out new things on your website.

  38. LewisWic says:

    bitcoin online kopen en verhandelen, geld verdienen vanuit huis , [url=http://online-crypto-trading.com/de/automatisierter-Bitcoin-Handel.html]bester Ort, um Bitcoin zu handeln[/url]
    [/url]

  39. Erwin Hirschberg says:

    I blog frequently and I genuinely thank you for your content. This great article has truly peaked my interest. I will bookmark your website and keep checking for new information about once per week. I opted in for your RSS feed too.

  40. Joie Kubiak says:

    This is a very good tip particularly to those fresh to the blogosphere. Simple but very accurate information… Thank you for sharing this one. A must read article!

  41. Johnnie Huizenga says:

    Right here is the perfect website for everyone who wants to find out about this topic. You understand so much its almost hard to argue with you (not that I really would want to…HaHa). You certainly put a fresh spin on a topic that’s been discussed for many years. Great stuff, just great!

  42. Adriane Marioni says:

    Hello! I could have sworn I’ve visited this web site before but after looking at a few of the articles I realized it’s new to me. Anyways, I’m certainly pleased I discovered it and I’ll be bookmarking it and checking back often!

Trackbacks & Pingbacks

  1. cialis online cheap

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  2. best online pharmacy for viagra

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  3. buy hydroxychloroquine online

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  4. united healthcare viagra

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  5. ed meds online without doctor prescription

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  6. price of lumigan 0.01% 2.5 oz bottle

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  7. cialis 20 mg price

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  8. tylenol walmart szerint:

    tylenol walmart

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  9. naltrexone canadian pharmacy

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  10. cipro sale szerint:

    cipro sale

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

  11. viagra szerint:

    viagra

    Kódaudit és kódjavítási szempontok Magento projekteknél – aionhill.com

Hagyjon egy választ

Want to join the discussion?
Feel free to contribute!

Vélemény, hozzászólás?

Az email címet nem tesszük közzé.