Martin Dybal Microsoft MSP, MCP

Slides:



Advertisements
Podobné prezentace
Elektronické učební materiály - I. stupeň Český jazyk 4 Autor: Mgr. Helena Záděrová 1. Z obrázků vytvoř věty jednoduché Některé věty napište na tabuli.
Advertisements

NÁZEV ŠKOLY: ZŠ Pardubice - Spořilov AUTOR: Hana Navrátilová NÁZEV: VY_32_INOVACE_DOPRAVNÍ VÝCHOVA_17.JÍZDA NA KOLE TEMA: JÍZDA NA KOLE ČÍSLO PROJEKTU:
ČÍSLO PROJEKTU: CZ.1.07/1.4.00/ NÁZEV: VY_32_INOVACE_10_11_F9_Hanak AUTOR: Ing. Roman Hanák TÉMA: Elektromagnetické zařízení Základní škola Libina,
ČÍSLO PROJEKTU: CZ.1.07/1.4.00/ NÁZEV: VY_32_INOVACE_09_15_F7_Hanak AUTOR: Ing. Roman Hanák TÉMA: Mechanické vlastnosti kapalin a plynů Základní.
NÁZEV ŠKOLY: Základní škola a Mateřská škola Halže, příspěvková organizace AUTOR: Pavla Dokoupilová NÁZEV: VY_12_INOVACE_34_ČS TEMA: Manufaktury a první.
Úvod do Delphi - 1.hodina OB21-OP-EL-KON-DOL-M-4-006A Orbis pictus 21. století.
Systém správy dokumentace akreditované zkušební laboratoře Bc. Jan Randl, 4912.
Programování v jazyce C++ Dědičnost a polymorfismus.
VYPRACOVALA: Mgr. Ivana Tesařová, ZŠ a MŠ Mladoňovice Materiál vznikl v rámci projektu Škola pro život č.proj. CZ.1.07/1.4.00/
VZDĚLÁVÁNÍ PRO KONKURENCESCHOPNOST ZKUŠENOSTI S PODPOROU ESF VE VELKÉ BRITÁNII.
VY_52_INOVACE_02_Práce, výkon, energie Základní škola Jindřicha Pravečka Výprachtice 390 Reg.č. CZ.1.07/1.4.00/ Autor: Bc. Alena Machová.
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Jak psát „Čistý kód“ A hlavně se v něm pak neztratit Jan Pospíšil Senior Technology
PJV15 1 Vnořené ( nested ) a vnitřní ( inner ) členy Třídy či interfejsy mohou být členy tříd či interfejsů. Je-li X obalem Y a Y obalem Z, pak Z získá.
Hospodářský proces Hospodářský proces. Hospodářský proces Hospodářský proces rozdělujeme na následující fáze: a) výroba b) rozdělování a přerozdělování.
Tento výukový materiál byl vytvořen v rámci projektu EU peníze školám. Základní škola a Mateřská škola Veřovice, příspěvková organizace Kód materiálu:
Sub-projekt PF 098: Práva dítěte ve školské praxi Brno, 26. listopadu 2013 Autentická participace Petra Ali Doláková Realizátor projektu: Česko-britská.
Elektromagnetická slučitelnost
Vzdělávání pro konkurenceschopnost
SOLID principy v OOP návrhu
NÁZEV ŠKOLY: S0Š Net Office, spol. s r.o., Orlová-Lutyně
Programování II 1. cvičení Alena Buchalcevová
Složené úrokování Tematická oblast
SLABIKÁŘ DĚTSKÝCH PRÁV VY_32_INOVACE_01_10
Název školy: Základní škola a Mateřská škola Kladno, Norská 2633
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Název školy: ZŠ Štětí, Ostrovní 300 Autor: Mgr
Veřejná správa, Regionální rozvoj Litoměřice Jan Jůna 2012
VY_32_INOVACE_16_PŘV_LES
Název projektu: Moderní škola
Název vzdělávacího materiálu
Společenská odpovědnost ve školství
Název školy : ZÁKLADNÍ ŠKOLA NOVÝ KOSTEL,OKRES CHEB
Programování v jazyce C++
Řízení znalostí z pohledu práva
Podstatná jména jsou slova ohebná, skloňují se.
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
PŘÍRODOVĚDA 5. ročník Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jiřina Jeršovová.
AUTOR: Mgr. Šárka Jandová NÁZEV: VY_32_INOVACE_6C_01
Pedagogická komunikace 4. lekce: Verbální komunikace: kladení otázek
Základy plošné CZ.1.07/1.5.00/ VY_32_INOVACE_MA_ZP_05
Příspěvek na konferenci
Abstract Factory.
Název školy: ZŠ a MŠ Unkovice, příspěvková organizace
Grafické seznamy a diagramy
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Kód materiálu: VY_32_INOVACE_16_FUNKCNI_STYLY Název materiálu:
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Autor: Ing. Ksandrová Lenka
NÁZEV ŠKOLY: ZŠ Dolní Benešov
Vychovávejme srdcem Dona Boska,
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
ŠABLONY PRO STŘEDNÍ ŠKOLY
Základní škola Ústí nad Labem, Anežky České 702/17, příspěvková organizace   Číslo projektu: CZ.1.07/1.4.00/ Název projektu: „Učíme lépe a moderněji“
Technická Evidence Zdravotnických Prostředků 1
Manufaktury a první stroje
3. ročník Písemná práce 3.
Materiál byl vytvořen v rámci projektu
Martin Dybal Microsoft MSP, MCP
Pascalův zákon.
Tepelné motory Motory s vnějším spalováním parní stroj parní turbína
Nádherné prezentace navrhnete a předvedete snadno a s jistotou.
VLASTNOSTI KAPALIN
AUTOR: Mgr. Hana Vrtělková NÁZEV: VY_32_INOVACE_Vl_03_Vodstvo ČR
Rozmnožování organismů
NNO a dobrovolnictví „Pomáháme těm co pomáhají… “ Jiří Tošner
Člověk a voda – VODNÍ STROJE
Bridge.
Class Diagrams.
Transkript prezentace:

Martin Dybal Microsoft MSP, MCP SOLIDní kód ing. Roman Jašek Microsoft MSP, MCP Martin Dybal Microsoft MSP, MCP www.dotnetcollege.cz

Prečo používať Clean Code

Materiály

Názvy – všeobecne (1/2) zmysluplné názvy vysloviteľné názvy rozlíšiteľné názvy List<List<int>> theList; List<List<int>> gameBoard; DateTime genymdhms; DateTime modymdhms; DateTime generationTimestamp; DateTime modificationTimestamp; string ProductInfo; string ProductData;

Názvy – všeobecne (2/2) vyhľadateľné 1 koncept = 1 slovo int days = 5; int days = WORK_DAYS_PER_WEEK; int GetDays() {} int RetrieveWorkersCount() {} int tempAmount; int tmpPerson;

Názvy - premenné podstatné mená výnimka – boolean – odpoveď na otázku true/false private vs. public vs parametre Car car; bool isTestPage; public void ChangeCarCount(int carCount) {     this.carCount = carCount;     this.AllCarCount += carCount; }

Názvy - funkcie slovesá funkcia - čo vracia procedúra - čo robí public List<Cell> GetFlaggedCells() public void ChangeCarCount(int carCount)

Funkcie malé 1 činnosť žiadne vedľajšie účinky 1 úroveň abstrakcie neopakovať kód Rozumný počet parametrů

Štruktúra kódu malé bloky a zanorovanie čítať zhora dole

Komentáre (1/2) verzovacie redundantné zavádzajúce zakomentovaný kód

Komentáre (2/2) radšej vysvetliť kódom vysvetliť zámer divného/testovacieho kódu TODO komentáre zdôrazniť podstatný kus kódu

Ďalšie veci magické konštanty ternárny operátor ?: návrhové vzory

Nástroje Code Metrices: https://visualstudiogallery.msdn.microsoft.com/369d 38e1-53d3-4f5c-9351-a0560162a6d9 Linqpad: http://www.linqpad.net/ Linq 101: http://tinyurl.com/linq101

SOLID Hlavní účely Testovatelný a udržovatelný kód

Single Responsibility Principle Každá třída má jen jednu odpovědnost Neznamená to, že má jen jednu metodu! Spíš aby každá třída měla jen jeden důvod ke změně.

Open / Closed Principle Otevřenost pro rozšíření, uzavřenost pro změny Navrhujme rozhraní tak, aby nebyla omezující (abychom snadno mohli přidávat a rozšiřovat), ale abychom je nemuseli již měnit

Liskov Substitution Principle • Instanci lze nahradit instancí poděděné třídy • Rozhodně ne toto: • Podědíme List<string> • Rušení metod vyhozením NotSupportedException • Změna chování oproti původní tříd Potomek je předek a něco navíc Mrtvá osoba, nejmenovaný český profesor

Dependency Inversion Principle • Třídy mají své závislosti deklarovat navenek a nechat si je naplnit zvenčí Třída NewsletterService si nemá vytvářet instanci třídy Mailer Rozdíl mezi CI a DI

Dependency Inversion Principle • Druhy závislostí • Constructor Dependency CI • Závislost je předána jako parametr konstruktoru • Property Dependency DI • Závislost je držena ve vlastnosti třídy Třída NewsletterService si nemá vytvářet instanci třídy Mailer Rozdíl mezi CI a DI