Real quick question about the "break"

UnRelatedBurner@sh.itjust.works to Programming@programming.dev – -6 points –

I'm studying programming, and I don't agree woth my teacher. She basically said that if we use break (and continue too maybe) our test is an instant fail. She's reasoning is that it makes the code harder to read, and breaks the flow of it or something. (I didn't get her yapping tbh)

I can't understand why break would do anything of the sorts. I asked around and noone agreed with the teacher. So I came here. Is there a benefit to not using breaks or continues? And if you think she's wrong, please explain why, briefly even. We do enough down talking on almost all teachers she doesn't need more online.

64

You are viewing a single comment

I can understand telling you not to use break and continue if the point is to teach you to think about different ways to solve problems, but saying it's because "it makes the code harder to read" is bullshit. Readable code flow is important, but if using those makes your code too hard to read, your problem is most likely that you've just written shitty code.

To get really into the technical weeds, what break and continue boil down to in the compiled machine code is a non-conditional branch instruction. This is just going to move the execution pointer to a different location in memory. Other keywords, such as if, elif, and else, will compile down to conditional branch instructions. Basically the same thing, but they have the added cost of having to evaluate some data to see if the branch should happen at all. You can achieve the same things with both, but the high level code might need to look different.

For instance, if you're in a loop, continue will let you skip the rest of the code in the loop to get to the next iteration. Not a huge deal to instead make the entire code block conditional to skip it. However, the break keyword will let you exit the loop at any point, which is more complicated to deal with. You would have to conditionalize your code block and force the looping condition to something that would stop it on the next iteration. If you ask me, that has the potential to be much more complicated than necessary.

Also, good luck using switch without any breaks, but I'm guessing that's not quite what your teacher had in mind.

In short, just go with it for now. Be creative and find a way to make it work to your teacher's liking, but always try to be aware of different ways you can accomplish a task. Also, I don't know what language you're using, but if you're in C/C++ or C# and you feel like getting really cheeky, it doesn't sound like she disallowed the use of goto. It's kinda like break with fewer safeguards, so it's super easy to write broken code with it.

Also, good luck using switch without any breaks, but I'm guessing that's not quite what your teacher had in mind.

The teacher, probably: “You must always put a switch in its own function! Then use return at the end of each case.”

@zib @UnRelatedBurner @programming

Good point, that is a valid way to do it sometimes, but it's extremely situational and trying to do that for everything would be absolute nonsense.

thanks for the breakdown, I don't know if my grade would be too high of a sacrifice to try goto, but I'll have it in mind. thanks.