Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 7 di 45
  • livello principiante
Indice lezioni

Convenzioni in Ruby

Le basi del linguaggio Ruby: i nomi, i commenti al codice e la documentazione
Le basi del linguaggio Ruby: i nomi, i commenti al codice e la documentazione
Link copiato negli appunti

Prima di introdurre i principali aspetti del linguaggio diamo uno sguardo veloce alle principali convenzioni sui nomi e sui commenti. Altre convenzioni, e semplici suggerimenti sullo stile, verranno introdotte durante lo svolgimento della guida.

Nomi

Iniziamo a vedere le convenzioni sui nomi delle variabili, dei metodi e delle classi. Di seguito una rapida carrellata con degli esempi esplicativi:

  • Le variabili locali devono iniziare con una lettera minuscola o col carattere underscore.
  • Le variabili globali con il segno $.
  • Le variabili di istanza con il segno @.
  • Le variabili di classe con due segni @.
  • Le costanti con una lettera maiuscola.

Ecco degli esempi:

nome = "Matz"        # nome è una variabile locale
Mesi = 12            # Mesi è una costante
MESI = 12            # anche MESI è una costante
@linguaggio = "ruby" # @linguaggio è una variabile di istanza
@Linguaggio = "ruby" # anche @Linguaggio è una variabile di istanza
$anno = 2007         # $anno è una variabile globale
@@counter = 0        # @@counter è una variabile di classe

Inoltre i nomi delle classi, e dei moduli, devono iniziare con la lettera maiuscola, mentre i nomi dei metodi e dei suoi parametri devono iniziare per lettera minuscola o per underscore "_". Ad esempio:

module Geometria 
  class Quadrato
    def disegna

Le parole chiave del Ruby, che come accade per tutti i linguaggi non possono essere utilizzate in nessun altro modo, sono:

BEGIN	END	alias	and	begin	break	case	class
def	defined?	do	else	elsif	end	ensure
false	for	if	in	module	next	nil	not
or	redo	rescue	retry	return	self	super	then
true	undef	unless	until	when	while	yield	 

Ne scopriremo il significato nel corso della guida.

Commenti

I commenti sono identificati dal segno #, è considerato commento tutto quello che lo segue fino alla fine della riga:

a = 1 # Questo è un commento.
# L'intera riga è un commento

In alternativa è possibile inserire più righe di commento tra i tag =begin e =end, in questo modo:

=begin
Questo è un commento 
su più righe
=end

È possibile anche inserire dei commenti che saranno utilizzati per generare documentazione RDoc; torneremo su questo argomento in un prossimo capitolo.

Documentazione

Come accennato prima, uno strumento fondamentale in fase di apprendimento è ri che prende come argomento il nome di una classe, di un modulo o di un metodo e ne mostra a video una breve descrizione con tanto di esempi. Ad esempio per sapere cosa fa e come si usa il metodo reverse della classe String, che abbiamo usato prima, basta scrivere:

# ri String.reverse 

--------------------------------------------------------- String#reverse
     str.reverse   => new_str
------------------------------------------------------------------------
     Returns a new string with the characters from _str_ in reverse
     order.

        "stressed".reverse   #=> "desserts"

In alternativa al punto si può utilizzare anche il carattere "#" (ri String#reverse); per i metodi di classe si usa invece la forma con i due punti "::". Se non si conosce il nome esatto è possibile anche fornire come argomento una indicazione parziale, ad esempio

# ri String.re

More than one method matched your request. You can refine
your search by asking for information on one of:

     String#reverse!, String#replace, String#reverse

In questo caso ci viene fornito in output una lista di possibili scelte. Torniamo un attimo ai nomi dei metodi; il lettore attento avrà di certo notato nell'output precedente la presenza, oltre a reverse, del metodo reverse! e si starà chiedendo qual'è la differenza tra i due. In Ruby c'è una convenzione che prevede che i metodi che terminano con il punto esclamativo siano metodi distruttivi che non creano una nuova istanza ma modificano direttamente il valore. Analogamente ci sono i metodi di verifica, i cui nomi terminano per punto interrogativo, che svolgono in genere funzioni di verifica e restituiscono un valore booleano.

Infine una breve nota ripresa da Programming Ruby di Dave Thomas. Aggiungendo questa funzione

def ri(*names)
    system(%{ri #{names.map {|name| name.to_s}.join(" ")}})
end

al file di configurazione .irbrc sarà possibile utilizzare ri all'interno di irb.

Ti consigliamo anche