
Kuiva, märkä, kuuma, kylmä. Nämä ovat vain sanoja, eikö niin? Tulin kertomaan, että ne voivat olla enemmän.

Suurin osa, elleivät jopa kaikki, ohjelmoijista on kuullut termeistä DRY (kuivaa) ja WET (märkää), kun ne liittyvät koodiin. Mutta julistetaan ensin, mitä nämä lyhenteet tarkoittavat, jotta kukaan ei ole huonosti perillä asioista.
DRY – Don’t Repeat Yourself
WET – Write Everything Twice
Pohdi hetki… Kumpi lyhenne kuulostaa siltä, että se voisi olla parempi koodauskäytäntö? Jos aavistuksesi tönäisi sinua DRY:n suuntaan, olisit oikeassa. No, 90 % ajasta.
Ohjelmoijana pyrkimys pitää koodisi DRY:nä, eli olla toistamatta koodia, on yleensä paras käytäntö. On kuitenkin tilanteita, joissa hieman kosteutta lisäämällä koodiin voi tehdä elämästäsi hieman helpompaa.
Katsotaanpa ensin esimerkki kummastakin.
Tältä näyttää WET-koodi: (Rubya käyttäen)
class John
def build(n)
n + 1
end def destroy(n)
n - 1
end
end class Peter
def build(n)
n + 1
end
end
Havaitsitko Write Everything Twice -kohdat?
Tässä tapauksessa molemmilla luokilla, John & Peter, on kyky käyttää build-metodia. Jos kuitenkin tulevaisuudessa haluttaisiin tehdä muutos build-metodiin, se täytyisi tehdä kahdesti, jokaisessa kohdassa, jossa build-metodia käytetään.
Toisaalta, jos koodi olisi DRY, meidän täytyisi tehdä kyseinen muutos vain kerran. Tässä tapauksessa moduulin käyttäminen saattaisi auttaa pitämään koodimme DRY:nä:
module Builder
def build(n)
n + 1
end
endclass John
include Builder def destroy(n)
n - 1
end
endclass Peter
include Builder
end
Moduulin käyttäminen antaa molemmille luokille mahdollisuuden rakentaa. Ja tietysti John säilyttää edelleen destroy-metodinsa.
Koodipohjan DRY:n pitäminen on hyödyllisintä sellaisissa paikoissa, joissa muutoksia on odotettavissa melko usein. Kun sinulla on DRY-koodi, sinun tarvitsee tehdä muutokset vain yhteen tai muutamaan alueeseen eikä kaikkiin paikkoihin, joissa koodia saatetaan käyttää.
Periaatteessa tärkeintä on, että DRY-koodi vähentää virheiden mahdollisuutta. Kuvittele, että identtiseen koodiin on tehtävä muutos viidessä eri kohdassa, mutta unohdat muuttaa koodia yhdessä näistä kohdista… Näetkö ongelman? Joko ohjelmasi kaatuu tai, mikä vielä pahempaa, käytät vanhentunutta menettelytapaa näyttäytyessäsi normaalilta.
Tämän sanottuaan, KOSTEALLA koodilla on ansionsa. Jos ennakoit identtisen koodin haarautuvan eri suuntiin myöhemmin, WET-koodi voi helpottaa tätä tulevaa muutosta.
Lisäksi liian DRY-koodi voi aiheuttaa päänvaivaa seuraavalle ohjelmoijalle, joka käyttää koodiasi, johon saatat kuulua itsekin. Tämä voi johtua siitä, että joudut tekemään vaivalloisen määrän loogisia hyppyjä selvittääksesi tietyllä koodirivillä vaikuttavia tekijöitä.
Tämän sanottuasi, yleisenä nyrkkisääntönä, pidä koodisi DRY-ihmiset. Huomisen te arvostatte sitä.