Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

A big, big tool for that, is OOP inheritance, which is considered "bad coder" signal, these days.

Is it? I’d agree that there’s increasing awareness of the limitations of OOP, and I’d agree that using inheritance excessively can be one of the limiting factors, but I don’t think I’ve ever personally seen anyone criticised or penalised for using inheritance appropriately.



Just using OOP is considered bad. There is no "appropriate" way to use OOP. I see people being criticized for that, all the time.

I have run into folks that don't understand polymorphism. It seems that it is not even being taught.

Old Boomer Yells at Sky


I've done a lot of OoP and my opinion these days is that if the reader needs to understand polymorphism properly to understand your inheritance, it's too complex.

(Exceptions exist, of course, like libraries inherently dealing with reflection)


Well, to each their own. I like to understand everything I do, at a very deep level, and I really enjoy learning that kind of stuff. I started as an EE, so my understanding sinks down into the FET junction. My first software was machine code, so it’s been a long, strange trip.

One thing that geeks love doing, is telling other geeks they are bad at what they do. It gets a bit grating, but I’ve come to the realization that I need be true to myself, because it’s a losing proposition, hanging my self-respect on the opinions of others.

I do what I do, and get the results I get. I don’t spend much time, worrying about how I compare to others.

One of the benefits of working at the direction of my own muse.


It's good that you know and understand things at a deeper level.

That should make you even better equipped to design simple interfaces that require as little depth of understanding as possible from the next person.

Similarly I've happily spent my couple of years with functional purity and higher-level types in academic languages - function signatures sometimes orders of magnitude longer than the implementation itself - yet I dip into those depths only as necessary and try to keep my TypeScript interfaces as "stupid" as I can get away with without compromising on semantics. Enums are too fancy for me. I try to keep state at minimum but there's a 'let' every few thousand lines or so.

And all that venturing into lower-level concurrent C++, agent systems, parallel programming, erlang? You ain't gonna know about any of that looking at my concurrent Rust.

> One of the benefits of working at the direction of my own muse.

Oh, well, what I'm writing above is from the point of code meant for collaboration - either open source or professionally. If you're coding for yourself only, or in academia, by all means stop trying to please the crowd and start cranking out some poetry!


Not quite the "poetry" level, but it's 99.9% sure that the schmuck that will be maintaining my code will be Yours Troolie.

I write code that I want to see in a year.

You can see my documentation philosophy in this treatise: https://littlegreenviper.com/miscellany/leaving-a-legacy/




Consider applying for YC's Fall 2025 batch! Applications are open till Aug 4

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: