benday csharpninja slides
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
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]