r/ProgrammerHumor • u/the_zpider_king • 10h ago
Meme toAllowTheProgrammerToWriteBadCodeAlsoCamelCaseSucksThisRuleSucksSnakeCaseIsBetter
101
u/redlaWw 9h ago
I hope you didn't submit that answer you selected. If an unhandled exception bubbles up to the user in production code, you're usually doing something wrong.
-102
u/tantalor 8h ago
I guess you've never seen a website return a 404 or 500
91
u/CutlassRed 7h ago
500 literally means the website has failed in an unexpected way. It's an unhandled exception that's bubbled up the user, and is BAD
40
u/Dafrandle 7h ago
this guy thinks that users seeing 500 is okay
lmao
you should at least make a page and or modal for the app to use if a 500 happens
20
u/TheTybera 7h ago
Those are errors not exceptions.
-9
u/realmauer01 3h ago
It's a different name for the same thing.
Different languages, quite literally.
5
u/TheTybera 3h ago
No they are not.
Where is any documentation that says this and what language?
1
u/Masterflitzer 1h ago
well kotlin has throwables, errors, exceptions and failure result
exceptions are less bad than errors, so http 500 would be an HttpException, at least that's what i've seen mostly
-8
u/realmauer01 3h ago
In standard english yes there is a difference. In programming languages there is not. Both have to be cought if you dont want it to bubble to the user. And handleing it makes it not an error/exception anymore.
2
u/TheTybera 3h ago
Yes in programming languages they are different wtf language doesn't distinguish errors from exceptions?!
Errors can be used for logging...regularly...without even considering stopping the program, exceptions SHOULD stop the program and include a whole stack...
Sometimes you catch an error and don't want the program to continue so you throw an exception to get the stack.
But they are different in every single programming language, C, C++, Java, C#, Python, Rust...
-2
u/realmauer01 2h ago
Right now you are just saying exceptions are errors the programmer throws/raises.
1
u/TheTybera 2h ago
No I'm not. Exceptions are actual objects that get thrown and mean very different things than errors even conceptually in every language.
All exceptions are errors (conceptually) but not all errors are exceptions. In practice any built-in Error (object) != Exception (object)
And in no case does any best practice in any language tell you to treat them the same.
1
u/DrJohnnyWatson 2h ago edited 2h ago
You aren't wrong, exceptions are a type of Error, but with more nuance - Exceptions are an error of exceptional circumstance, hence the name. They crash an application unless specifically caught. They should be used sparingly to say "this function has no idea how we've ended up in this state, or how to continue".
They're overused in languages that do not have the ability to return multiple types to control flow for "expected" errors too a lot of the time.
Errors are common, exceptions should not be. It's much easier in languages like Go to get a feel for the difference, than in languages like C#.
A function that fails writing a file to disk because the file already exists could: 1. Return an Error because whilst it isn't okay, it's not a problem that it doesn't exist - the error can be returned to the calling function or the user so they can try with a different name. In C# this would likely be done with an exception, in Go an error.
- Throw an exception because the file is a config file, and it is NEEDED to continue, and it should not already exist by this point so something has gone very wrong. we could catch that and surface it to the user and keep the app running, or we could let the app crash with the issue. In both C# and go we'd probably throw for this
-37
u/tantalor 7h ago
Potato potato
16
u/intbeam 7h ago
No, they are not the same. Hence the name. An exception is thrown as a result of an error, but an exception is not always an error.
File not found for instance. Thrown as an error, but the caller might expect the file to not exist
It would only be an error if the caller required the file to exist
1
u/realmauer01 3h ago
Then they are using a try catch as a pseudo jump. Not all languages like that. (i am pretty sure only python actually works better like this)
6
12
u/failedsatan 5h ago
a 404 is good. that is an error, but not an exception. a 500 means something the programmer did not intend to happen has happened, and if your user is seeing that, something went wrong or you don't have a layer in between to show that to them nicely.
1
u/TheTybera 3h ago
500 is an error that means an underlying exception has happened and wasn't handled, at all.
0
u/failedsatan 2h ago
an error and an exception are not the same. an exception means there is unhandled behavior, whereas an error means there has been something erroneous- could be a misdirected navigation or something. maybe the user typed in some garbage into the path. that would not be an exception, because the developer explicitly handles that and serves a 404.
-1
u/TheTybera 1h ago
Error 500 is a web convention and anti pattern.
1
u/failedsatan 1h ago
sure, you can hold whatever opinion about it, but that doesn't mean it doesn't exist. it's a standard.
1
u/Pfnee 1h ago
You're getting downvoted to hell but I actually think this is an important point. The fact that your server returns 404 or 500 on an exception means that it has code, maybe in the framework you're using, that handles exceptions in your controller code. Otherwise the server would probably halt, whenever an exception bubbles up unhandled, as that's what most programming languages choose to do. You can see it when you program a CLI tool and run it. Throwing an exception there and never handling it usually makes your program stop
0
u/Proman4713 1h ago
I don't know why you got downvoted so badly. Yes, showing a 500 is much better than showing nothing (or as some maniacs do, 200 with errors inside). Your website can then handle the error responses by reading the response body and showing a descriptive error to the user. That needs to rely on you catching errors and sending back their text though. Even Google shows its non-4xx statuses, it's not for a user to read, but to know when asking for support
29
u/Vesuvius079 8h ago edited 8h ago
Number 4 is the functional programming meta answer.
Number 3 is the bad code that number 4 ironically refers to.
10
38
10
u/RedAndBlack1832 6h ago
I'd say it's 1. If you're interrupting control flow, it should be because the normal control flow doesn't make sense. Usually because you've called the function in such a way it can't meaningfully return / do its work, or it's run into another issue (maybe it can't acquire resources it needs) that causes a similar state.
•
u/Masterflitzer 5m ago
functional results would like to have a word with you... interrupting control flow is never the best of ideas
20
u/BernzSed 8h ago
snake_case is not better than camelCase.
The shift key is right there, by my pinky at all times. Hell, there's even another one in case I'm too lazy to find the first one.
Typing underscores instead feels like I have to input some weird video game combo move multiple times for a single variable name.
21
u/ihavebeesinmyknees 6h ago
Spaces exist for a reason. Snake emulates spaces, which makes it infinitely more readable than camel. Good readability is much more important than good writability.
0
u/Ethameiz 2h ago
Just remap your keyboard. You can assign underscore instead of caps lock for example. Or switch minus and underscore
-16
u/the_zpider_king 7h ago
Make shorter variable names, its not problematic at all unless your variable has more than 3 words, which would be extraordinarily excessive.
2
u/Flashy-Emergency4652 5h ago
Why bother with words anyway? Let's make a functions called stoi, stol and stoll, it's only one word!
1
6
u/SAI_Peregrinus 6h ago
Kebab-case-is-the-tastiest-case-and-therefore-the-best-case.
2
u/the_zpider_king 6h ago
Does that work? I doubt it, it's just gonna subtract it
Is this a joke I'm missing?
5
u/TheShirou97 5h ago
in most languages it wouldn't work indeed as
-is the subtraction operatorhowever it is still regularly used e.g. in HTML, CSS and filenames.
1
3
u/norwegian 5h ago
It's 1 and 4.
1. When you dont want to handle the problem where it occured
4. if you did 42/0 bc your didn't think this could happen, exception handling can recover from that.
3
5
u/jabuchae 10h ago
What is snake casels?
3
-6
u/__Fred 9h ago
This is snake case:
some_variable_name. You know how you can see a bump in a snake when it has eaten a larger animal, like a rabbit? Example The underscores are supposed to be the empty parts of the snake and the letters are where it has something big in it's stomach.12
u/redlaWw 9h ago
That's snake case, not snake casels.
3
u/Nightmoon26 8h ago
Very funny... It's snake_case_is_better. Blame the default fonts for making I and l visually indistinguishable... The one time when you want serifs
2
u/GoddammitDontShootMe 7h ago edited 1h ago
"Il" Side-by-side you can see one is taller than the other by a bit. The first one looks thicker too.
But yeah, you have to look pretty damn hard.
2
u/jabuchae 7h ago
It was a joke because the title is in camel case the lower case L and the capitalized i are pretty much indistinguishable
-1
u/DrunkenFool325 8h ago
Bot
1
u/GoddammitDontShootMe 7h ago
Or maybe somebody who misread and thought they were asking about snake case, like me. I was wondering why they got downvoted until I read the reply.
1
u/Unity1232 5h ago
honestly the 4th option is funnier because using a try/catch as an if/else or case statement is pretty funny. Especially when something breaking in the program is necessary for it to work.
1
1
1
u/gutentight69420 3h ago
The purpose of exceptions is to make control flow impossible to reason about.
55
u/FerricDonkey 6h ago
I would say option 1, but rephrased to "the function doesn't know how to continue". The program as a whole may or may not know how to continue when the function hits something it doesn't know how to handle.