• JackbyDev@programming.dev
    link
    fedilink
    English
    arrow-up
    12
    ·
    3 months ago

    Which of these do you prefer?

    A?

    @Test
      public void turnOnLoTempAlarmAtThreshold() throws Exception {
        wayTooCold();
        assertEquals(“HBchL”, hw.getState());
      }
    

    Or B?

    @Test
      public void turnOnLoTempAlarmAtThreashold() throws Exception {
        hw.setTemp(WAY_TOO_COLD);
        controller.tic();
        assertTrue(hw.heaterState());
        assertTrue(hw.blowerState());
        assertFalse(hw.coolerState());
        assertFalse(hw.hiTempAlarm());
        assertTrue(hw.loTempAlarm());
      }
    
    Uncle Bob's Clean Code suggests

    Option A

    • magic_lobster_party@kbin.run
      link
      fedilink
      arrow-up
      11
      ·
      3 months ago

      I almost pulled my hair out when I read that section. One is super obvious without any prior experience with the code. The other is an obscure abomination only he can understand. He’s obviously super proud of his abomination and thinks it’s a prime example of “clean code”.

    • RonSijm@programming.devOP
      link
      fedilink
      arrow-up
      3
      arrow-down
      4
      ·
      3 months ago

      I’ve started to prefer option A to be honest.

      In C# I’m using Verify - So I prefer to just use Verify(state); and compare the entire state against a json saved state, instead of manually verifying every individual property