Ruby Refaktorálása
Total Page:16
File Type:pdf, Size:1020Kb
EÖTVÖS LORÁND TUDOMÁNYEGYETEM INFORMATIKAI KAR KOMPUTERALGEBRA TANSZÉK Ruby refaktorálása Sebestyén Gábor programtervező matematikus Témavezető Dr. Kovács Attila Budapest, 2010 Tartalomjegyzék Bevezető................................................................................................................................. 4 Mi a Ruby? ............................................................................................................................ 7 A Ruby rövid története...................................................................................................... 7 A futtatási környezetről röviden........................................................................................ 8 A Ruby nyelv alapjai......................................................................................................... 9 Kommentek..................................................................................................................... 10 A változók........................................................................................................................10 Operátorok ...................................................................................................................... 12 Vezérlési szerkezetek ......................................................................................................13 Ciklusok...........................................................................................................................16 Break, redo és next.......................................................................................................... 18 Iterátorok......................................................................................................................... 18 A yield parancs................................................................................................................ 20 Blokkok........................................................................................................................... 20 Típusok............................................................................................................................ 21 Stringek.......................................................................................................................21 Számok........................................................................................................................23 Tömbök.......................................................................................................................24 Hash táblák..................................................................................................................26 Tartományok............................................................................................................... 27 Reguláris kifejezések.................................................................................................. 29 Minta alapú helyettesítések ........................................................................................30 Kivétel kezelés ................................................................................................................31 A retry parancs............................................................................................................ 33 Kivételek kiváltása - a raise metódus..........................................................................33 A catch-throw szerkezet..............................................................................................34 Ruby, az objektum-orientált nyelv....................................................................................... 35 Minden objektum!........................................................................................................... 35 Modulok...........................................................................................................................36 Osztályok ........................................................................................................................ 37 Öröklődés.........................................................................................................................38 Objektumok .................................................................................................................... 38 Származás megadása ...................................................................................................... 39 A self és a super kulcsszavak .....................................................................................39 Osztály és példány változók............................................................................................ 40 Osztály szintű konstansok .............................................................................................. 42 Korlátozások és láthatósági körök megadása ................................................................. 42 Objektum változók és metódusok láthatóságának szabályozása ...............................42 Private ........................................................................................................................ 43 Protected..................................................................................................................... 44 Bővítés mixinekkel ......................................................................................................... 44 Üzenetek avagy metódusok ............................................................................................ 45 Osztály metódus deklarálása ......................................................................................45 Példány metódus deklarálása...................................................................................... 47 Metódus átnevezése aliasszal .....................................................................................47 2 Operátor átdefiniálás, túlterhelés ............................................................................... 47 Dinamikus bővítés .......................................................................................................... 48 Objektum bővítése, módosítása ................................................................................. 50 A refaktorálás bemutatása egy példán keresztül...................................................................52 A refaktorálásról röviden................................................................................................. 52 Egy példa......................................................................................................................... 53 A kiindulópont................................................................................................................. 54 A Movie osztály.......................................................................................................... 54 A Rental osztály.......................................................................................................... 54 A Customer osztály.....................................................................................................55 A refaktorálás első lépése................................................................................................ 58 A statement metódus szétszedése és újraépítése ........................................................58 1. lépés, blokk kiemelése metódusba (Extract Method) ............................................59 2. lépés, metódus átnevezése (Rename Method) ....................................................... 61 3. lépés, az amountFor metódus átmozgatása a Rental osztályba (Move Method) ..62 4. lépés, az amountFor(...) kifejezés kifejtése (Inline)................................................63 5. lépés, a totalAmount temporáris változó kiiktatása ............................................... 65 6. lépés, a törzsvásárlói pontok kiszámításának kiemelése metódusba (Extract Method).......................................................................................................................66 7. lépés, a teljes ár kiszámolásának kifaktorálása önálló metódusba (Extract Method) .....................................................................................................................................68 8. lépés, a teljes ár kiszámolásának kifaktorálása önálló metódusba (Extract Method) .....................................................................................................................................69 9. lépés, bevezetjük a HTML alapú kiszámlázást.......................................................70 Egy refaktoráló eljárás megvalósítása .................................................................................72 Az eljárás rövid ismertetése.............................................................................................72 Motiváció ................................................................................................................... 72 Az eljárás elvi lépései ................................................................................................ 72 Támogató eszközök ........................................................................................................ 73 JRuby AST támogatás ................................................................................................73 A RadRails keretrendszer............................................................................................73 Node Provider............................................................................................................. 74 Node