Toidupoodides tihti võib leida väga huvitavaid teid. Mõned noorendavad, teised salendavad, osa isegi annavad energiat juurde. Üldiselt selliste turundussiltide tõttu tekkib mul tung need järjest prügikasti visata (soovitan pigem minna korralikku tee poodi ja sealt mõned sobilikud teed endale välja valida). Kui prügikast oleks samalaadne nagu tarkvaraarenduse käigus loodud lisamismeetodid kollektsiooni, siis mul läheks ühe paki äraviskamiseks liigselt aega.
public class Teabag
{
//..
}
public class Trashbin<TTrash>
{
public void Add(TTrash trash)
{
//..
}
}
var trashbin = new Trashbin<Teabag>();
trashbin.Add(new Teabag());
trashbin.Add(new Teabag());
trashbin.Add(new Teabag());
Selle probleemi saab lahendada küllaltki lihtsalt kasutades params võtmesõna:
public class Trashbin<TTrash>
{
public void Add(params TTrash[] trash)
{
//..
}
}
var trashbin = new Trashbin<Teabag>();
trashbin.Add(
new Teabag(),
new Teabag(),
new Teabag()
);
Alati ei pruugi seda vaja minna ärimudeli puhul, kuid küllaltki kasulik on seda kasutada registreerimistel, seadistustes:
ServiceLocator.Register(
Requested.Service<ITrashbin>()
.IsImplementedBy<Trashbin>(),
Requested.Service<IShop>
.IsConstructedBy(() => ShopFactory.Create())
);
Vahel tasub seda võtet kaaluda. Mida huvitavat olete ise selle küllaltki nurka jäetud võtmesõnaga korda saatnud?
Head teejoomist!
Loe veel sarnastel teemadel:
- Iluvõtted koodile IV, 12. mai
- Iluvõtted koodile I, 7. aprill
- Iluvõtted koodile II, 13. aprill
- Iluvõtted testidele, 17. mai
- Modernne tarkvara loomine III: Andmebaasi versioonimine, 2. november
2 kommentaari
1
Eriti mõnus selle params võtmesõna juures tundub mulle see, et eraldi argumentide asemel võib anda ka lihtsalt massiivi:
Teabag[] bags = {new Teabag(), new Teabag()};
trashbin.Add(bags);
Ruby võimaldab sama asja väljendada * abil:
def my_func(*args)
…
end
my_func(1, 2, 3, 4);
Kuid erinevalt C#-st tuleb massiivi argumendiks andmisel tärniga märku anda, et seda massiivi tuleks käsitleda kui eraldi argumente:
my_func(*[1, 2, 3, 4]);
Aga eks see erinevus tuleneb peamiselt sellest, et C# on staatiliselt- ja Ruby dünaamiliselt tüübitud.
Rene Saarsoo
16:17, 27. aprill
2
Nüüd saab vähemalt Rubyle midagi ette heita
Marek Tihkan
09:37, 28. aprill
Lisa kommentaar
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 (24)
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)
- tööpakkumised (1)
- 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)
