ideanl

ideanl

Any good books or resources for project maintainability?

I have come from an OOP background with usage of recognized design patterns for large projects that aids in maintainability. However, I am now interested in the blackbox nature of functional programming and specifically Elixir programming. I struggle to find resources teaching patterns for maintainability and readability of a large codebase. The best I’ve seen is references to libraries such as credo, excoveralls, dialyxir, etc. Does anybody know of some book or resource that does a good job explaining how to organize and keep maintainable large functional programming (specifically elixir) projects?

Most Liked

pragdave

pragdave

Author of Programming Elixir

This is why the mantra is "–no-ecto’. There’s no excuse for putting any model-related stuff in a Phoenix application, unless you miss Rails…

peerreynders

peerreynders

In terms of “large projects” I don’t think there is anything equivalent to Designing for Scalability with Erlang/OTP: Implement Robust, Fault-Tolerant Systems:

  • Chapters 3-4 deals with the process level (for example extracting generic behaviours)
  • Chapters 5-7 deals with OTP level details
  • Chapter 8 deals with supervision
  • Chapter 9 deals with (OTP) applications
  • Chapter 10 deals with special processes and custom behaviours
  • Chapters 11-12 deals with releases
  • Chapters 13-16 touches on various topics pertaining to distributed and unattended system architectures.

Now granted this is all presented in the context of the Erlang ecosystem but most lessons apply to systems built with Elixir as well.

It still boils down to:

  • choosing the right boundaries, be it at the function, module, process, or application granularity
  • managing the number, kind, and direction of any dependencies
  • designing effective collaborations, coordinations, and protocols.

Thinking like an Erlanger

… and when comes to these “principles” and “patterns” it is always important to consider:

The SOLID Design Principles Deconstructed

“Patterns” primarily establish a nomenclature for some generalized solution approaches as they may apply to certain circumstances with the intent of making communication between developers more efficient, effective and clear. Secondarily they can also serve as case studies for the design guidelines they are based on.

The term originates from pattern language - not some kind of software equivalent of sewing patterns.

Exadra37

Exadra37

I also come from an OOP background where I regularly use the Resource Action pattern to write Solid and Clean Code but the MVC pattern used for example in Phoenix completely violates it.

The best software architecture I found until now is present in the book Programming Elixir 1.6 and the Elixir for Programmers video course and both have as author @pragdave .

I strongly recommend you to take a look to both and see how the approach results in a more clean and decoupled architecture :slight_smile:

Where Next?

Popular in Chat/Questions Top

sadcad
I love the Phoenix and Elixir docs, but I always tend to learn faster when I watch a video of someone explaining things and then I implem...
New
woohaaha
I’m coming from Ruby and Rails. I have read some Elixir and Phoenix books. They shed a lot of light about building applications in Elixir...
New
LegitStack
I’m not a hugely experienced programmer, just a few years. So I’m looking for resources to learn about a topic but I can’t seem to find m...
New
asfand
I already created an Elixir Phoenix app for learning purpose. In this app students of our collage will create profiles, and will chat wit...
New
aswinmohanme
I recently finished the Udemy course on Elixir and Phoenix and I am thinking about using it for the next project. But I am stuck as how t...
New
markdev
What are the best beginner resources for learning Elixir and OTP (not Phoenix) in 2018?
New
miguelsrrobo
hi i was wondering if it is necessary to learn erlang to learn elixir
New
ca1989
Hi all, is there any up to date resource out there (blog, talk, video, book…) about deploying elixir applications using releases? In pa...
New
g5becks
Hello everyone. So I just got done reading all of the introduction to Elixir and working through the basics of the language. I am not new...
New
QueenSvetlana
My bookstore has Introducing Elixir: Getting Started In Functional Programming and the front cover says the book uses Elixir 1.4. The cur...
New

Other popular topics Top

malloryerik
Hi, this is for people who, like me, have had some friction using .html.heex templates in VSCode. The solution seems to be, in a hyphena...
New
WestKeys
Currently suffering from paralysis by [HTTP client] analysis. This is rather unusual in Elixirland as there tends to be consensus on the ...
New
shahryarjb
Hello, I have map which I want to convert it to string like this: the map: %{last_name: "tavakkoli", name: "shahryar"} the string I ne...
New
Fl4m3Ph03n1x
About me? ( if you have nothing better to do than reading about some random guy in the internet :stuck_out_tongue: ) Hello all, this is ...
New
saif
Hello everyone, Long time lurker first time poster here. I’ve recently begun working on Elixir full-time again! :raised_hands: It’s been...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list. ...
New
shijith.k
I am trying to start a new phoenix project with elixir 1.9, but mix phx.new does not work. It says that ** (Mix) The task "phx.new" could...
New
AstonJ
We’ve put together this wiki for Phoenix LiveView - please feel free to add any info you feel is worth including. What is Phoenix LiveV...
New
joaquinalcerro
Hi there, I am working with Ecto-Postgresql and I need to call all of the records from a specific table but the table has 40,000 records...
New
hariharasudhan94
Lets say I have map like this fetching from my database %{"_id" => #BSON.ObjectId<58eb1a7a9ad169198c3dXXXX>, "email" => ...
New

Latest on Elixir Forum

Elixir Forum

We're in Beta

About us Mission Statement