Вы находитесь на странице: 1из 52

How to be a C# ninja in 10 easy steps

Benjamin Day

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 benday@benday.com

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

Professional Scrum at Scrum.org


Professional Scrum Product Owner Professional Scrum Master Professional Scrum Developer
.NET or Java
Architects Business Analysts DB Specialists Designers Developers Testers

Product Owners Executives

Scrum Masters

Professional Scrum Foundations


1993-2011 Scrum.org, All Rights Reserved

Everyone

TOP 10 THINGS

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

The List.
1. 2. 3. 4. Be humble Object-orientation Write less code 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

Some extras.
11. Virtual, override, & new() 12. Tune out the static 13. Partial classes & methods 14. Covarience contravariance 15. Named parameters 16. Optional parameters 17. Dynamic keyword
Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 6

BE HUMBLE.

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

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

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

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

Remember Object-Orientation

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

11

Object-Oriented Principles
4 tenets Encapsulation Polymorphism Inheritance Abstraction

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

12

WRITE LESS CODE

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

13

Save some typing.

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

14

Less is more. (as long as its readable)

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

15

Everything you write has to be maintained.

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

16

var vs. object

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

17

Auto-Implemented Properties

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

18

Read-Only Auto-Implemented Properties

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

19

Avoid ternary operators

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

20

VALUE TYPES VS. REFERENCE TYPES


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

Whuh?
Value Types Non-object types Stored in memory stack int, long, char, byte, etc. float, double decimal bool User-defined
Structs Enumerations
Copyright 2011, Benjamin Day Consulting, Inc. www.benday.com 22

Reference Types Object types Stored in memory heap Variables are pointers to memory location

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

EXCEPTION HANDLING

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

24

Throw vs. throw ex


throw; throw ex;

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

25

GENERICS

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

26

What are generics?


Syntax that allows you to use similar functionality with different types in a typesafe way Implementation is the same Data types are different

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

27

ViewModelField<T> DomainObjectManager<T>

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

28

COLLECTIONS

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

Part of the .NET framework 5 namespaces

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

31

Array vs. List<T>


Array Size defined when created List<T> Automatically expands

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

32

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

IDISPOSABLE, USING, AND GARBAGE COLLECTION


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

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

IDisposable

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

36

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

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

38

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

Wrap database connections in using blocks


Most database classes implement IDisposable

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

40

Why should you wrap calls to database object in using statements?

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

41

LINQ

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

42

LINQ
Language-Integrated Query Enables SQL-like querying of objects via IEnumerable<T>

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

43

LINQ Stuff
Operators select from where orderby Useful functions FirstOrDefault() First() Min() Max() Count() Skip() Take() Reverse() Sum()
44

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

(Code Demo: LinqSample.cs)

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

45

LAMBDA EXPRESSIONS

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

46

Whats a lambda expression?


Anonymous functions Helpful for delegates

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

47

(Code Demos: LambdaExpressionSample.cs & LambdaExpressionForm.cs)

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

48

Additional Reading
Essential C# 4.0 by Mark Michaelis Great overview of the language

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

49

Additional Reading
CLR via C# by Jeffrey Richter Whats going on under the hood of C# and the .NET Framework

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

50

The List.
1. 2. 3. 4. Be humble Object-orientation Write less code 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

Thank you.

http://blog.benday.com | http://www.benday.com | benday@benday.com

Вам также может понравиться