paint-brush
Kod ysy 286 - Ene-çaganyň usuly bir-birine gabat gelýärtarapyndan@mcsee
123 oka

Kod ysy 286 - Ene-çaganyň usuly bir-birine gabat gelýär

tarapyndan Maximiliano Contieri4m2025/01/16
Read on Terminal Reader

Örän uzyn; Okamak

Ene-atalar synplarynda hususy usul çaknyşyklary näsazlyklara we kod yslaryna sebäp bolup biler. Aç-açan atlary saklamak, biri-biriniň üstünden düşmezlik we ene-atalar synplarynda çaga synplarynyň ulanyp biljek atlary bilen arassa kod amallary.te usullaryna eýermek bilen bu zatlardan gaça duruň.
featured image - Kod ysy 286 - Ene-çaganyň usuly bir-birine gabat gelýär
Maximiliano Contieri HackerNoon profile picture
0-item

Ene-atanyň we çaganyň usullary çaknyşanda!


TL; DR: Çaga synplarynyň ulanyp biljek atlary bilen ene-atalar sapaklarynda hususy usullary ulanmakdan gaça duruň.

Meseleler

  • Iň geň galdyryjy prinsipiň bozulmagy
  • Garaşylmadyk hereket we kemçilikler
  • Gizlin baglylyklar
  • Çäklendirilen giňelme
  • Kod düşnüksizligi
  • Açyk / ýapyk ýörelgäniň bozulmagy
  • Lealňyş dizaýn

Çözgütler

  1. Iýerarhiýalardan gaça duruň
  2. Şahsy usullaryň adyny üýtgediň
  3. Adyny aýdyň saklaň
  4. Atlaryň gabat gelmeginden gaça duruň
  5. Goralýan usullardan gaça duruň
  6. Kody gaýtadan ulanmazlyk üçin möhüm gatnaşyklar üçin toparlara bölüň

Kontekst

Ene-atalar we çagalar synplarynda şol bir usul adyny ulananyňyzda, bulaşyklyk döredýärsiňiz.

Ene-atalar synpynda hususy usul, çaga synpynda şol bir at bilen köpçülige açyk bir usul bar bolsa-da, ony ýok edip bolmaz.

Bu statiki dilleriň köpüsiniň dizaýnynda ýüze çykýan mesele. Bu birikme näsazlyklara sebäp bolýar we koduňyzy saklamagy kynlaşdyrýar.

Mysal kody

Nädogry

 <? class ParentClass { private function greet() { // This method is private return "Hello from ParentClass"; } public function callGreet() { return $this->greet(); } } class ChildClass extends ParentClass { public function greet() { // Overriding a concrete method is a code smell // Compilers SHOULD warn you return "Hello from ChildClass"; } } $child = new ChildClass(); echo $child->callGreet(); // When callGreet() is invoked on the $child object, // it executes the following: // It calls $this->greet(), // which refers to the greet() method of ParentClass // because the original method is private // and cannot be overridden or accessed from ChildClass. // The unexpected output is 'Hello from ParentClass'

Dogry

 <? class ParentClass { protected function greet() { // notice the 'protected qualifier' return "Hello from ParentClass"; } public function callGreet() { return $this->greet(); } } class ChildClass extends ParentClass { public function greet() { return "Hello from ChildClass"; } } $child = new ChildClass(); echo $child->callGreet(); // The output is "Hello from ChildClass" // This is the standard (and wrong) solution // Also fixed by most AIs
 <? abstract class ParentClass { // Declare greet() as an abstract method // Following the template-method design pattern abstract protected function greet(); public function callGreet() { return $this->greet(); } } class ChildClass extends ParentClass { protected function greet() { return "Hello from ChildClass"; } } class OtherChild extends ParentClass { protected function greet() { return "Hello from OtherChild"; } } $child = new ChildClass(); echo $child->callGreet(); // Output: Hello from ChildClass $otherChild = new OtherChild(); echo $otherChild->callGreet(); // Output: Hello from OtherChild

Ectionüze çykarmak

  • [x] -arym awtomat

Bu ysy ene-atalar synplarynda hususy usullary gözläp we çaga synplarynyň şol bir at bilen usullary kesgitleýändigini ýa-da ýokdugyny barlap bilersiňiz. Şeýle hem, hususy usullary çagyrýan ene-atalaryň usullaryny barlamaly.

Bellikler

  • Iýerarhiýa

Dereje

  • [x] Aralyk

Näme üçin Bijection möhüm?

Arassa we öňünden aýdyp boljak kod, modelleriň hakyky dünýä iýerarhiýasyny görkezmelidir.

Bir-biriniň üstünden düşýän atlar bilen şahsy usullary ulananyňyzda, model bilen ýerine ýetirişiň arasynda Bijection boşlugyny döredýärsiňiz.

Bu boşluk döredijileri bulaşdyrýar, kemçilikleri köpeldýär we arassa kod ýörelgelerini bozýar.

AI nesli

AI generatorlary köplenç ene-çaga gatnaşyklaryny döredenlerinde bu ysy döredýärler.

Giriş derejelerini barlap bilmezler ýa-da mirasyň netijelerini göz öňünde tutup bilmezler.

AI kesgitlemek

AI gurallary bu ysy anyk görkezmeler bilen düzedip biler.

AI-den bir-biriniň üstünden düşýän usul atlarynyň we refaktor iýerarhiýalarynyň bardygyny barlap bilersiňiz.


Olary synap görüň!

Rememberatda saklaň: AI kömekçileri köp ýalňyşlyk goýberýärler

Dogry görkezmeler bolmazdan

Aýratyn görkezmeler bilen

ChatGPT

ChatGPT

Klod

Klod

Çylşyrymlylyk

Çylşyrymlylyk

Göçür

Göçür

Kizler

Kizler

Netije

Ene-atalar we çagalar synplary düzülende, mirasy we elýeterliligi anyk kesgitleýän usullary ulanmaly.

Çaga usullary bilen gabat gelýän hususy usullardan gaça duruň. Bu koduňyzy okalýan, giňeldilen we arassa kod ýörelgelerine laýyklaşdyrýar.

Python ýaly diller, atlaryna garamazdan ene-atalaryň usullaryny ýok etmäge mümkinçilik berýär, Java bolsa giriş derejelerini berk ýerine ýetirýär.

C # Java- a meňzeýär. Bu tapawutlar, garaşylmadyk hereketlerden gaça durmak üçin işleýän diliňiziň anyk düzgünlerine düşünmelidigiňizi aňladýar.

Gatnaşyklar

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxviii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xii

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-iii-t7h3zkv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-xxv

https://hackernoon.com/how-to-find-the-stinky-parts-of-your-code-part-viii-8mn3352


Düşündiriş: Kod yslary meniň pikirim .

Karzlar: Unsplash -da Matt Artzyň suraty


Miras gowy, ýöne berk jebisligi girizýändigini hiç wagt ýatdan çykarmaly däl.

Robert C. Martin


Bu makala, HackerNoon-daky CodeSmell seriýasynyň bir bölegi.


L O A D I N G
. . . comments & more!

About Author

Maximiliano Contieri HackerNoon profile picture
Maximiliano Contieri@mcsee
I’m a sr software engineer specialized in Clean Code, Design and TDD Book "Clean Code Cookbook" 500+ articles written

HANG TAGS

BU madda öňe sürüldi...