My new course Applying Functional Principles in C# for Pluralsight went live.
Applying Functional Principles in C#
What interesting about functional programming is that it allows you to adhere to the most important software development principles, just as the DDD practices do. It helps reduce the cognitive load when you deal with your code base and thus keep your software maintainable in a long term.
This course is based on the article series I posted awhile back. The course goes into the topic much deeper, however. It covers such themes as:
- The fundamental principles that lie at the foundation of functional programming.
- Immutable architecture and how to handle side effects which cannot be eliminated entirely.
- Why the use of exceptions for controlling the program flow contradicts functional principles and how to refactor away from that practice.
- Getting rid of primitive obsession.
- Why nulls are evil and how to mitigate the billion dollar mistake.
- Applying the Railway Oriented Programming approach in C# for handling failures and input errors.
The course doesn’t touch such topics as LINQ, extension methods, lambdas and higher-order functions. I deliberately didn’t include them because there’s enough such information on the Internet already. Instead, I wanted to talk about fundamental functional programming principles. They are quite simple but you would be surprised how many useful but lesser-known techniques flow from them.
The last part the course goes through refactoring of a fairly complex project with a functionality typical for a line of business application. You will see, step by step, how to apply all techniques described in the course in practice: how to deal with nulls, get rid of primitive obsession, eliminate as much side effects as possible, handle validation errors and failures, and more.
The sample project is built using Visual Studio 2015, C# 6, SQL Server, NHibernate and ASP.NET Web API. The code from the course is the code I use in production systems on a daily basis, so you can safely employ it in your own projects.
You can watch the course here: link.
I have some trial codes for this course too, so if you want to watch it but don’t have a subscription, write me an email and I’ll send you one. With it, you’ll have an unlimited access to the Pluralsight library during 30 days.