vdemidov писал(а):Он уже давно вызывает отдельную функцию.
А это не важно. Неужели тебе не понятно, что в этом месте, архитектурно, явно плохой код? И ты будешь спорить, что вынос считалки количества тайлов в отдельную сущность, ввиду высокой сложности задачи, является плохим решением? Особенно, в свете того, что есть/может быть несколько алгоритмов реализации подсчёта тайлов?
vdemidov писал(а):Откуда этот RegionSplitter узнает порядок обхода? Это знает только конкретный итератор.
А ему и не надо знать порядок. Ему надо разбить область так (на столько частей), чтобы любой итератор мог по ней пройтись. Т.е. если его попросить разбить область на 3 части, это не значит что он обязан вернуть 3 полигона. Он может вернуть 3
набора полигонов, по которым можно построить 3 итератора (если каждый набор полигонов представлен мультиполигоном) или 3 набора итераторов, если набор это одиночные полигоны/прямоугольники.
Потом, могут быть разные алгоритмы разбиения области. Вот тут заказчик просит разбить её по числу тайлов, а кому-то может захочется разбить на прямоугольники (как в примере в wiki) или ещё каким хитрым образом. А ты гвоздями прибиваешь это к итератору.
vdemidov писал(а):Вот именно поэтому и нужно это делать только в конкретно одном итераторе по полигону.
Неправильный вывод. Именно поэтому и не нужно связывать логику разбиения, с порядком обхода отдельных видов итераторов. Иначе, у тебя опять пострадает архитектура.