this post was submitted on 01 Sep 2023
339 points (96.2% liked)

Programming

17668 readers
174 users here now

Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!

Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.

Hope you enjoy the instance!

Rules

Rules

  • Follow the programming.dev instance rules
  • Keep content related to programming in some way
  • If you're posting long videos try to add in some form of tldr for those who don't want to watch videos

Wormhole

Follow the wormhole through a path of communities !webdev@programming.dev



founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
[–] ahmed@discuss.tchncs.de 30 points 1 year ago (7 children)

Oop is overrated

I never can understand classes

[–] karlhungus@lemmy.ca 12 points 1 year ago (1 children)

Wow, nice hot take!

I find the concept super intuitive, like a blueprint or a mold.

[–] spartanatreyu@programming.dev 1 points 1 year ago (2 children)

It's intuitive until you realise that not everything fits in a single inheritance hierarchy.

This gives a good example: https://www.youtube.com/watch?v=wfMtDGfHWpA

[–] PipedLinkBot@feddit.rocks 2 points 1 year ago

Here is an alternative Piped link(s): https://piped.video/watch?v=wfMtDGfHWpA

Piped is a privacy-respecting open-source alternative frontend to YouTube.

I'm open-source, check me out at GitHub.

[–] karlhungus@lemmy.ca 1 points 1 year ago (1 children)

I think of OOP as encapsulation, abstraction, and polymorphism primarily. Inheritance is definitely taught as part of it, but it seems like most people have found that to be the least used part of it.

It seems like you understand oop, but find it overrated, from your post it sounded like you didn't understand it -- but maybe you meant you didn't understand it's popularity.

[–] spartanatreyu@programming.dev 1 points 1 year ago

I absolutely understand OOP, its explosion took over everything that took a long time to recover from.

The problem with OOP is that it's pushed as a cure-all both by teachers who do not the problems it solves and also do not understand its own limitations.

In almost every situation where OOP makes sense, something else makes more sense to use.

[–] SoBoredAtWork@lemmy.world 12 points 1 year ago (1 children)

So... "thing I don't understand is overrated"?

[–] reverendsteveii@lemm.ee 3 points 1 year ago

I understand OOP. I like it. I also took my first coding classes in the late 90s and we were taught OOP as though it was the last coding paradigm that would ever be needed. It really set me back because I didn't even understand the principles of the functional paradigm until I was already at my first coding gig

[–] finestnothing@lemmy.world 7 points 1 year ago

I may not love oop, but it is extremely useful in the cases that you should use it

[–] 257m@lemmy.ml 3 points 1 year ago (1 children)

OOP isn't classes though but I get what your saying.

[–] BatmanAoD@programming.dev 8 points 1 year ago

OOP is classes, and their accompanying language features (primarily inheritance) and design patterns (e.g. factories).

[–] Double_A@discuss.tchncs.de 3 points 1 year ago

Often it's just a container for a bunch of related functions and common state variables for all those functions.

Rarely are classes actually used in the OOP way, where you then create many instances of that class...

[–] MajorHavoc@lemmy.world 2 points 1 year ago

Agreed. Inheritance, specifically, is a huge code smell.

When inheritance is acting as a quick way to implement an interface, it's lovely.

When an object is acting as a fancy dictionary, it's lovely.

When a class has more than one parent in it's chain of inheritance (upwards or sideways), that's a code smell.

It specifically tells us that the developers are trying to manage program state (variables and data) that simply should have been refactored out (or have drifted very far from the code they're actually needed by).