IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

14. diel - Ekosystém a konvencie Dart

V minulej lekcii, Dynamic, var, null a null aware operátormi , sme si vysvetlili niečo o dátovom type dynamic, hodnote null a ako s ňou pracovať. Táto lekcia bude v kurze základných konštrukcií Dart posledný a už sa nebude venovať kódu, ale povieme si niečo o ekosystéme Dart a aké konvencie by sme mali dodržiavať.

Ekosystém

Dart je relatívne nový jazyk, ktorý sa pri svojom návrhu mohol poučiť z mnohých chýb iných technológií. A aj napriek tomu, že je open source, Dart tím každú zmenu starostlivo rozmýšľa.

Či už je Dart váš prvý jazyk, ktorý sa učíte, alebo už máte s programovaním niekoľko skúseností, Dart je jedna z mála technológií, ktorá má konzistentné postupy a konvencie pre vývoj. Ak sa pozrieme ku príkladu na už spomínaný Javascript alebo Javu, nájdete stovky či tisíce najrôznejších nástrojov od hromady rôznych vývojárov, ktorými si môžete uľahčiť vývoj - či už to sú nástroje na automatizáciu, testovanie, kompiláciu, generovanie dokumentácie atp.

V Dart, podobne ako v C #, sa tento fenomén nevyskytuje (aspoň nie v takejto miere) a existujú tak jasne stanovené konvencie a ďalšie podporné nástroje, čím je celkový ekosystém zdravšie a v celkovom pohľade naberá holistickejšieho dojmu. A navyše všetok kód vyzerá rovnako (alebo by aspoň mal byť, pretože by sme mali dodržiavať konvencie, samozrejme nie nevyhnutne 100%).

Štruktúra Dart projektu

Najprv, než si povieme niečo o nástrojoch, by sme si mali vysvetliť, ako vlastne štruktúrovať naše projekty. Každý projekt v Dart je balíček a už vieme, že hlavný súbor, ktorým sa balíček konfiguruje, je pubspec.yaml. V tom definujeme závislosti, závislosti potrebné k vývoju a trebárs aj verziu Dart sdk. Tento súbor je vlastne to, čo hovorí, že tento projekt bude Dart balíček.

Mimochodom, aj keď budete importovať súbory v rámci vášho balíčku, stále by ste mali používať package: prefix:

import 'package:moje_hra/src/hrac.dart';

Po stiahnutí závislostí (príkaz pub get) sa vytvorí lockfile súbor pubspec.lock, ktorý obsahuje informácie, na čom konkrétne je daný balík závislý. Ak je váš balík programu, mal by sa tento súbor pubspec.lock zálohovať spolu s kódom. Aplikácia je taký balík, ktorý nemá byť určený ako závislosť ostatných, a teda ho plánujete spúšťať priamo - napr. Konzolová aplikácie, webová aplikácia a pod.

Stiahnutie závislostí tiež vytvorí súbor .packages, ktorý však nezálohujte.

Ak chcete vydať svoj kód ako Open Source, mal by obsahovať aj ďalšie súbory ako README.md, LICENSE, CHANGELOG atp. Týmito súbory sa však zaoberať nebudeme. Ak vás Open Source zaujíma, odporúčam sa pozrieť na Open Source Guides (v angličtine).

Bin /

Ako už vieme, do zložky bin/ pridávame spustiteľné súbory (napr. Súbor, ktorý spustí konzolovú aplikáciu), ktoré môže každý spustiť.

Skripty v tejto zložke môžete spustiť pomocou príkazu pub run.

Lib /

Do zložky lib/ pridáme voľne dostupné zdroje. Tie môžeme využiť ako my v našom kódu, tak niekto iný, kto používa náš balíček.

Implementačný súbory (teda tie súbory, ktoré sú určené iba pre beh našej aplikácie) sa dávajú do zložky lib/src/. Súbory v tejto zložke nie sú voľne dostupné a teda by ste ani vy nemali nikdy importovať nič z tejto zložky iných balíčkov.

Web /

Pre webové balíčky využijete zložku web/, do ktorej sa umiestňujú súbormi vstupného bodu webové aplikácie - Dart skripty s metódou main() a ďalšie potrebné súbory, ako napr. index.html, style.css atp.

Implementačný kód webu (teda všetok kód, ktorý nie je volaný priamo zo vstupných bodov ako sú HTML súbory a podobné) by však stále mal byť v priečinku lib/src/.

Test /

Každý balíček by mal byť riadne otestovaný. V Dart sa umiestňujú všetky testy do zložky test/ a tieto súbory by mali mať suffix _test, napr. Teda muj_prvni_test.dart. Testy typicky používajú balíček test.

Benchmark /

Špeciálny druh testov, ktoré netestujú správnosť kódu, ale jeho rýchlosť (alebo napríklad prácu s pamäťou), sú "benchmarky". Tie sa umiestňujú do zložky benchmark/.

Doc /

Dokumentácia, ktorú by ste mali písať, patrí do zložky doc/. Ak spustíte nástroj dartdoc, vygeneruje sa automaticky dokumentácie do zložky doc/api/. Keďže sa generuje automaticky, nemali by ste ju verzovat.

Pre ostatné typy dokumentácie, napr. Ak si ju chcete udržiavať ručne, nie sú žiadne konvencie, len by nemala byť v priečinku doc/api/.

Example /

Kód, testy, dokumentácia a stále to nie je dosť. Ukážky reálneho používanie vášho balíčku patrí do zložky example/.

Tool /

Do zložky tool/ je vhodné vkladať rôzne podporné spustiteľné súbory, ako sú rôzne skripty, generátory, automatizačnej pomocníci atp.

Oproti spustiteľným súborom v priečinku bin/ nie sú tieto súbory určené pre externé použitie.

Nástroje Dart

Pub

Pub je nástroj, vďaka ktorému môžeme sťahovať (pub get) cudzie balíčky a nahrávať tie svoje. Ale vie toho aj omnoho viac. Váš balíček dokáže zostaviť (pub build), spustiť (pub run), watchovat (opakovane zostavovať a spúšťať pri každej zmene - pub serve) atp.

Dartanalyzer

Dartanalyzer vykonáva statickú analýzu kódu. Keďže sa jedná o nezávislý nástroj, možno ľahko využiť v iných aplikáciách a tak napríklad aj IntelliJ IDEA využíva práve tento nástroj pre kontrolu.

Dart2js a dartdevc

Dart má 2 nástroje určené pre kompiláciu Dart do JavaScriptu. Nástroj dartdevc je rýchlejší, jednoduchší, čitateľnejší, má silnejší kontrolu a vie spolupracovať s debugovacími nástrojmi. Nástroj dart2js je oproti tomu optimalizovaný na zostavenie produkčnej verzie webovej aplikácie.

Dartdoc

Dartdoc generuje HTML dokumentáciu z Dart kódu, ktorú vygeneruje do doc/api/.

Dartfmt

Dartftml formátuje Dart kód podľa konvencií.

DartPad

Čas od času má každý z nás potrebu svoj kód zdieľať. Či už kvôli rade od kamaráta, alebo aby mohol projekt pekne ukázať. K týmto účelom slúžia webový nástroj DartPad, ktorý samozrejme využíva aj dartanalyzer, takže informuje o všetkých chybách a má v sebe niekoľko efektných ukážok, ako Dart možno použiť.

Konvencie

Dart má pomerne rozsiahle konvencie týkajúce sa zápisu, dokumentácia, používanie a návrhu. Všetky konvencie, pretože ich je naozaj veľa a nebudeme si ich všetky vypisovať, nájdete na oficiálnych stránkach Effective Dart.

V rámci tejto lekcie si uvedieme jednu vec, a to síce názvy súborov. Ako už ste si určite všimli, názvy súborov v Dart sa píšu malými písmenami a slovami oddelenými podtržníkmi, čo je oproti iným jazykom docela rozdiel. Píšeme teda muj_program.dart, nepíšeme MujProgram.dart.

Na písanie dobrého kódu sú 2 zásadné pravidlá:

Byť konzistentné

Na veľa vecí nie je žiadne zlaté pravidlo, ako je písať dobre. Ak však budete dostatočne konzistentné, objektívne sa celý kód zdá lepšia a čitateľnejší. A ak už niečo musí byť iné, malo by to byť z dobrého dôvodu.

Byť stručný

Dart je navrhnutý tak, aby bol jednoduchý. A ak existuje viac spôsobov, ako vyjadriť jednu vec, vyberte ten najjednoduchší. To ale samozrejme neznamená, že by ste mali napísať vždy čo najkratšie kód. Kód by mal byť napísaný prehľadne, nie "nahňácaný" na sebe.

Naša výučba Dart teraz vlastne len začína, avšak tento on-line kurz tých najzákladnejších konštrukciách jazyka už dokončujeme. Dart kurz teraz pokračuje v sekcii Základy objektovo orientovaného programovania v Dart. Nabudúce si teda predstavíme objektový svet a pochopíme veľa vecí, ktoré nám až doteraz boli utajované.:)


 

Predchádzajúci článok
Dynamic, var, null a null aware operátormi
Všetky články v sekcii
Základné konštrukcie jazyka Dart
Článok pre vás napísal Honza Bittner
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
FIT ČVUT alumnus :-) Sleduj mě na https://twitter.com/tenhobi a ptej se na cokoli na https://github.com/tenhobi/ama.
Aktivity