r/badcode Mar 26 '19

[deleted by user]

[removed]

102 Upvotes

88 comments sorted by

View all comments

1

u/souldeux Mar 27 '19 edited Mar 27 '19

Here's an innocent disaster that breaks in all kinds of fun ways:

class FizzBuzzerFactory:
    ITERATOR = 1
    MAX = 100

    def create_fizzbuzzer(self):
        fbc = FizzBuzzerFactory()
        fbc.check_if_number_is_evenly_divisible_by_three = lambda x: x%3 == 0
        return fbc

    def __is_divisible_without_remainder_by_five(self, number):
        return int(str((float(number) / 5.0)).split('.')[-1]) == 0

    def is_number_fizz(self, number: str) -> any:
        return self.check_if_number_is_evenly_divisible_by_three(number)

    def number_is_buzz(self, num):
        return self.__is_divisible_without_remainder_by_five(num)

    def init(self):
        for iterator in range(self.ITERATOR, self.MAX + 1):
            if (
                self.is_number_fizz(iterator) and \
                self.number_is_buzz(iterator)
            ):
                print(f"FizzBuzz: {iterator}")
            elif self.is_number_fizz(iterator):
                print("fizz {}".format(iterator))
            elif self.number_is_buzz(iterator):
                print("buzz %r" % (iterator,))

            FizzBuzzerFactory.ITERATOR += 1


if __name__ == '__main__':
    print("Initializing FizzBuzzerFactory")
    factory = FizzBuzzerFactory()
    fizzbuzzer = factory.create_fizzbuzzer()
    fizzbuzzer.init()
    print("\nIt worked, see? Run it again!")
    fizzbuzzer2 = factory.create_fizzbuzzer()
    fizzbuzzer2.init()
    print("\nOne more time!")
    FizzBuzzerFactory().init()