Ну так конечно, я же почему сначала оговорился о энтерпрайз

Такой подход имеет смысл если от количества игроков / посадочных мест зависит больше функций. С другой стороны - в моем коде нет повторений, а это значит, что если завтра входные условия поменяются, то у меня шанс ошибиться меньше, чем у тебя, потому что функционал продублирован, и ты можешь забыть поменять его в другом месте. Вообще, с точки зрения энтерпрайз простительно писать больше кода, если это снизит риск / предотвратит повторение, т.как основная задача - надежность а не скорость или объем.
expl:
Фишка в том, что входящие данные тоже надо подготавливать... для этого и существуют инженеры, которые проектируют, как кому и чего передать. Я просто не знаю чем обусловлен такой расклад, вполне возможно, что эти данные можно было передать / подготовить по-другому. Нестыковка происходит потому, что числовое значение maxPlayers никогда не используется, и если это правда, что оно не используется, то было бы умесно передать Boolean (т.как нам больше-то и не нужно). Опять же, вполне возможно, что setTailPosition() - единственная функция которая зависит от того сколько посадочных мест имеется в наличии, тогда мое деление на стейты - плохое. Но, это опять же потому что я не знаю, на сколько важны данные полученные на входе.