how to be a c# ninja in 10 easy steps€¦ · how to be a c# ninja in 10 easy steps benjamin day....

52
How to be a C# ninja in 10 easy steps Benjamin Day

Upload: others

Post on 16-Jun-2020

6 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

How to be a C# ninja in 10 easy steps

Benjamin Day

Page 2: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Benjamin Day

• Consultant, Coach, Trainer

• Scrum.org Classes

– Professional Scrum Developer (PSD)

– Professional Scrum Foundations (PSF)

• TechEd, VSLive, DevTeach, O’Reilly 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

Page 3: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

© 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 Owners

ExecutivesScrum Masters

Architects

Business Analysts

DB Specialists

Designers

Developers

Testers

Everyone

Page 4: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

TOP 10 THINGS

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

Page 5: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 6: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Some extras.

11.Virtual, override, & new()

12. Tune out the “static”

13. Partial classes & methods

14. Covariencecontravariance

15.Named parameters

16.Optional parameters

17.Dynamic keyword

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

Page 7: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

BE HUMBLE.

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

Page 8: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Be humble.

• Software is complex.

• We developers…

– …want to please

– …think we’re awesome

– …almost always underestimate

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

Page 9: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 10: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

“C# doesn’t do Xyz. C# sucks.”

• Lesson I learned.

• There’s a reason it’s built that way.

• Don’t fight it.

• Embrace it.

• Learn from the design.

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

Page 11: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Remember Object-Orientation

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

Page 12: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Object-Oriented Principles

• 4 tenets

• Encapsulation

• Polymorphism

• Inheritance

• Abstraction

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

Page 13: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

WRITE LESS CODE

Copyright © 2011, Benjamin Day Consulting, Inc. www.benday.com 13

Page 14: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Save some typing.

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

Page 15: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Less is more.(as long as it’s readable)

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

Page 16: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Everything you write has to be maintained.

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

Page 17: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

var vs. object

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

Page 18: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Auto-Implemented Properties

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

Page 19: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Read-Only Auto-Implemented Properties

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

Page 20: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Avoid ternary operators

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

Page 21: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

VALUE TYPES VS.

REFERENCE TYPES

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

Page 22: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 23: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Boxing and Unboxing

• Boxing

– Process of wrapping a

value 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

Page 24: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

EXCEPTION HANDLING

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

Page 25: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Throw vs. throw ex

throw; throw ex;

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

Page 26: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

GENERICS

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

Page 27: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 28: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

• ViewModelField<T>

• DomainObjectManager<T>

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

Page 29: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

COLLECTIONS

Page 30: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 31: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

• Part of the .NET framework

• 5 namespaces

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

Page 32: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Array vs. List<T>

Array

• Size defined when created

List<T>

• Automatically expands

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

Page 33: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

ArrayList vs. List<T>

ArrayList

• Not type-safe

• Everything is an object

• Watch out for boxing / unboxing

List<T>

• Type-safe

• Everything must be an instance of T

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

Page 34: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

IDISPOSABLE, USING, AND

GARBAGE COLLECTION

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

Page 35: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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 memory management.

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

Page 36: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

IDisposable

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

Page 37: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

IDisposable: Custom Cleanup

• Gets called when the Garbage Collector is disposing your object

• Add custom logic

• For example, close any open database connections

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

Page 38: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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

Page 39: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

What does the ‘using’ statement do?

• Wraps instance of IDisposable for block of code

• Instance is disposed automatically at the end of the code block

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

Page 40: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Wrap database connections in ‘using’ blocks

• Most database classes implement IDisposable

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

Page 41: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Why should you wrap calls to database object in ‘using’

statements?

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

Page 42: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

LINQ

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

Page 43: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

LINQ

• Language-Integrated Query

• Enables SQL-like querying of objects via IEnumerable<T>

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

Page 44: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

LINQ Stuff

Operators

• 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

Page 45: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

(Code Demo: LinqSample.cs)

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

Page 46: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

LAMBDA EXPRESSIONS

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

Page 47: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

What’s a “lambda expression”?

• Anonymous functions

• Helpful for delegates

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

Page 48: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

(Code Demos: LambdaExpressionSample.cs &

LambdaExpressionForm.cs)

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

Page 49: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Additional Reading

• Essential C# 4.0 by Mark Michaelis

• Great overview of the language

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

Page 50: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Additional Reading

• CLR via C#by Jeffrey Richter

• What’s going on under the hood of C# and the .NET Framework

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

Page 51: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

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 51

Page 52: How to be a C# ninja in 10 easy steps€¦ · How to be a C# ninja in 10 easy steps Benjamin Day. Benjamin Day • Consultant, Coach, Trainer • Scrum.org Classes – Professional

Thank you.

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