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.

  • m_r_butts@kbin.social
    link
    fedilink
    arrow-up
    8
    arrow-down
    1
    ·
    10 months ago

    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.

    • xmunk@sh.itjust.works
      link
      fedilink
      arrow-up
      4
      ·
      10 months ago

      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.

      • m_r_butts@kbin.social
        link
        fedilink
        arrow-up
        6
        arrow-down
        1
        ·
        10 months ago

        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);
        }
        
        
        • olsonexi@lemmy.wtf
          link
          fedilink
          arrow-up
          2
          ·
          10 months ago

          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);
          }
          
          • m_r_butts@kbin.social
            link
            fedilink
            arrow-up
            2
            arrow-down
            1
            ·
            10 months ago

            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.