this post was submitted on 14 Nov 2024
56 points (100.0% liked)

Programmer Humor

421 readers
29 users here now

Welcome to Programmer Humor!

This is a place where you can post jokes, memes, humor, etc. related to programming!

For sharing awful code theres also Programming Horror.

Rules

founded 1 year ago
MODERATORS
 
top 19 comments
sorted by: hot top controversial new old
[–] Bougie_Birdie@lemmy.blahaj.zone 52 points 3 days ago (1 children)

Most of my college coursework was around OOP. That said, they actually did a pretty lousy job of explaining it in a practical sense, so since we were left to figure it out ourselves a lot of our assignments ended up looking like this.

At the end of the program, our capstone project was to build a full stack app. They did a pretty good job simulating a real professional experience: we all worked together on requirements gathering and database design, then were expected to build our own app.

To really drive home the real world experience, the professor would change the requirements partway through the project. Which is a total dick move, but actually a good lesson on its own.

Anyway, this app was mostly about rendering a bunch of different views, and something subtly would change that ended up affecting all views. After the fact, the professor would say something to the effect of "If you used good objects, you'll only have to make the change in one place."

This of course is only helpful if you really appreciated the power of OOP and planned it from the start. Most of us were flying by the seat of our pants, so it was usually a ton of work to get those changes in

[–] Kache@lemm.ee 15 points 2 days ago (2 children)

If you used good objects, you'll only have to make the change in one place

IMO that's generally a retroactive statement because in practice have to be lucky for that to be true. An abstraction along one dimension -- even a good one, will limit flexibility in some other dimension.

Occasionally, everything comes into alignment and an opportunity appears to reliably-ish predict the correct abstraction the future will need.

Most every other time, you're better off avoiding the possibility of the really costly bad abstraction by resisting the urge to abstract preemptively.

[–] shasta@lemm.ee 3 points 1 day ago (1 children)

Generally true, but if the professor in this context was not a moron, he probably mentioned at the start of the class that he would be forcing a change to requirements part way through the course. Ideally, he would've specified what kind of changes this would be, in order for the students to account for that in their design. I think it's likely this happened, but the student was lacking so much experience he didn't understand that hint or what he needed to do in the design in order to later swap parameters more easily. I'm going to withhold judgement on this professor having only heard a biased account. It could've been a very good assignment, now being told from the perspective of a mediocre student.

[–] Bougie_Birdie@lemmy.blahaj.zone 3 points 1 day ago* (last edited 1 day ago)

I wasn't aware my mediocrity was on display. 😅

Honestly, I liked the professor. When he had time to teach something he was clearly interested in, he did a great job of connecting. He didn't get to teach us OOP though because there was a staffing emergency. The person we did get normally taught Hardware, so he was basically just reading aloud the textbook. Poor guy.

And you're right, the professor did let us know that there was going to be a change of requirements partway through. But it wouldn't be a good lesson if he told us what was going to change, although he did give some examples from previous times he'd taught the course.

A lot of people got burned when the change came. For my part I thought I did pretty okay, the refactor didn't go perfectly but it was better than if I hadn't been prepared. But I've also written a bunch of really gross objects that served no purpose just because they might change later. As anything is, it's all about finding that happy medium

That's a fair assessment. It's kind of like the rule for premature optimization: don't.

With experience you might get some intuition about when it's good to lean into inheritance. We were definitely lacking experience at that point though.

OOP is a pretty powerful paradigm, which means it's also easy to provide enough rope to hang yourself with. See also just about any other meme here about OOP

[–] jbk@discuss.tchncs.de 30 points 3 days ago

but Strings are objects 😔

[–] bitcrafter@programming.dev 10 points 2 days ago (1 children)

Hey now, you should be thanking your teachers for this incredibly valuable early life lesson on the difference between what the customer says that they want and what they actually need, and which of these two you are going to get paid more for!

Remember: the customer is always right!

/s

[–] sukhmel@programming.dev 1 points 1 day ago

and which of these two you are going to get paid more for

the secret answer to this isneither :(

[–] xep@fedia.io 14 points 3 days ago (1 children)

This is Java, so you can even turn those ints into Integers and doubles into Doubles if you want to maximize the objects in that part of the code. In all seriousness, though, it looks perfectly fine to me.

[–] hellfire103@lemmy.ca 1 points 3 days ago

Great idea, but unfortunately technicalities won't get me marks.

[–] fl42v@lemmy.ml 13 points 3 days ago (2 children)

But answer07 is an object... Not sure what your teacher/ta disliked 😆

[–] Matty_r@programming.dev 14 points 3 days ago (2 children)

I presume WeatherData.getData() should be going into some Data class that has multiple properties (using the , as a delimiter) instead of what OP is doing and just using the String

[–] fl42v@lemmy.ml 7 points 3 days ago* (last edited 3 days ago)

I mean, unless it's explicitly specified, one can still argue. For fun, that is. I did it a few times with stuff like using maps when the task said I couldn't use loops. Didn't really get into trouble since there was a proper solution ready as well.

[–] ulterno@programming.dev 0 points 3 days ago (1 children)

This is one condition in which I might like the "If it runs, you get marks" examiners

[–] sukhmel@programming.dev 1 points 1 day ago

Depends on what was the course about. If it's about computation, then sure. If it's about OOP or architecture design (this one I wouldn't expect, unfortunately, but would be nice if it was taught somewhere), then the point is not just to run something.

[–] hellfire103@lemmy.ca 4 points 3 days ago (1 children)

Oh, I haven't handed it in yet. We were supposed to write our own methods.

[–] vrek@programming.dev 6 points 3 days ago

So really it's in a few days iwfu(I will fuck up)

[–] SynopsisTantilize@lemm.ee 4 points 2 days ago

Hmmm...yes this isn't C#....this isn't C# at all. I can't read this.

[–] faultypidgeon@programming.dev 5 points 3 days ago

TIFU by using eclipse