• kane@programming.dev
    link
    fedilink
    arrow-up
    9
    ·
    1 year ago

    I always figured this was a nice joke but obviously not code that would ever actually be written by someone… Then I ran into this millimeter to inch conversion code in production this past month:

    if (isNaN(mm)) return 0;
    if (mm == 6) {
        inch = 0.125;
    }
    else if (mm == 8) inch = 0.25;
    else if (mm == 10) inch = 0.375;
    else if (mm == 15) inch = 0.5;
    else if (mm == 20) inch = 0.75;
    else if (mm == 25) inch = 1;
    else if (mm == 30) inch = 1.25;
    else if (mm == 40) inch = 1.5;
    else if (mm == 50) inch = 2;
    else if (mm == 60) inch = 2.5;
    else if (mm == 80) inch = 3;
    else if (mm == 90) inch = 3.5;
    else if (mm == 100) inch = 4;
    ...
    
  • Buttons@programming.dev
    link
    fedilink
    arrow-up
    7
    ·
    1 year ago

    I’ve actually seen this type of code produced by a human-being who was trying to write good code. It was one of the students in my introduction to programming class in university, we had to write a function that squared a number or something, and he had written hundreds of lines of if-statements. Sometimes you just use what you know to complete an assignment I guess 🤷

    • msage@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      1 year ago

      Though I want to add this case for interview questions: “Write code that outputs every prime number smaller than 10.”

      And if the candidate doesn’t do ‘print “2,3,5,7”;’, I will deduct points.

      • Buttons@programming.dev
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        1 year ago

        Apparently not. It was very strange. Although it was the first few days of class and he might not have realized * is multiplication, because when does a non-programmer ever use * for multiplication?

    • bufordt@sh.itjust.works
      link
      fedilink
      arrow-up
      1
      ·
      1 year ago

      I did something similar for a programming competition once because I couldn’t remember the c64 basic function to return string length.

      Once I got home I rewrote it properly because it bugged me so badly. LEN(string variable) was the command. Stupid!

  • lowleveldata@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    edit-2
    1 year ago

    Good solution! I think you should show the last 3 lines that makes it work tho. FIFY:

    private bool IsEven(int number){
        if (number == 1) return false;
        else if (number == 2) return true;
        else if (number == 0) return true;
        else if (number == -1) return false;
        else return !IsEven(abs(number) - 1);
    }
    
  • beaker@programming.dev
    link
    fedilink
    arrow-up
    5
    ·
    1 year ago

    That’s terrible! Didn’t we all learn that each method must have exactly one return statement? Please refactor to use a return variable and a single return. And get off my lawn!

  • mamarguerat@discuss.tchncs.de
    link
    fedilink
    arrow-up
    1
    ·
    1 year ago
    private void GenerateCode(){
      println("private bool IsEven(int number){");
      println("if (number == 1) return false");
      for(int i == 2; true; i += 2){
        println("if (number == " + i.tostring() + " return true";
        println("if (number == " + (i + 1).tostring() + " return false";
      }
    }