Object-oriented design patterns on OSHub

[My scheduler operations implementation] A benefit of working on your own operating system is that you’re free from the usual "restraints" of coll...

OSHub - Hobby OS Projects

one aspect on the complexity of software projects is a complex graph of dependencies (I'm not thinking only to other packages, but class/module dependencies inside a single package/library).

Functional programming encourages to use really tiny and precise dependencies (i.e. functions) instead of collections of them (e.g. classes).

This makes the dependency graph more complex. Hence managing and organizing the dependency graph becomes harder.

Could this be a reason why in functional programming projects I tend to see less code organization than in OOP ones?

#functionalprogramming #oop #objectoriented #objectorienteddesign #complexity #Haskell

Software makes computers do useful work. Good software does that accurately and reliably. Great software does those while making it clear to readers how it works, why it does what it does, and how it can be changed.

#software #design #programming #SoftwareDevelopment #ObjectOrientedDesign #FunctionalProgramming #architecture

I am re-watching some talks by Sandy Metz just to sort my thoughts and I think it works.

"All the Little Things" about applying SOLID by using small, interchangeable objects https://www.youtube.com/watch?v=8bZh5LMaSmE

"Get a Whiff of This" about code smells and how to derive actionable recipes for refactoring from them: https://www.youtube.com/watch?v=PJjHfa5yxlU

#objectorienteddesign #oop #ruby

RailsConf 2014 - All the Little Things by Sandi Metz

Theory tells us to build applications out of small, interchangeable objects but reality often supplies the exact opposite. Many apps contain huge classes of ...

YouTube

A class should always be small enough that you can feed it with 2 large pizzas

#objectOrientedDesign

#Roguelike #Python #ObjectOrientedDesign

The complication here is that the core algorithm is 47 lines of code. The "break" isn't easily subclassed into the middle.

Which means the algorithm needs to be decomposed to expose the internal "while not done" so a subclass can add a condition.

(The idea of adding an optional parameter, which appealing in some respsects is inappropriate here. This isn't a general feature for all games. It's a hack for testing.)

After reading the amazing book "Practical Object Oriented Design in Ruby" by Sandi Metz, I just jotted down some notes (being the thousandth doing so😅).

Might be useful for some fellow Rubyists out there! 📚🚀 🔗:

https://www.kevin-liebholz.me/2023/09/26/practical-object-oriented-design-in-ruby-cheatsheet

#Ruby #ObjectOrientedDesign

Cheatsheet “Practical Object Oriented Design in Ruby”

Hello everyone, I took some notes during reading “Practical Object Oriented Design in Ruby” by Sandi Metz. It’s an amazing book about basic code design & code architecture. So, I am providing my notes here (also for me to come back to). However, I strongly recommend everyone to read this book, you will get a lot out of it!

Kevin Liebholz
Certificate of Completion

Check out my certificate for “Programming Foundations: Object-Oriented Design”: https://www.linkedin.com/learning/certificates/dd0a6ca8c6a66b76d11d04abbee8294f592bbda341f32212b1bc3aad1818b2d3.

LinkedIn

How do we do that?

Well, we supply software for new libraries - absolutely #freesoftware as in beer, and can even aid with some #hosting costs so there's nothing out of pocket.

For existing libraries, which might already have systems they can't easily migrate off of, we can provide #adapters so that the MoP software can provide an #API for use in federation. The current code is setup using #objectorienteddesign to do just this - each system will need an adapter written though!