Ruby:
Koodin refaktorointi

Kuinka:

Käydään läpi esimerkki Ruby-metodin refaktoroinnista, joka laskee neliöiden summan.

Ennen refaktorointia:

def sum_of_squares(numbers)
  sum = 0
  numbers.each do |number|
    square = number * number
    sum += square
  end
  sum
end

puts sum_of_squares([1, 2, 3])  # Tuloste: 14

Refaktoroinnin jälkeen:

def sum_of_squares(numbers)
  numbers.map { |number| number**2 }.sum
end

puts sum_of_squares([1, 2, 3])  # Tuloste: 14

Refaktoroitu versio käyttää Ruby Enumerablesia ilmaistakseen saman logiikan tiiviimmin ja selkeämmin. map-metodi muuntaa jokaisen elementin ja sum aggregoi niiden arvot, poistaen tarpeen manuaaliselle silmukoiden hallinnalle ja muuttujan sijoituksille.

Syvä sukellus

Refaktoroinnilla on rikas historiallinen konteksti, joka juontaa juurensa ohjelmistokehityksen alkuaikoihin. Ensimmäiset maininnat voidaan jäljittää 1990-luvulle, merkittäviä panoksia teki Martin Fowler kirjassaan “Refactoring: Improving the Design of Existing Code”, missä hän tarjoaa katalogin kuviot refaktorointiin. Siitä lähtien refaktorointi on muodostunut ketterän kehityksen kulmakiveksi.

Puhuessamme refaktoroinnin vaihtoehdoista, meidän on harkittava erilaista lähestymistapaa kuten “Uudelleenkirjoittaminen”, missä korvaat vanhan järjestelmän osittain tai kokonaan tai adaptoit käytänteitä kuten “Koodiarvostelut” ja “Pariohjelmointi” parantaaksesi koodin laatua asteittain. Kuitenkaan nämä eivät ole korvikkeita refaktoroinnille; ne täydentävät prosessia.

Toteutuksen kannalta Ruby tarjoaa erinomaisen ja ilmaisuvoimaisen syntaksin, joka usein johtaa lyhyempään, luettavampaan koodiin refaktoroinnin jälkeen. Keskeisiä periaatteita ovat DRY (Don’t Repeat Yourself), merkityksellisten nimien käyttäminen, metodien pitäminen lyhyinä ja keskittyneinä yhteen tehtävään, ja Rubyn Enumerable-moduulin tehokas käyttö, kuten yllä olevassa esimerkissä nähdään. Automaattiset työkalut, kuten RuboCop, voivat myös auttaa ohjelmoijia tunnistamaan koodin kohdat, jotka hyötyisivät refaktoroinnista.

Katso myös

Syventyäksesi Ruby-koodin refaktorointiin, tutustu näihin resursseihin: