Цитата(Sprite @ May 25 2018, 19:41)

Ниче он не несчастный! Счетчик как счетчик - все по фэншую. Или проблема в том, что он находится в одном файле с автоматом? Так это просто пример, код еще будет причесываться и дорабатываться.
Смысл в том, что зачем описывать ещё раз то, что уже было когда то описано ? Это опять тратить время надо. Опять проверять счетчик надо. Да и схема выглядит в итоге некрасивой, и запутанной.
Вот представьте: у вас есть некий блок, где применяется несколько счетчиков, несколько регистров сдвига и автомат.
В случае если Вы пишете "все в одном" то при тестировании Вам приходится проверять автомат. А ещё придется проверять правильность работы счетчиков и регистров сдвига.
Безусловно, счетчик штука простая, и шансов допустить ошибку мало. Тем не менее ошибку допустить можно и она скорее всего будет

. И Вам придется тратить время на проверку, выискивание этой ошибки.
А если бы счетчик был отдельным файлом, который уже протестирован и гарантированно работает, то нет необходимости тратить время на его проверку. Поскольку неправильная работа счетчика говорит лишь о том, что им неправильно управляют.
А ещё счетчик можно сделать универсальным и параметрами настраивать:
1. Направление счета: вверх или вниз.
2. Максимальное значение счета.
3. Будет ли счетчик обновляться при переполнении, или останется в максимальном значении.
4. Можно добавить режим Debug и выводить состояния счетчика на консоль.
Я от такого подхода вижу только преимущества - ускорение разработки, упрощение тестирования, уменьшение риска совершить ошибку.
Да и код становится более понятным. Проще поддерживать его.
Но как поступать - решать Вам. Я все карты раскрыл