Book Image

Functional C#

Book Image

Functional C#

Overview of this book

Functional programming makes your application faster, improves performance, and increases your productivity. C# code is written at a higher level of abstraction, so that code will be closer to business requirements, abstracting away many low-level implementation details. This book bridges the language gap for C# developers by showing you how to create and consume functional constructs in C#. We also bridge the domain gap by showing how functional constructs can be applied in business scenarios. We’ll take you through lambda expressions and extension methods, and help you develop a deep understanding of the concepts and practices of LINQ and recursion in C#. By the end of the book, you will be able to write code using the best approach and will be able to perform unit testing in functional programming, changing how you write your applications and revolutionizing your projects.
Table of Contents (19 chapters)
Functional C#
Credits
About the Author
Acknowledgments
About the Reviewer
www.PacktPub.com
Customer Feedback
Preface

Coding best practices in functional C#


The functional approach has the concept of a pure function. This means that the function will produce the same result as long as we pass the exact same input. Now, let's start our discussion to create the better functional code by following the coding best practices outlined here.

Preventing dishonest signatures

As we discussed in Chapter 1, Tasting Functional Style in C#, we use the mathematical approach to constructing our code in functional programming. In other words, functional programming is programming with mathematical functions. There are two requirements that mathematical functions must fit, they are:

  • A mathematical function should always return the same result whenever we supply the same arguments.

  • The signature of the mathematical function should deliver all the information for the possible accepted input values and the possible produced output.

Now let's take a look at the following code snippet, which we can find in the HonestSignature.csproj...