Hiljuti ehk mõned kuud tagasi sai loetud Joel Spolsky poolt koostatud raamatut “The Best Software Writing I: Selected and Introduced by Joel Spolsky”. Seal oli päris huvitav kirjatükk Ruby õppimisest. Pärast paari lehekülge nõutsid koomiksikangelased, et Ruby koodi peab lugema kõva häälega:
5.times { print "Odelay!" }
exit unless "restaurant".include? "aura"
['toast', 'cheese', 'wine'].each { |food| print food.capitalize }
Lugedes kõlavad nad päris kenasti. Kuna olen peamiselt C# kirjutaja, siis tekkis mõte veidi eksperimenteerida ning vaadata, kas sellist tulemust saab C# järgi teha.
string plate = "cheese, potatoes, pasta";
5.Times( I.Say( "Hello!" ) );
I.Say( "Good bye!" ).Unless( "restaurant".Contains("aura") );
I.Say( "What a nice place!" ).When( "restaurant".Contains("aura") );
I.Say( "I'm hungry." ).Now();
new[] { "toast", "cheese", "wine" }
.Each( food =>
I.Yell( "Where is " + food ).Unless( plate.Contains(food) )
);
I.Say( "This plate is empty." ).And( I.Ask( "When I'll get some food" ) )
.When( plate.IsEmpty() );
//Output:
//Hello!
//Hello!
//Hello!
//Hello!
//Hello!
//What a nice place!
//I'm hungry
//WHERE IS TOAST
//WHERE IS WINE
Loetavus on päris kena ning koodi väga palju kirjutama ka ei pidanud selleks. Ainuke probleem, mis praegu pähe kerkib, on jõudlus. See kood arvatavsti ei toimi nii kiiresti, kuid räägitakse ka et Ruby väga nobe pole =D Samas DSL-i tegemiseks oleks need võtted ilmselt küllaltki arukad.
Lähiajal üritan lahti seletada, kuidas sellist tulemust C# 3.0 võimalustega saavutada saab.
Loe veel sarnastel teemadel:
- Rubylik C#: Monkeypatching, 27. oktoober
- Ruby väärtuslikkus, 27. aprill
- Avatud uuendustele, kinni muudatustele, 15. oktoober
- Iluvõtted koodile I, 7. aprill
- Modernselt tarkvara loomine II: Seotud paelad, 29. oktoober
KAIZEN FEED
Telli endale Kaizeni uudisvoog
KOMMENTAARIDE FEED
Telli endale kommentaaride voog
KAIZEN TWITTER
Lühiuudised Kaizeni autoritelt
KAIZEN FACEBOOK
Liitu Kaizeniga
MIS ON KAIZEN?
Kaizen on Saiku tarkvaraarendusealane blogi, kus kirjutame erinevatest lähenemistest meisterlikule tarkvaraarendusele.
KATEGOORIAD
- .NET (18)
- Analüüs/Arhitektuur (11)
- Arendus (66)
- Ettevalmistus (1)
- Juhtimine (2)
- Varia (23)
SILDIPILV
- .NET (41)
- ilus kood (23)
- Arendus (23)
- C# (20)
- Analüüs/Arhitektuur (14)
- Testimine (10)
- raamat (8)
- Ruby (8)
- projektijuhtimine (8)
- printsiibid (6)
- produktiivsus (5)
- ReSharper (5)
- PHP (5)
- NHibernate (4)
- objekt-orienteeritud (4)
- pidev integratsioon (4)
- Viited (4)
- agile (4)
- Java (4)
- Geekdinner (4)
- lean (4)
- raamatukogu (4)
- CI (3)
- Cruise Control.NET (3)
- Robert C. Martin (3)
- scrum (3)
- iteratsioon (3)
- suhtlus (3)
- jQuery (2)
- TechEd 2008 (2)
- Visual Studio (2)
- valideerimine (2)
- intervjuu (2)
- analüüs (1)
- ASP.NET (1)
- ümberstruktureerimine (1)
- üritus (1)
- CodeRush (1)
- dokumentatsioon (1)
- Kent Beck (1)
- LINQ (1)
- Martin Fowler (1)
- Moq (1)
- Rhino Mocks (1)
- stackoverflow (1)
- võltsitud objektid (1)
- Whiteboard Wednesday (1)
- hindamine (1)
- tarkvara kvaliteet (1)
- ajagraafikud (1)
- Saiku (1)
- koolitus (1)
- tagasivaate (1)
- koosolek (1)
- dünaamilised keeled (1)
- staatilised keeled (1)
- FluentNHibernate (1)
- facebook (1)
- aastapäev (1)
- Rake (1)
- Oredev 2008 (1)
- toyota way (1)
- raiskamine (1)
- NDepend (1)
- podcasts (1)
- väle tarkvaraarendus (1)
- raido tonts (1)
- minimal marketable feature (1)
- kasutajalugu (1)
- twitter (1)
- Joomla! (1)
- MVC (1)
- andmebaas (1)
- versioonimine (1)
- diskussioon (1)
- regulaaravaldised (1)
- motiveerimine (1)
- mõõdikud (1)
- agileestonia (1)
- riistvara (1)
- koolitused (1)
- kujundus (1)
- kodulehed (1)
- veeb (1)
