Pro mnohé z nás bylo ještě relativně nedávno novinkou Visual Studio 2008 a .NET Framework 3.5. Ani jsme se nenadáli a Microsoft uvolňuje další a další informace o připravovaném Visual Studiu 2010 a .NET Framewroku 4.0. Nedočkavci mohou stahovat preview (CTP) z stránek Microsoft Visual Studio 2010.
Připravil jsem pro všechny zvědavce krátký soupis všeho, co mě na první pohled zaujalo. Určitě jsem neobsáhnul všechna důležitá témata, ale věřím, že i tak by mohl článek řadu z vás zajímat.
Novinky ve Visual Studiu 2010
Novinek bude celá řada. Velká část z nich se bude týkat lepší integrace již stávajících technologií přímo do vývojového prostředí (WPF, Silverlight). Určitě nemalou část prostředků Microsoft také investoval do nástrojů pro návrh architektury a týmové spolupráce (jak jinak než pomocí TFS - bohužel je to drahá technologie dostupná jen pro větší týmy).
Úvodní obrazovka Visual Studio 2010 CTP:
Architecture Explorer
Architecture Explorer je úžasně vypadající funkce. Není ale všechno zlato co se třpytí. Nedokážu říct na kolik bude užitečná v praxi. Jedná se o analytický nástroj, který dokáže v podobě grafu zobrazit návaznosti v programu mezi třemi druhy objektů a to: třída, namespace a assembly. Architecture Explorer nám ukáže mezi jednotlivými objekty návaznosti a zvýrazní tloušťkou čáry sílu návaznosti (počet spojů).
Po uživatelské stránce má Architecture Explorer skvěle propracované GUI a na první pohled vypadá velmi užitečně. Je to nový přístup k procházení a porozumění kódu.
Generování sekvenčního diagramu
Další velmi slibně vyhlížející věc. Můžete si téměř odkudkoliv z kódu nechat vygenerovat klasický sekvenční diagram. Zvlášť užitečné, pokud se rozkoukáváte po kódu nebo chcete něco měnit ale bojíte se sesypání funkčnosti, protože jedna z vnořených procedur dělá drobnost, na kterou zapomínáte nebo o ní vůbec nevíte. Tohle mi ve VS dost chybělo.
Architecture Layer Diagram
Název mluví sám za sebe. Jedná se o integrovaného návrháře diagramů architektury aplikace. K čemu je to dobré? Nejen ke kreslení hezky vypadajících barevných okýnek. Ve zkratce: takto navržená architektura definuje, jaké části programu mohou mít návaznosti na jiné. Náš kód je pak možné proti tomuto diagramu validovat a udržet tak zamýšlenou architekturu.
Ve výsledku to může vypadat tak, že při sestavování projektu dostanete chybovou hlášku: Funkce XY z vsrtvy XZ volá funkci AB z vrstvy CD. Zobrazená chyba nám jasně napovídá, že zapsaným kódem se porušil návrh vrstev.
Týmový vývoj a testy
Visual Studio Team System 2010 a nová verze TFS nabízejí společně lepší kontrolu nad celým projektem. Jako obyčejný vývojář bych asi nejlépe ohodnotil funkci přehledné kontroly změněného kódu před vrácením do repozitáře (vidíte konkrétně změněné funkce, metody atp. + tzv. Test Impact View - unit testy, které změny mohly ovlivnit).
Ohledně testů nové VS slibuje lepší nástroje pro testery (screenshoty, zachytávání videa, informace o systému) a obecně lepší podporu testů a jejich plánování.
Další rozsíření
Microsoft na svém webu také slibuje například rozšířenou podporu intellisense JavaScriptu, vylepšený deployment a další. Tyto funkce jsem zatím nezkoumal.
České Visual Studio
Ačkoliv to mnozí můžou považovat jako zbytečnost, do nového Visual Studia bude možnost nainstalovat Czech Language Pack, který zlokalizuje vývojové prostředí. Já osobně tento krok považuji za správný (k VS se čas od času dostanou lidé, kterým angličtina dělá problémy - testeři, překladatelé a hlavně začínající programátoři). Bohužel se zatím neví jak moc a ani které součásti VS jazykový balíček postihne. O jeho dalším vývoji budu informovat.
Novinky v .NET Framework 4.0
Optional parametry v C#
Do jazyka C# přichází optional parametry (konečně, Visual Basic je má od nepaměti). Tedy parametry, které mají defaultní hodnotu a nemusí se vyplňovat, pokud nechceme. Například:
public void Metoda(string text, bool prevestNaVelkaPismena = false)
No uznejte, není to příjemnější, než:
public void Metoda(string Text)
{
Metoda(Text, false);
}
public void Metoda(string Text, bool prevestNaVelkaPismena)
{
...
}
A co teprve, když je parametrů třeba 5? Navíc psát ke všem funkcím prakticky stejný komentář není moc populární zábava.
Dynamic variables
Nový .NET Framework slibuje větší dynamičnost. K tomu mu dopomáhá datový typ dynamic. Při kompilaci je typ neznámý a určuje se až za běhu. Můžeme na něm volat procedury, číst vlastnosti a to bez jakéhokoliv omezení. V případě, že zapíšu:
dynamicPromenna.NejakaProceduraCoNeexistuje();
...tak kompilace projde, vše je v pořádku, dokud se tento kód neprovede a nezjistí se absence oné metody "NejakaProceduraCoNeexistuje" a nevyvolá tak vyjímku. Ptáte se proč to tak je? Může tím vzniknout přeci tolik chyb.
Bohužel ne všechno je silně typové (příklad za všechny - JavaScript) a přístup k dynamickým datovým typům je pak nejsnažší řešení. Dotazovat se totiž na hodnoty přes reflexi by bylo hodně zdlouhavé a neefektivní. Nikdo neříká, že tento typ použijete, ale je příjemné ho mít v zásobě.
Parallel Linq
V dnešní době prakticky nemáte šanci koupit počítač s jedním jádrem. To je jasná odpověď na otázku, zda je optimalizace softwaru pro více jader aktuální téma. .NET framework 4 přichází s celou řadou zlepšení pro urychlení operací na počítačích s více jádry / procesory. Jedním z nich je Linq rozšíření označené jako Parallel Linq. To nám dovoluje snadné rozdělení provádění jednoho Linq dotazu mezi více procesorů. Například:
var selection = from i in Enumerable.Range(1, 50000).AsParallel() where DlouhoTrvajiciOperace(i) select i;
Takový dotaz díky extension funkci "AsParallel()" bude zpracovávat více vláken najednou. Tato možnost zatím chyběla.
Nový koncept System.Threading
Namespace System.Threading byl do .NET Frameworku verze 4 značně rozšířen. Máme zde LazyInit pro pozdější inicializaci objektů v konkurenčním prostředí, Tasks pro vytváření paralelních úkolů a další.
Nové zajímavé třídy
Třídy .NET Frameworku verze 4 nabídnou tyto funkce pro usnadnění naší práce:
- Vykreslování grafů (nemá nic společného s kancelářským balíkem Office)
- MVC framework pro ASP.NET
- Workflow model
- System.Collection.Concurrent obsahuje thread-safe kolekce (navržené kvůli parallel computingu, běžné kolekce nejsou thread-save)
- Ribbon panel (menu z Office 2007)
- Parsovač jazyku XAML
- Zaujal mě také datový typ BigInteger určený pro práci s opravdu velkými čísly (jeho velikost v paměti není stálá)
Závěrem
Účelem článku nebylo detailně probrat jednotlivé funkce, ale jen navnadit a připravit na některé (pode mě podstatné) novinky, kterých se s připravovaným Visual Studiem a .NET Frameworkem dočkáme. Budu rád, když se do diskuze vyjádříte, co si o plánech a nápadech Microsoftu myslíte.