Jake works in Python. Python is a very flexible language, and Jake has some co-workers who like to exploit it as much as possible.

Specifically, they’re notorious for taking advantage of how any symbol can be redefined, as needed. Is int a built-in function? Yes. But what if you want to have a variable called int? No problem! Just go ahead and do it. Python won’t mind if you do int = int(5).

Sure, any linter will complain about the possible confusion, but do you really think this developer checks the linter output?

Now, this particular block of code happens to be a test, which Jake provided because it’s one of the more head-scratching versions of this pattern, but it’s representative of this approach.

def test_parameters(self, name, value, float = True):
    fcb = read_parameters(SERVER_ADDRESS)
    type = ''
    if valid_key():
        type = 'float'
        if type == 'float':
            self.assertTrue(float)
        else:
            self.assertFalse(float)
    if float:
        self.assertEqual(global_name, name)

    default = fcb.get_default(name)
    self.assertEqual(default, value)
    range = fcb.get_range(name)
    ...

type, float and range are all built-in types in Python. Using variables with that name are not a great choice, but honestly, that’s little stuff compared to the general weirdness of this test.

First, we have the pattern where we set a variable and then immediately check its value. It’s probably a case where they indented incorrectly, but honestly, it’s a little hard to be sure.

global_name is one of the rare things that has a vaguely accurate name, as it’s actually a global variable. In a test. That’s definitely a bad idea.

But the real problem, and the real WTF here, is: what is this test about? Are we checking whether or not parameters are properly assigned their type? Are we checking that the name matches up with a global variable? How is that global variable getting set? Does it tie into the mysterious no-parameter valid_key method? If this is what one test looks like, what does the rest of the code look like?

There are a lot of questions that this block opens up, but the real question is: do I want the answer to any of those questions?

Probably not.

[Advertisement] Utilize BuildMaster to release your software with confidence, at the pace your business demands. Download today!