не совсем понятно зачем Вы использовали именованый шаблон и for-each, при Вашей структуре данных более красивое решение будет приблизительно такое:
<xsl:template match="/">
<select>
Корневая категория
<xsl:apply-templates select=«categories/category»>
<xsl:with-param name=«space» select="'--'" />
</xsl:apply-templates>
</select>
</xsl:template>
я не спорю с Вами о возможности откатится, просто система контроля версий не совсем предназначена для этого,
конечно и у предложенного мной подхода, есть недостатки, есть необходимость писать правила для сборки, конфиги для continuous integration сервера — не очень интересная задача, но последующее использование вносит больше порядка, чем просто уповать на svn,
еще, например, при сборке у меня проходят тесты, и если тесты не прошли, пакет не создается, периодически генерируется документация, в Вашем случае это рутина, которую нужно делать руками
а почему бы не делать сборки при помощи ant, make, rake, phing, etc. Установить continuous integration server (например xinc) и отслеживать все ваши сборки во времени, тогда будет точно известно, сборка №ххх — тестируется, сборка №ууу — продашн. Тогда в svn хоть все в одной ветке держите, задача выкладывания на сервер будет решаться более не система контроля версий
Уже вижу как во время тренировки, собак присаживают на пиратский софт и фильмы, что-бы они их лучше искали, а перед важной операцией ограничивают доступ к пираткам, и собака с неистовым рвением ищет, ищет, ищет…
Нет, мне понравилась Ваша реализация работы со строками, но я указал на недостатки в Вашем классе, и это ложка дегтя в бочке меда.
Я не знал, что Вы писали эти обертки не для использования, а только ради ООП.
Спасибо, интересная статья.
Хотелось бы самому попробовать, но есть вопрос: скажите а где грань между кладоискателем и черным копателем? Что и где копать не законно?
<xsl:template match="/">
<select>
Корневая категория
<xsl:apply-templates select=«categories/category»>
<xsl:with-param name=«space» select="'--'" />
</xsl:apply-templates>
</select>
</xsl:template>
<xsl:template match=«categories/category»>
<xsl:param name=«space»/>
<xsl:value-of select=«concat($space, @title)»/>
<xsl:apply-templates select=«categories/category»>
<xsl:with-param name=«space» select=«concat($space, '--')» />
</xsl:apply-templates>
</xsl:template>
Что касается, TDD — когда-то не писал тесты, поэтому старые проекты мало покрыты тестами, а в новых стараюсь использовать TDD, чего и Вам советую.
конечно и у предложенного мной подхода, есть недостатки, есть необходимость писать правила для сборки, конфиги для continuous integration сервера — не очень интересная задача, но последующее использование вносит больше порядка, чем просто уповать на svn,
еще, например, при сборке у меня проходят тесты, и если тесты не прошли, пакет не создается, периодически генерируется документация, в Вашем случае это рутина, которую нужно делать руками
В одном проекте использую rake как систему сборки.
Еще вопрос — а почему не менее 3-х месяцев, если есть желание побыть месяц — протестировать?
я бы еще тег «мечта» добавил :)
Я не знал, что Вы писали эти обертки не для использования, а только ради ООП.
Удачи вам ребята, Смела с вами
Хотелось бы самому попробовать, но есть вопрос: скажите а где грань между кладоискателем и черным копателем? Что и где копать не законно?