Это первая проблема алгоритма, которую мне представили сразу после окончания учебного лагеря по программированию. Задача «FizzBuzz» довольно проста. Давайте посмотрим на проблему.

Проблема

Напишите короткую программу, которая печатает каждое число от 1 до 100. Для каждого числа, кратного 3, выведите «Fizz» вместо числа, а для каждого числа, кратного 5, выведите «Buzz». Для чисел, кратных 3 и 5, выведите «FizzBuzz».

То, как кто-то решает эту проблему, зависит от его характера как программиста. Некоторые программисты создают код, исправляющий одну конкретную проблему, как и я, но другие программисты создают код, который работает для любых будущих изменений.

Решение 1. Быстрое решение

Интуитивно понятно, что если вы даже новичок в программировании, вы знаете, что можете использовать цикл for, чтобы выполнить процесс n раз. Я напечатаю способ, которым большинство людей, включая меня, решило бы эту проблему.

Это для программистов, которые кодируют только одну конкретную проблему, и в этом нет ничего плохого, особенно если вы с кем-то собеседуете. Было бы лучше создать код, предлагающий решение.

Минусы

Теперь, что происходит, когда ваш работодатель хотел бы добавить условные обозначения, такие, что для чисел, кратных 7, выведите «Dizz», а для чисел, делимых на 9, выведите «Wuzz». Или, может быть, давайте напечатаем «Buzz» кратно 8 вместо 5. С таким маленьким кодом любая задача не кажется такой сложной, но когда вы работаете над более крупными программами, было бы БОЛЬШОЙ болью добавить к ней новые условные выражения.

Решение 2: исправление большого мозга

Давайте рассмотрим решение, которое, по сути, делает то же самое, но не такое статичное, как приведенный выше код.

Это намного лучше. В случае, если мы хотели бы вместо 7 вывести «Buzz» вместо 5, нам нужно изменить его только в одной строке. В случае, если нам нужно больше условных выражений, мы просто будем повторять строки кода, и таким образом результат будет меняться гораздо более динамично. Посмотрите, насколько лучше это выглядит при добавлении дополнительных условных обозначений ниже.

Таким образом, вам не нужно писать конкретные операторы if для определения того, кратно ли число только 3, 3 и 5 или 3, 5 и 7. Если вы сделали это таким образом, вам пришлось бы создать несколько условных выражений для каждая возможная комбинация делителей, и ни у кого нет на это времени!

Одна вещь, которую я заметил, что мне нужно попрактиковаться, - это кодирование для будущих изменений. Первый шаг - заставить код работать. Во-вторых, начните думать о том, как заставить это работать для нескольких условий или изменений переменных. Как всегда, удачного кодирования!