1 / 70

How to be a C# ninja in 10 easy steps.

How to be a C# ninja in 10 easy steps. Benjamin Day. Benjamin Day. Brookline, MA Consultant, Coach, & Trainer Microsoft MVP for Visual Studio ALM Team Foundation Server, Software Testing, Scrum , Software Architecture Scrum.org Classes Professional Scrum Developer (PSD)

hogan
Download Presentation

How to be a C# ninja in 10 easy steps.

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Benjamin Day • Brookline, MA • Consultant, Coach, & Trainer • Microsoft MVP for Visual Studio ALM • Team Foundation Server, Software Testing, Scrum, Software Architecture • Scrum.org Classes • Professional Scrum Developer (PSD) • Professional Scrum Foundations (PSF) • www.benday.com, benday@benday.com, @benday

  3. Online courses at Pluralsight.com

  4. Why did I write this talk?

  5. Top 10 things

  6. The List. • Be humble • Object-orientation • Write less code • Value Types vs. Reference Types • Exceptions • Generics • Collections • IDisposable, using, & garbage collection • LINQ • Lambda Expressions • Async & Await

  7. #1: Be humble.

  8. Be humble. • Software is complex. • We developers… • …want to please • …think we’re awesome • …almost always underestimate

  9. 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.

  10. Tip for managers. • Your devs are afraid of you.

  11. Tip for executives. • Your devs are afraid of you. • Your project managers are afraid of you. • Your project managers are afraid of the devs.

  12. “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.

  13. #2: Remember Object-Orientation

  14. Object-Oriented Principles • The 4 tenets. What are they? • Encapsulation • Polymorphism • Inheritance • Abstraction INTERVIEW QUESTION!

  15. #3: Write less code

  16. Save some typing.

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

  18. Everything you write has to be maintained.

  19. Whatever has to be maintained is “inventory.”

  20. var vs. object

  21. Auto-Implemented Properties

  22. Read-Only Auto-Implemented Properties

  23. …and now I’m going to contradict myself.

  24. Avoid ternary operators

  25. #4: Value types vs. reference types

  26. Whuh? Value Types Reference Types Object types Stored in memory “heap” Variables are “pointers” to memory location • Non-object types • Stored in memory “stack” • int, long, char, byte, etc. • float, double • decimal • bool • User-defined • Structs • Enumerations INTERVIEW QUESTION!

  27. 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 INTERVIEW QUESTION!

  28. #5: Exception Handling

  29. Throw vs. throw ex throw; throw ex; INTERVIEW QUESTION!

  30. #6: Generics

  31. 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

  32. ViewModelField<T> • DomainObjectManager<T>

  33. #7: Collections

  34. What is a Collection? • Data type for organizing lists of objects • Similar to an array

  35. Part of the .NET framework • 5 namespaces

  36. Array vs. List<T> Array List<T> Automatically expands • Size defined when created

  37. ArrayList vs. List<T> ArrayList List<T> Type-safe Everything must be an instance of T • Not type-safe • Everything is an object • Watch out for boxing / unboxing INTERVIEW QUESTION!

  38. #8: IDisposable, Using, andGarbage Collection

  39. 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.

  40. IDisposable

  41. IDisposable: Custom Cleanup • Gets called when the Garbage Collector is disposing your object • Add custom logic • For example, close any open database connections

  42. 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 INTERVIEW QUESTION!

  43. Wrap database connections in ‘using’ blocks • Most database classes implement IDisposable

  44. Why should you wrap calls to database object in ‘using’ statements? INTERVIEW QUESTION!

  45. But there’s a catch.

  46. The Garbage Collector doesn’t call IDisposable.Dispose().

  47. If you want to be bulletproof…

  48. …implement IDisposable along with a Destructor.

More Related