Articles

Ruby: Load vs. Require vs. Include

kezdőként bármiben, fontos, hogy ne csak gyakorolj, bármi is legyen, hanem tanulmányozd a területen fejlettebb emberek munkáját is. Mivel viszonylag új vagyok a programozásban, szeretek bármilyen szintű programozóktól kódot olvasni, csak azért, hogy felfedezzem a hasonló problémák különböző megközelítéseit.

az egyik szembetűnő különbség, amit észrevettem a kódom és a fejlettebb programozók kódja között, a fájlszerkezet és a fájlok száma, de ha címkét akarsz tenni rá, ők az aggodalmak szétválasztását gyakorolták, én pedig nem. tudtam, hogy ez egy fontos koncepció a számítógépes programozásban, de őszintén szólva, a SoC gyakorlásában a legjobban az zavar, hogy egyszerűen nem voltam kényelmes a Load, Require és Include — vagyis azokat a dolgokat használni, amelyek összekapcsolják a program fájljait, és így sokkal könnyebb megvalósítani a SoC-t.

nézzük meg a színfalak mögött ezt a három módszert, és hogyan tudják a programokat a következő szintre vinni.

Include

Ez meglehetősen egyszerű. Ha több osztályt írt, amelyek hasonló módszereket osztanak meg, akkor ezeket a módszereket kibonthatja egy modulba. Miután a metódusok be vannak írva a modulba, “beillesztheti” azt a modult bármelyik osztályba, amelynek esetleg meg kell hívnia ezeket a módszereket. Nem kell tartani ezeket a módszereket lógott. Az alábbiakban egy rövid példa arra, hogyan írná ki:

class Chocolate
include IceCream
endclass Vanilla
include IceCream
endmodule IceCream
def ice_cream
end
end

mostantól mindkét osztály hozzáfér aice_creammetódushoz ainclude használatával .

Load

míg aincludebemutatja, hogyan használhatjuk egy másik Ruby osztály Használati funkcióit, nézzük meg, hogy aload hasonló funkcióval rendelkezik, csak az osztályok megadása helyett a projektkönyvtárunkból adunk meg fájlokat. Ez és a következő módszerünk, a require lehetővé teszi a program számára , hogy a fájl(ok) tetején néhány extra sorral elkülönítse az aggályokat.

a SoC alapötlete az, hogy a program egy aspektusát úgy szűkítse le, hogy valójában csak egy dolgot csináljon. Ezt akkor tesszük, amikor újraírjuk a kódot, így a módszereink és a funkcióink csak egy dolgot tesznek. Ugyanez igaz a fájljainkra is.

a dolog, hogy emlékezzen a load, hogy a fájl halad a ténylegesen betöltődik minden alkalommal, amikor hívják. Tehát, ha van egy függvénykönyvtár, amelyet használni szeretne, ne feledje, hogy minden alkalommal, amikor a függő fájlt hívják, a load fájl is, nos, betöltött. Ha valamilyen oknál fogva az alkalmazás/program egy fájlja dinamikusan változik, és más fájloktól való függőségként használják, fontolja meg a load használatát . Ellenkező esetben a load a fájl betöltésének száma miatt káros hatással lehet az alkalmazás teljesítményére.

Require

a Require nagyon hasonlít load, de a fő különbség az, hogy a require csak egyszer tölti be az átadott fájlt, majd ne feledje, hogy a fájl betöltődött. Ezért arequire a népszerűbb lehetőség, ha harmadik féltől származó könyvtárakat használ a programban vagy alkalmazásban. Várjunk csak, harmadik fél könyvtárak? Úgy hangzik, mint…drágakövek! Így van! Miután telepített egy drágakövet a könyvtárába, vagy megadta azt a Gemfile-ben, csak azt a drágakövet kell “megkövetelnie” a fájl tetején, az adott drágakő funkcionalitásának felhasználásával. Gyerekjáték.

most már tudom, hogyrequiretalán úgy hangzik, mint egy kis Rubin varázslat, ezért tárjuk fel az el nem énekelt hősöt ebben az egészben:$LOAD_PATH.

$LOAD_PATH egy globális változó, hogy jön a Ruby. Ha betölti az IRB-t a terminálról , és beírja a $LOAD_PATH parancsot, akkor valami ehhez hasonlót kap:


Ez csak egy sor abszolút útvonal. A gem telepítésekor a Ruby hozzáadja a gem könyvtárak abszolút elérési útjait a $LOAD_PATH – hez. Ennek több értelme van, igaz? A Ruby egyszerűen felhívhatja a require funkciót, mivel már rendelkezik az abszolút elérési úttal a $LOAD_PATH tárolásához .

reméltem, hogy ezt a bejegyzést eszközként használhatom arra, hogy többet megtudjak arról, miért használjuk ezeket a módszereket, és hogyan segítenek nekünk jobb fejlesztőkké válni. Ha érdekli a “hogyan” ezek a módszerek működnek, további kutatásokra lehet szükség.