Это не ответ на вопрос, но я очень сильно вам советую отложить диалоговые окна. Это тема довольно не однозначная. На западных сайтах есть много разных решений (и они часто весьма замысловаты и сложны для начинающего), какого-то одного правильного подхода нет.
Что вы к этим автоматам привязались? Может это вы их очень хотите, а не я. Я рад услышать другие варианты, просто я их не знаю. А автоматы упомянул лишь потому, что слышал о них. Разве это так трудно понять? Если использовали автоматы ок, расскажите о опыте и инструментах. Если использовали что-то трудно, то еще лучше, так же расскажите, а не перечислите списком уходящим в троеточие
Виктор Ablebeam: вы вроде адекватный человек, постараюсь пояснить в чем вопрос. Если прочитать вопрос внимательно, то можно заменить, что изменение кода происходит не из-за изменении ТЗ или чего-то еще, а именно из-за того, что я не подумал за ранее и сел писать код. Если я бы пытался продумать за ранее что может случить с тем же селектом, то такой проблемы бы не было. Т.е. проблемы не в меняющих требованиях, не в заказчиках или фазах луны, а в том что я не думал (проектировал) за ранее. Конечные автоматы это просто то, что мне кажется могло бы решить проблему, но я не уверен. А вопрос в том как правильно проектировать за ранее и какими инструментами пользоваться. Ибо даже если я бы хорошо подумал о селекте, то все в голове было бы сложно удержать и я все равно бы ошибки.
И что, что нельзя. Значит не стоит этого делать? Т.е. вы отрицаете проектирование как таковое. Отлично. Можете не отвечать, мне вам доказывать ничего не хочется, а ответа вы все равно не дадите. Зачем разжигать тут?
Да, сказочное русское комьюнити - не помогут, но советов не по теме надают. Если вы уж кастомный селект заранее спроектировать не можете, то о чем с вами говорить. А Agile/SCRUM это из другой оперы.
Я и не жду чего-то идеального, но это не означает что нет решения, может просто вы его не знаете или для вас нормально переделывать. И по-моему спроектировать компонент реально сразу, если есть опыт