this post was submitted on 02 Oct 2024
210 points (98.2% liked)

196

17538 readers
376 users here now

Be sure to follow the rule before you head out.


Rule: You must post before you leave.



Other rules

Behavior rules:

Posting rules:

NSFW: NSFW content is permitted but it must be tagged and have content warnings. Anything that doesn't adhere to this will be removed. Content warnings should be added like: [penis], [explicit description of sex]. Non-sexualized breasts of any gender are not considered inappropriate and therefore do not need to be blurred/tagged.

If you have any questions, feel free to contact us on our matrix channel or email.

Other 196's:

founded 2 years ago
MODERATORS
 
top 26 comments
sorted by: hot top controversial new old
[–] javasux@lemmy.world 53 points 6 months ago* (last edited 6 months ago) (1 children)

bruh why is unsucked a global variable

also that function shouldn't be named Check if it does things other than checking (e.g. sucking)

[–] programmer_belch@lemmy.dbzer0.com 20 points 6 months ago (1 children)

Could be inside a class for something to be sucked, making unsucked a variable for the class. CheckAndSuck would be a better name for the function. I don't think the meme needed a code audit but here I am.

[–] davidagain@lemmy.world 6 points 6 months ago* (last edited 6 months ago) (1 children)

Your naming advice is universally good.

However, if this was a functional programming language, there wouldn't be any mutable global variables to be unaware were being examined, nor could Suck do any sucking unless it were passed the thing to suck and returned the sucked thing.

In this way the subtle class of bugs that you both are warning against would be impossible to introduce.

Depending on the kind of sucking that Suck does, however, you may perceive the global invisibility and availability of the sucking as an advantage in this case. But possibly not if the code is your girlfriend/boyfriend.

[–] programmer_belch@lemmy.dbzer0.com 8 points 6 months ago (1 children)

I didn't need to do this but I did and now I want it in my comment history:

class Suckable {
    bool unsucked;

public:
    Suckable () {
        unsucked = true;
    }

    void Suck() {
        unsucked = false;
    }

    void CheckAndSuck() {
        if (unsucked) {
            Suck();
        }
    }
};

Sorry for making you see c++, it's the language I'm currently using. This program compiles on my machine and doesn't use global variables.

[–] davidagain@lemmy.world 3 points 6 months ago* (last edited 6 months ago) (1 children)

Indeed, indeed.

No need to apologise for posting c++ in the channel. The programming world owes a lot to Prof. Stroustrup. I enjoyed your reply a great deal.

You have two choices: firstly, a regular regular attribute, where you can Suckable myThing; and myThing.CheckAndSuck; etc to your heart's content, and indeed no global variables are being sucked.

But you can also declare static bool unsucked; and what is a class variable if not a global variable by another name?

In fact, what is to stop your innocent-sounding accessor method from nuking the filesystem or calling memLeak.recurse();?

I'm not sure that these things keep you up at night, but you have my sympathy if they do.

If there was anything I could do to help you relax after a stressful day of multiple inheritance and manual memory management, I would.

Well, except that of course. I mean, we all draw the line somewhere.

Unless we've had too much to drink or smoked too much weed, in which case boundaries seem less important at the time.

One time in college, my friend....

but no, that's another story for another thread.

[–] programmer_belch@lemmy.dbzer0.com 3 points 6 months ago (1 children)

ASMR: talking about pros and cons of c++ with your college friend

[–] davidagain@lemmy.world 3 points 6 months ago

Now my spine is all tingly and I don't know what it means. I'm having some really weird feelings right now.

[–] cralder@lemmy.world 53 points 6 months ago (1 children)

Bad naming practice. CheckSuck implies it only checks and returns the result. Everything the function does should be included in the name to avoid confusion. Call it SuckIfUnsucked or something

[–] needanke@feddit.org 8 points 6 months ago

That was my first reaction as well. Even if you say you can see that it doesn't return a bool it's still ambiguus as to what (if anything) happens when the state is sucked/unsucked. I would also prefer a name like GuranteeSucked or EnsureIsSucked.

[–] bi_tux@lemmy.world 14 points 6 months ago* (last edited 6 months ago) (3 children)

RWIIR!!!

edit: here, I did it for you:

use std::*;

static mut sucked: bool = false;

fn main() {
        unsafe {
                check_sucked();
        }
        println!("Kris has been sucked is {}", sucked)
}

unsafe fn check_sucked() {
        if !sucked {
                suck();
        }
}

fn suck() {
        sucked = true;
}

edit 2: fixed it

[–] RacoonVegetable@reddthat.com 19 points 6 months ago

use std

Oh no….

[–] zea_64@lemmy.blahaj.zone 12 points 6 months ago (1 children)
[–] bi_tux@lemmy.world 4 points 6 months ago (1 children)
[–] zea_64@lemmy.blahaj.zone 6 points 6 months ago (1 children)

If you made it static, sure, but right now you're living compiler error

[–] bi_tux@lemmy.world 3 points 6 months ago* (last edited 6 months ago) (1 children)

oh well, I'm just starting to learn the language and come from java, so I thought: wait, it can't be static

[–] zea_64@lemmy.blahaj.zone 3 points 6 months ago

const is more like C++ constexpr, but static is similar to static from C: it's a variable that lives outside any scope. Of course, that means the same static can be accessed by multiple threads, so writing to a static is unsafe (except for types like Mutex, you can safely use those to write, but your static won't be declared mut)

[–] Smorty@lemmy.blahaj.zone 3 points 6 months ago

I personally would have matched the sucked... Maybe printed some lovely message about being content or somezhin

[–] AsudoxDev@programming.dev 14 points 6 months ago (1 children)

Who uses PascalCase for function names

[–] Kolanaki@yiffit.net 7 points 6 months ago (1 children)

Why would you want to make things that are good suck? 🤨

[–] frezik@midwest.social 5 points 6 months ago

I tried to make blowjob videos that don't suck, but nobody wanted to watch them.

[–] OneCardboardBox 7 points 6 months ago

How to make a suckless.org contributor cry

[–] RickRussell_CA@lemmy.world 6 points 6 months ago

"OK class, tonight read the chapter on enshittification."

[–] germanatlas@lemmy.blahaj.zone 6 points 6 months ago

Jojo fan program

[–] dastechniker@lemmy.world 5 points 6 months ago

hakita my beloved

[–] synae 2 points 6 months ago

Kirby, is that you?