2009-08-25 18 views

Antwort

12

Es gibt zwei große anti-Muster, die ich in vielen Rails-Code gesehen haben:

  1. viele "schweres Heben" in Aussicht. Etwas komplizierter als einfache Iteration über Sammlungen oder Interpolation von Strings sollte in Helfern oder Modellmethoden sein. Suchen Sie nicht nach Modellobjekten, konstruieren Sie große JSON-Arrays oder aktualisieren Sie Sitzungsvariablen aus Ihren ERB-Vorlagen.

  2. Modellobjekte, die nicht für die Skripterstellung oder API-Implementierung verwendet werden können. Ihre Modelle definieren die Domänensemantik für Ihre Anwendung. Sie sollten in der Lage sein, Skript/Konsole zu starten oder Service-API-Wrapper zu schreiben, die vorhandene, funktionale Modellmethoden verwenden, um alle Schlüsseldaten in Ihrer Anwendung zu bearbeiten. Die Controller-Funktionalität ist nur im HTTP-Anforderungs-/Antwortzyklus verfügbar, der nur Teil des Lebenszyklus einer vollständigen Funktionsstelle ist.

1

Alphabet Suppe?

(No und sinnlos Typen deklarierte Variablennamen, die auf nahezu un lesbaren Code führt)

Pattern Name kommt von Variablen-Namen als 'a', 'b', 'c', 'd', usw.

+5

ist das irgendwie RoR-spezifisch? – SilentGhost

+0

Nicht im geringsten. Es ist etwas, das mir in Ruby viel mehr aufgefallen ist als in anderen Sprachen (und der größte Teil dessen, wofür ich Ruby benutzt habe, ist RoR). –

+1

Natürlich gibt es keinen Typ deklariert, es ist eine dynamische Sprache. und jeder, der einen einzelnen Buchstaben als Variable benutzt, außer etwas anderem als einem Iterator in jeder Sprache, braucht etwas Schweres auf sie geworfen. –

14

Nicht Ruby lernen.

+0

Heh, ich kann nicht glauben, dass ich dafür ein Lob bekommen habe :-) –

+0

Es ist eine clevere Antwort :) – lucapette

2

weiter verwenden, es sei denn mit anderen

Antipattern:

unless is_the_weekend? 
    do stuff that you do during the week 
else 
    do stuff that you do on weekends 
end 

Alternative:

if is_the_weekend? 
    do stuff that you do on weekends 
else 
    do stuff that you do during the week 
end