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.
I suspect/hope she’s not “against” using break and continue as much as trying to teach your brain to solve the type of problem at hand without relying on breaks.
Like this
const int JUST_THE_WORST_NUMBER = 13; for (int i = 0; i < 100; i++) { if (i % 2 == 0) continue; if (i >= JUST_THE_WORST_NUMBER) break; Console.WriteLine(i); }
could effectively be rewritten like this, which I think actually is clearer in a way:
const int JUST_THE_WORST_NUMBER = 13; foreach (int i in Enumerable.Range(0, 100).Where(i => i % 2 != 0).TakeWhile(i => i < JUST_THE_WORST_NUMBER)) { Console.WriteLine(i); }
Treat it as a thought exercise and just do it her way. Like someone else said, it’s also good practice at unhappily conforming to your organization’s standards and practices.
It might just be an insufficient amount of whitespace, but your second example seems much harder to parse. As someone who regularly writes extremely dense functional paradigm code - you can always use more newlines.
Fine:
var enumerable = Enumerable.Range(0, 100) .Where(i => i % 2 != 0) .TakeWhile(i => i < JUST_THE_WORST_NUMBER); foreach (int i in enumerable) { Console.WriteLine(i); }
idk, maybe C# just doesn’t have great syntax for the way you’re doing it or something, but I think the simplest solution is the most readable in this case:
for (int i = 1; i < JUST_THE_WORST_NUMBER; i += 2) { Console.WriteLine(i); }
I came up with a contrived example for the sake of illustration, and deliberately chose to use LINQ to build the enumerable because of how valuable it can be in filtering and ordering data. Where and TakeWhile alone can replace a whole lot of continues and breaks.
Your code does the same job as my first example, and it’s simpler, and maybe that’s more appropriate for the class.
Yeah, thanks. I think I will do that. Thanks for the example.