Ruby Academy · Oppitunti

Koodin kirjoittaminen

Järjestä gem.

Oppitunti 2/413 vaihetta

Koodin kirjoittaminen on ilmainen Ruby Academy-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Ruby Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Gemin koodin järjestäminen

Hyvä gemin koodi on helppo lukea ja ladata, ja se sijoitetaan nimiavaruuteen, jotta se ei koskaan törmää muihin kirjastoihin. Keskeinen työkalu on kaiken ympärille asetettava ylimmän tason moduuli.

  • Yksi nimiavaruusmoduuli gemiä kohden.
  • Yksi tiedosto luokkaa kohden niin, että rakenne vastaa nimiavaruutta.
  • Pieni julkinen rajapinta.

Nimiavaruusmoduuli

Sijoittakaa kaikki luokat gemin mukaan nimettyyn moduuliin. Näin Client-luokkanne ei törmää jonkun muun Client-luokkaan.

module Greeter
  class Hello
    def message
      "Hi there"
    end
  end
end

puts Greeter::Hello.new.message

Tiedostojen nimeämiskäytäntö

Ruby-työkalut odottavat tiedostopolkujen vastaavan vakioiden nimiä:

  • Greeter sijaitsee tiedostossa lib/greeter.rb.
  • Greeter::Hello sijaitsee tiedostossa lib/greeter/hello.rb.

Tämän käytännön ansiosta autoload-lataajat löytävät tiedostot automaattisesti.

Sisäisten tiedostojen lataaminen

Aloitustiedosto kokoaa kaiken yhteen komennon require_relative avulla. Kukin luokkatiedosto ladataan kerran, joten koko kirjasto latautuu yhdellä komennolla require 'greeter'.

Selkeä julkinen rajapinta

Paljastakaa pieni joukko metodeja, joita käyttäjät todella kutsuvat. Yleinen käytäntö on määritellä moduulitasoisia helppokäyttöisiä metodeja, jotka välittävät kutsut sisäisille luokille.

module Greeter
  def self.say(name)
    "Hello, " + name + "!"
  end
end

puts Greeter.say("Ada")

Sisäisten toteutusten piilottaminen

Merkitkää apumetodit private-määreellä, jotta ne eivät kuulu julkiseen sopimukseenne. Kaikki julkinen on käyttäjille annettu lupaus, joten pitäkää julkinen rajapinta harkittuna ja pienenä.

class Calculator
  def total(a, b)
    add(a, b)
  end

  private

  def add(x, y)
    x + y
  end
end

puts Calculator.new.total(2, 3)

Määritysten asetustapa

Monet gemit tarjoavat configure-lohkon, jonka avulla käyttäjät voivat asettaa asetukset kerran. Yksinkertaisessa toteutuksessa asetukset tallennetaan määritysobjektiin.

module App
  class Config
    attr_accessor :api_key
  end

  def self.config
    @config ||= Config.new
  end

  def self.configure
    yield(config)
  end
end

App.configure { |c| c.api_key = "secret" }
puts App.config.api_key

Mukautetut virheet

Määritelkää gemikohtaiset virheluokat nimiavaruutenne alle, jotta käyttäjät voivat ottaa kiinni juuri teidän virheenne. Perikää luokat luokasta StandardError.

module Payment
  class Error < StandardError; end
  class DeclinedError < Error; end
end

begin
  raise Payment::DeclinedError, "card declined"
rescue Payment::Error => e
  puts "Handled: " + e.message
end

Välttäkää monkey patchingia

Välttäkää ydinluokkien, kuten String-luokan, muokkaamista maailmanlaajuisesti. Se aiheuttaa yllätyksiä muussa koodissa. Jos laajentaminen on välttämätöntä, käyttäkää refinements-ominaisuutta, jotta muutos rajoittuu tiettyyn käyttöön, tai lisätkää apumetodeja omiin luokkiinne.

Pitäkää riippuvuudet vähäisinä

Jokaisesta lisäämästänne suoritusajan riippuvuudesta tulee riippuvuus kaikille käyttäjillenne. Suosikaa standardikirjastoa, kun se on järkevää, ja lisätkää gem vasta, kun sen hyödyt ovat sen aiheuttaman painon arvoiset.

Vähäisemmät riippuvuudet tarkoittavat vähemmän versiokonflikteja ja nopeampia asennuksia.

Dokumentoikaa julkinen rajapinta

Lisätkää kommentit, joissa kuvaatte kunkin julkisen metodin argumentit ja paluuarvon. YARDin kaltaiset työkalut muuntavat nämä selattaviksi dokumenteiksi, ja hyvät esimerkit sisältävä README ratkaisee usein sen, ottavatko ihmiset geminne käyttöön.

Pikatarkistus

Testatkaa, miten hyvin ymmärrätte gemin koodin järjestämisen.

Kertaus: Koodin kirjoittaminen

Opitte, miten gemin sisäinen toteutus järjestetään:

  • Sijoittakaa kaikki nimiavaruusmoduulin sisään.
  • Sovittakaa tiedostopolut vakioiden nimiin.
  • Pitäkää julkinen API pienenä ja merkitkää apumetodit private-määreellä.
  • Määritelkää mukautetut virheluokat ja välttäkää maailmanlaajuista monkey patchingia.
  • Pitäkää riippuvuudet vähäisinä ja dokumentoikaa API.

Seuraavaksi lisäämme testit ja versionhallinnan.

Aloita maksutta

Opi Ruby tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
29
Oppitunnit
109

Usein kysytyt kysymykset

Onko oppitunti ”Koodin kirjoittaminen” ilmainen?

Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Ruby Academy-oppimispolun 3 oppituntia, myös oppitunnin “Koodin kirjoittaminen”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Ruby Academy-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Koodin kirjoittaminen”?

Järjestä gem. Harjoittelet Ruby Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Ruby Academy-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Ruby Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Koodin kirjoittaminen”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Ruby Academy-oppitunnilla?

Kyllä. Jokainen Ruby Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Gemin rakenne
  2. Koodin kirjoittaminen
  3. Testaus ja versiointi
  4. Julkaiseminen RubyGemsissä
← Takaisin: Ruby Academy