Download - Robert Haken - WUG
![Page 1: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/1.jpg)
Robert Haken Software Architect, Founder at HAVIT
Microsoft Most Valuable Professional: ASP.NET/IIS
Microsoft Certified Trainer: Web Development
HAVIT, s.r.o. | www.havit.cz
knowledge-base.havit.cz | [email protected]
![Page 2: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/2.jpg)
Coding Standards
Source Code Management
Issue Tracking
Dokumentace
Continuous Integration
Testing
![Page 3: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/3.jpg)
Volba platformy + jazyka
Formátování kódu
Naming Conventions
Coding Rules
Design Guidelines
![Page 4: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/4.jpg)
Pojmenování a organizace souborů Název souboru ~ název typu (třídy) Cesta k souboru ~ namespace Encoding souborů
Indentation TAB vs. Spaces
New Lines, Wrapping
Spacing kolem binárních operátorů, závorek, atp.
![Page 5: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/5.jpg)
Vertikální mezery v kódu
#regiony
Pořadí členů ve třídě
VS – Format Document – Ctrl+K, Ctrl+D
![Page 6: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/6.jpg)
Formátování a organizace kódu
![Page 7: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/7.jpg)
camelCase = lokální scope
parametry metod
lokální proměnné
private fieldy tříd/struktur
PascalCase = ostatní
![Page 8: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/8.jpg)
metoda = začíná slovesem v rozkazovacím tvaru
OtevriOkno(), OtevritOkno(), OtevreniOkna()
identifiers (properties, fields, ...)
podstatná + přídavná jména boolean => obvykle IsReady, CanSave, HasValue, atp.
zkratky >= 3 písmena => lower-case: HtmlForm, SazbaDph
![Page 9: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/9.jpg)
kolekce + množiny = množné číslo List<Zakaznik> zakaznici
kopírujeme název typu, pokud nepotřebujeme další rozlišení public Address Address {get; set;}
Invoice invoice = Accounting.CreateNewInvoice()
![Page 10: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/10.jpg)
výjimky XyException
interface IEnumerable
namespace Firma.Solution.Projekt.Folder
generika MyType<T>, MyType<TKey, TValue>
atributy XyAttribute
![Page 11: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/11.jpg)
enums obvykle XyMode, XyKind, XyLevel, atp.
množné číslo pro [Flags] – RegexOptions
XyEventHandler, XyEventArgs, XyCallback
events = pravidlo dle formy slovesa
Closing = before action, Closed = after action
![Page 12: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/12.jpg)
maďarská notace – strName
zkracování – UlozZak(), CastkaCelk
křížení terminologie Zadost pozadavek = new Zadost()
public bool SetCustomer(Zakaznik zakaznik)
spojování Novy_Zakaznik
![Page 13: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/13.jpg)
MSDN: Guidelines for Names
chyby v .NET Frameworku běžné System.Web.MailAttachment.Filename vs. FileName
ToString() – výjimka
a další, např. Convert.ToXy()
![Page 14: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/14.jpg)
Naming Conventions
![Page 15: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/15.jpg)
závorkování primitivních bool výrazů if ((zakaznik == null) || ((zakaznik != null) && zakaznik.IsActive))
ternární operátor výjimečně
např. mikro logika do výrazů v markup kódu
délka metod „maximálně na jednu obrazovku“
vs. cyklomatická složitost
![Page 16: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/16.jpg)
method-chaining pouze výjimečně ANO: text.Replace(...).ToLower().Trim()
NE: new MyClass().DoSomething()
XML dokumentace
validace argumentů, CodeContracts
IDesign C# Coding Standards
![Page 17: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/17.jpg)
MSDN: Design Guidelines for Developing Class Libraries
Design Patterns – GoF, Fowler
vlastní patterny pro opakované situace
nevymýšlejte kolo
generování kódu – O/R mapping, basic UI, ...
![Page 18: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/18.jpg)
Code Review
![Page 19: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/19.jpg)
verzování zdrojového kódu v repository
Subversion SVN
Microsoft Team Foundation Server
Microsoft SourceSafe
...
![Page 20: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/20.jpg)
atomický commit
buildovatelnost každé revize
kompletnost každé revize (DB, dll, ...)
povinné popisy každé revize / vazba na issue-tracking
granularita revizí
![Page 21: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/21.jpg)
jeden celek přes více repository
více celků v jedné repository
jedna úprava přes více revizí
více úprav v jedné revizi
nedodržení standardního schématu (/trunk)
![Page 22: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/22.jpg)
Source Code Management
![Page 23: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/23.jpg)
Agenda požadavků/bugů/nápadů/...
Řízení 100% práce vývojářů, dokumentace
Plánování zdrojů / Harmonogram projektů
Customer Portal / Helpdesk
MS TFS, Axosoft OnTime, JIRA, Bugzilla, ...
![Page 24: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/24.jpg)
Finální granularita cca 1-8 hod/task
Assigned To
Workflow
Due Date
Expected (Remaining) Duration
vazba na SCM revize
![Page 25: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/25.jpg)
Nový Připravuje se Čeká na přiřazení Přiřazen k implementaci Implementuje se K vývojářské kontrole K výstupní kontrole K předání zákazníkovi Hotový
Připraven, čeká Vrácen do implementace K nasazení Navrženo zrušení Zrušen
![Page 26: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/26.jpg)
Issue Tracking
![Page 27: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/27.jpg)
Typy dokumentace
obecná týmová (konvence, postupy, API, ...)
projektová (vývojářská, uživatelská, ...)
Formální vs. neformální - forma záleží na
příjemcích informace (zákazník, vývojáři, ...)
velikosti projektu (a rozpočtu)
![Page 28: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/28.jpg)
Formy dokumentace
XML komentáře v kódu
self-documented DB schéma
Issue-Tracking
Wiki
„Word“ - Analýza, Manuál, ...
Nutnost aktualizace !!!
![Page 29: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/29.jpg)
XML Dokumentace, DB doc, Wiki, ...
![Page 30: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/30.jpg)
schopnost zapracovávat změny do hlavní vývojové větve
=> granularita změn – revizí SCM
Build Server
Microsoft Team Foundation Server
Cruise Control.NET
Deployment
![Page 31: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/31.jpg)
Build Server
![Page 32: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/32.jpg)
in-code tests
if-then-throw ověřování argumentů
Debug.Assert()
Code Contracts
unit testy
„ruční“ testy, popř. automated
![Page 33: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/33.jpg)
![Page 34: Robert Haken - WUG](https://reader030.vdocuments.pub/reader030/viewer/2022012705/61a6c18d0fc65b6f1b4cc35e/html5/thumbnails/34.jpg)
Hledáme nového kolegu na pozici
Podrobnosti hledejte na http://knowledge-base.havit.cz