Functional Programming (FP) styles are generally preferred to Object Orientated (OO). FP programs have two major advantages: they are much easier to test and they scale much better.

Even if you are programming as an OO programmer you will be a better programmer if you know FP

Basics

Unlike object orientated guidelines, I was unable to find an equivalent of SOLID. The following are slightly opinionated (and their reasoning explained). As these are opinionated, in a project you can take different guidelines, but please be aware of the reasons

Advanced topics