benday csharpninja slides

Upload: imaarha

Post on 06-Apr-2018

214 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/3/2019 BenDay CSharpNinja Slides

    1/52

    How to be a C# ninjain 10 easy steps

    Benjamin Day

  • 8/3/2019 BenDay CSharpNinja Slides

    2/52

    Benjamin Day Consultant, Coach, Trainer

    Scrum.org Classes Professional Scrum Developer (PSD)

    Professional Scrum Foundations (PSF)

    TechEd, VSLive, DevTeach, OReilly OSCON

    Visual Studio Magazine, Redmond Developer News Microsoft MVP for Visual Studio ALM

    Team Foundation Server, TDD, Testing Best Practices,Silverlight, Windows Azure

    http://blog.benday.com

    [email protected]

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 2

  • 8/3/2019 BenDay CSharpNinja Slides

    3/52

    1993-2011 Scrum.org, All Rights Reserved

    Professional Scrum at Scrum.org

    Professional

    Scrum

    Product Owner

    Professional Scrum Foundations

    Professional

    Scrum Master

    Professional

    Scrum

    Developer.NET or Java

    Product OwnersExecutives

    Scrum Masters

    Architects

    Business Analysts

    DB SpecialistsDesigners

    Developers

    Testers

    Everyone

  • 8/3/2019 BenDay CSharpNinja Slides

    4/52

    TOP 10 THINGS

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 4

  • 8/3/2019 BenDay CSharpNinja Slides

    5/52

    The List.1. Be humble

    2. Object-orientation

    3. Write less code

    4. Value Types vs.Reference Types

    5. Exceptions

    6. Generics

    7. Collections

    8. IDisposable, using, &garbage collection

    9. LINQ

    10. Lambda Expressions

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 5

  • 8/3/2019 BenDay CSharpNinja Slides

    6/52

    Some extras.11.Virtual, override, &

    new()12. Tune out the static

    13.Partial classes &

    methods14.Covarience

    contravariance

    15.Named parameters16.Optional parameters

    17.Dynamic keyword

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 6

  • 8/3/2019 BenDay CSharpNinja Slides

    7/52

    BE HUMBLE.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 7

  • 8/3/2019 BenDay CSharpNinja Slides

    8/52

    Be humble.

    Software is complex.

    We developers

    want to please

    think were awesome almost always underestimate

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 8

  • 8/3/2019 BenDay CSharpNinja Slides

    9/52

    Tips.

    Keep it simple.

    Expect to make mistakes.

    Not everyone will understand your

    abstractions. Favor maintainability over slickness.

    Write unit tests. Lots of unit tests.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 9

  • 8/3/2019 BenDay CSharpNinja Slides

    10/52

    C# doesnt do Xyz. C# sucks. Lesson I learned.

    Theres a reason its built that way.

    Dont fight it. Embrace it.

    Learn from the design.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 10

  • 8/3/2019 BenDay CSharpNinja Slides

    11/52

    RememberObject-Orientation

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 11

  • 8/3/2019 BenDay CSharpNinja Slides

    12/52

    Object-Oriented Principles 4 tenets

    Encapsulation

    Polymorphism Inheritance

    Abstraction

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 12

  • 8/3/2019 BenDay CSharpNinja Slides

    13/52

  • 8/3/2019 BenDay CSharpNinja Slides

    14/52

    Save some typing.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 14

  • 8/3/2019 BenDay CSharpNinja Slides

    15/52

    Less is more.(as long as its readable)

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 15

  • 8/3/2019 BenDay CSharpNinja Slides

    16/52

    Everything you write has to bemaintained.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 16

  • 8/3/2019 BenDay CSharpNinja Slides

    17/52

    var vs. object

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 17

  • 8/3/2019 BenDay CSharpNinja Slides

    18/52

    Auto-Implemented Properties

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 18

  • 8/3/2019 BenDay CSharpNinja Slides

    19/52

    Read-OnlyAuto-Implemented Properties

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 19

  • 8/3/2019 BenDay CSharpNinja Slides

    20/52

    Avoid ternary operators

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 20

  • 8/3/2019 BenDay CSharpNinja Slides

    21/52

    VALUE TYPES VS.

    REFERENCE TYPES

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 21

  • 8/3/2019 BenDay CSharpNinja Slides

    22/52

    Whuh?Value Types

    Non-object types

    Stored in memory stack

    int, long, char, byte, etc.

    float, double decimal

    bool

    User-defined Structs

    Enumerations

    Reference Types

    Object types

    Stored in memory heap

    Variables are pointers to

    memory location

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 22

  • 8/3/2019 BenDay CSharpNinja Slides

    23/52

    Boxing and Unboxing Boxing

    Process of wrapping avalue type in an

    object reference

    Unboxing Converting a boxed value

    type object back into an

    value type variable

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 23

  • 8/3/2019 BenDay CSharpNinja Slides

    24/52

    EXCEPTION HANDLING

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 24

  • 8/3/2019 BenDay CSharpNinja Slides

    25/52

    Throw vs. throw exthrow; throw ex;

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 25

  • 8/3/2019 BenDay CSharpNinja Slides

    26/52

    GENERICS

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 26

  • 8/3/2019 BenDay CSharpNinja Slides

    27/52

    What are generics? Syntax that allows you to use similar

    functionality with different types in a type-safe way

    Implementation is the same

    Data types are different

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 27

  • 8/3/2019 BenDay CSharpNinja Slides

    28/52

    ViewModelField

    DomainObjectManager

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 28

  • 8/3/2019 BenDay CSharpNinja Slides

    29/52

    COLLECTIONS

  • 8/3/2019 BenDay CSharpNinja Slides

    30/52

    What is a Collection? Data type for organizing lists of objects

    Similar to an array

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 30

  • 8/3/2019 BenDay CSharpNinja Slides

    31/52

    Part of the

    .NETframework

    5 namespaces

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 31

  • 8/3/2019 BenDay CSharpNinja Slides

    32/52

    Array vs. ListArray

    Size defined whencreated

    List

    Automatically expands

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 32

  • 8/3/2019 BenDay CSharpNinja Slides

    33/52

    ArrayList vs. ListArrayList

    Not type-safe

    Everything is an object

    Watch out for boxing /unboxing

    List

    Type-safe

    Everything must be aninstance of T

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 33

  • 8/3/2019 BenDay CSharpNinja Slides

    34/52

    IDISPOSABLE, USING, AND

    GARBAGE COLLECTION

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 34

  • 8/3/2019 BenDay CSharpNinja Slides

    35/52

    What is Garbage Collection? Background process in .NET

    Determines when an object is not needed

    Deletes it automagically

    Frees up memory

    You worry much less about memorymanagement.

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 35

  • 8/3/2019 BenDay CSharpNinja Slides

    36/52

    IDisposable

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 36

  • 8/3/2019 BenDay CSharpNinja Slides

    37/52

    IDisposable: Custom Cleanup Gets called when the Garbage Collector is

    disposing your object Add custom logic

    For example, close any open databaseconnections

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 37

  • 8/3/2019 BenDay CSharpNinja Slides

    38/52

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 38

  • 8/3/2019 BenDay CSharpNinja Slides

    39/52

    What does the

    using statement do? Wraps instance of

    IDisposable for blockof code

    Instance is disposed

    automatically at theend of the code block

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 39

  • 8/3/2019 BenDay CSharpNinja Slides

    40/52

    Wrap database connections

    in using blocks

    Most database classes implement

    IDisposable

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 40

  • 8/3/2019 BenDay CSharpNinja Slides

    41/52

    Why should you wrap calls todatabase object in using

    statements?

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 41

  • 8/3/2019 BenDay CSharpNinja Slides

    42/52

    LINQ

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 42

  • 8/3/2019 BenDay CSharpNinja Slides

    43/52

    LINQ Language-Integrated Query

    Enables SQL-like querying of objects viaIEnumerable

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 43

  • 8/3/2019 BenDay CSharpNinja Slides

    44/52

    LINQ StuffOperators

    select from

    where

    orderby

    Useful functions

    FirstOrDefault()

    First()

    Min()

    Max()

    Count()

    Skip()

    Take()

    Reverse() Sum()

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 44

  • 8/3/2019 BenDay CSharpNinja Slides

    45/52

    (Code Demo: LinqSample.cs)

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 45

  • 8/3/2019 BenDay CSharpNinja Slides

    46/52

    LAMBDA EXPRESSIONS

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 46

  • 8/3/2019 BenDay CSharpNinja Slides

    47/52

    Whats a lambda expression? Anonymous functions

    Helpful for delegates

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 47

  • 8/3/2019 BenDay CSharpNinja Slides

    48/52

    (Code Demos:LambdaExpressionSample.cs &

    LambdaExpressionForm.cs)

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 48

  • 8/3/2019 BenDay CSharpNinja Slides

    49/52

    Additional Reading Essential C# 4.0

    by Mark Michaelis

    Great overview of the

    language

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 49

  • 8/3/2019 BenDay CSharpNinja Slides

    50/52

    Additional Reading CLR via C#

    by Jeffrey Richter

    Whats going on

    under the hood of C#and the .NETFramework

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 50

  • 8/3/2019 BenDay CSharpNinja Slides

    51/52

    The List.1. Be humble

    2. Object-orientation3. Write less code

    4. Value Types vs.

    Reference Types5. Exceptions

    6. Generics

    7. Collections8. IDisposable, using, &

    garbage collection

    9. LINQ10. Lambda Expressions

    Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 51

  • 8/3/2019 BenDay CSharpNinja Slides

    52/52

    Thank you.

    http://blog.benday.com | http://www.benday.com | [email protected]