ты сам всё и описал: отличный пример костыляния. с ходу, не думая: я делаю функцию «обработать-покупки», которая где-то там у себя вызывает функцию «дать-список-покупок». откуда этот список берётся — функции пофигу совершенно. хоть из файла, хоть из веб-сессии, хоть вообще из астрала. всё, что ей надо уметь — это обработать ситуацию «список ниасилили», что прекрасно укладывается хоть в проверку результата вызова, хоть в исключение.в свою очередь, «дать-список-покупок» тупо печатает какую-нибудь табличку и вызывает «ожидать-списка-от-юзера» или что-то типа того. и так далее. видишь ли, в итоге программа получается обычной линейной, про логику «сессий» и прочую ерунду я вообще не думаю. я пишу «обычный код», так, как будто юзер сидит за терминалом и честно отвечает на заданые вопросы. вся хитрая вебовая механика меня вообще не волнует. если мне захочется — я вообще вебовую механику выкину и привинчу чтение из файла или гуй на каком-нибудь тулките: программа от этого никак не поменяется. то есть, *вообще* не поменяется. лично я считаю, что это удобно. например, для автотестов и fuzz-тестирования. никаких «отладочных заглушек», никакого спецкода для тестов *внутри программы*. лепота, красота, малиновый звон.
|