2009-08-25 8 views

Odpowiedz

12

Istnieją dwa główne anti-patterns widziałem w partii kodu szyn:

  1. dużo „podnoszenia ciężkich” w widokach. Wszystko, co jest bardziej skomplikowane niż zwykła iteracja nad kolekcjami lub interpolacja łańcuchów, powinno znajdować się w pomocnikach lub metodach modelowania. Nie wysyłaj zapytań o obiekty modelu, nie konstruuj dużych tablic JSON ani nie aktualizuj zmiennych sesji z szablonów ERB.

  2. Obiekty modelu, których nie można wykorzystać do skryptowania lub implementacji interfejsu API. Twoje modele definiują semantykę domeny dla twojej aplikacji. Powinieneś być w stanie odpalić skrypt/konsolę lub napisać wrappery API usług, które wykorzystują istniejące, funkcjonalne metody modelowania do manipulowania wszystkimi kluczowymi danymi w twojej aplikacji. Funkcja kontrolera jest dostępna tylko w cyklu żądania/odpowiedzi HTTP, który jest tylko częścią cyklu życia w pełni funkcjonalnego serwisu.

1

Zupa alfabetyczna?

(Nie zadeklarowana zmienna typu i znaczenia nazw która prowadzi do kodu prawie un-czytelnej)

nazwa Wzór pochodzi z nazwami zmiennych jako 'a', 'b', 'c', 'd', etc.

+5

jest to jakoś RoR specyficzne? – SilentGhost

+0

Nie najmniej. Jest to coś, co zauważyłem w Ruby dużo bardziej niż inne języki (i większość z tego, co widziałem dla Rubiego, to RoR). –

+1

oczywiście nie ma zadeklarowanego typu, jest to dynamiczny język. a każdy, kto używa jednej litery jako zmiennej, jakkolwiek nie jest iteratorem w jakimkolwiek języku, potrzebuje czegoś twardego. –

14

Nie uczenie się Ruby.

+0

Heh, nie mogę uwierzyć, że mam do tego upominek :-) –

+0

To sprytna odpowiedź :) – lucapette

2

KORZYSTANIA Z innego chyba

antywzorzec projektowy:

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

Alternatywa:

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