Ruby Academy · Lektion

Skriv koden

Organisér en gem

Lektion 2 af 413 trin

Skriv koden er en gratis Ruby Academy-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Ruby Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Ruby Academy-kurset indeholder 4 lektioner i alt.

Organisering af en gems kode

God gem-kode er let at læse, let at indlæse og placeret i et navnerum, så den aldrig kolliderer med andre biblioteker. Det vigtigste værktøj er et modul på øverste niveau, som omslutter alt.

  • Ét navnerumsmodul pr. gem.
  • Én fil pr. klasse, der afspejler navnerummet.
  • En lille offentlig grænseflade.

Navnerumsmodulet

Placér alle klasser i et modul, der er opkaldt efter din gem. Det forhindrer, at din Client kolliderer med en andens Client.

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

puts Greeter::Hello.new.message

Konvention for filnavne

Ruby-værktøjer forventer, at filstier matcher konstantnavne:

  • Greeter ligger i lib/greeter.rb.
  • Greeter::Hello ligger i lib/greeter/hello.rb.

Denne konvention gør det muligt for autoloadere at finde filer automatisk.

Indlæsning af interne filer

Startfilen samler det hele med require_relative. Hver klassefil indlæses én gang, så hele biblioteket indlæses med ét require 'greeter'.

En tydelig offentlig API

Gør et lille sæt metoder tilgængelige, som brugerne faktisk kalder. Et almindeligt mønster er praktiske metoder på modulniveau, der videresender kald til interne klasser.

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

puts Greeter.say("Ada")

Skjul interne detaljer

Markér hjælpemetoder som private, så de ikke bliver en del af din offentlige kontrakt. Alt offentligt er et løfte til brugerne, så hold den offentlige grænseflade bevidst og lille.

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)

Konfigurationsmønster

Mange gems tilbyder en configure-blok, så brugerne kan indstille muligheder én gang. En enkel version gemmer indstillingerne på et konfigurationsobjekt.

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

Brugerdefinerede fejl

Definér gemmespecifikke fejklasser under dit navnerum, så brugerne kan håndtere præcis dine fejl. Ned ar v fra 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

Undgå monkey patching

Modstå fristelsen til at ændre kerneklasser som String globalt. Det skaber overraskelser i anden kode. Hvis du er nødt til at udvide en klasse, kan du bruge refinements, så ændringen kun gælder i det ønskede område, eller tilføje hjælpemetoder i dine egne klasser.

Begræns afhængighederne

Hver afhængighed ved kørsel, du tilføjer, bliver en afhængighed for alle dine brugere. Foretræk standardbiblioteket, når det er rimeligt, og tilføj kun en gem, når den er sin plads værd.

Færre afhængigheder betyder færre versionskonflikter og hurtigere installationer.

Dokumentér den offentlige API

Tilføj kommentarer, der beskriver argumenterne og returværdien for hver offentlig metode. Værktøjer som YARD omdanner dem til dokumentation, der kan navigeres i, og en god README med eksempler er ofte afgørende for, om folk tager din gem i brug.

Hurtig test

Test din forståelse af organisering af gem-kode.

Opsummering: Skriv koden

Du har lært, hvordan du organiserer gemmens interne kode:

  • Omslut alt i et navnerumsmodul.
  • Få filstier til at matche konstantnavne.
  • Hold den offentlige API lille, og markér hjælpemetoder som private.
  • Definér brugerdefinerede fejklasser, og undgå global monkey patching.
  • Begræns afhængighederne, og dokumentér API'en.

Nu tilføjer vi tests og versionsstyring.

Gratis at komme i gang

Lær Ruby med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
29
Lektioner
109

Ofte stillede spørgsmål

Er lektionen “Skriv koden” gratis?

Ja — alle 3 lektioner i læringssporet Ruby Academy, inklusive “Skriv koden”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Ruby Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Skriv koden”?

Organisér en gem Du øver dig i Ruby Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Ruby Academy?

Der kræves ingen tidligere erfaring. Ruby Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.

Hvor lang tid tager lektionen “Skriv koden”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Ruby Academy-lektion?

Ja. Alle Ruby Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Gem-struktur
  2. Skriv koden
  3. Test og versionsstyring
  4. Udgivelse til RubyGems
← Tilbage til Ruby Academy