В свое время Фредерик Брукс писал об эффекте второй системы. Суть эффекта в том, что проектировщик в силу отсутствия опыта или времени накапливает идеи и решения в одном проекте, а потом выплескивает все это безобразие в другом/новом проекте.
Подобную тенденцию можно наблюдать не только у архитекторов, но и у рядовых разработчиков, который бросаются на проект с мыслью «В прошлый раз у меня не было такой свободы. А вот сейчас я все сделаю правильно!».
Лечить эту болезнь можно мягко, в бесконечных дискуссиях воспитывая в человеке внутреннюю дисциплину, или жестко, продавливая стратегические решения.
От требования неинвазивности избавиться нельзя в принципе. Если модульный тест не способен обеспечить неизменяемые условия проверки, то зачем он нужен?
Что касается mock'ов, то я вовсе не призываю использовать их везде и повсюду. Можно конечно и без них, если требуется покрыть тестами только успешные сценарии.
Если требуется достичь максимального покрытия и моделировать стрессовые ситуации для различных участков кода, то здесь без mock'ов не обойтись.
Сам я уже не помню, когда использовал googletest отдельно от googlemock.
Сам по себе Google C++ Testing Framework мало полезен. Если принять во внимание тот факт, что модульные тесты должны быть неинвазивными (т.е. никаких необратимых изменений среды); то его сфера применения окажется очень узкой.
Прежде чем рассматривать аналоги, нужно определиться с требованиями к библиотекам логирования. Для одного из своих высоконагруженных проектов я выбирал между:
Вдаваться в специфику проекта не буду. Скажу лишь, что выбор пал на lo4cplus в силу его размеров, отсутствия внешних зависимостей и использования критический секций для Windows.
Pantheios не стали использовать из-за отсутствия поддержки rolling files (на тот момент ее еще не было) и зависимости от STLSoft STL.
И, если автор возьмется за сравнительный анализ логгеров, отдельно хотелось бы выделить google-glog. Его CHECK-макросы — это нечто.
Расширение невозможно деинсталлировать (кнопка Uninstall отсутствует), но удаление этих файлов срабатывает нормально.
Вероятно расширение устанавливается через реестр. Чтобы его (расширение) деинсталлировать, достаточно удалить соответствующий ключ HKCU или HKLM \Software\Mozilla\Firefox\Extensions\<Microsoft Extension ID>. Идентификатор можно определить по значению ключа, которое указывает на расположение расширения.
alizar, добавьте, пожалуйста, этот метод в качестве альтернативы удалению файлов.
>… я задумался насколько распространены эти ошибки, и можем ли мы их категоризировать. Я попадался в каждую из этих ловушек хотя бы раз — в некоторые по нескольку, видел те же ошибки у других.
Начинали писать о «ментальных ловушках»…
> Вот она, моя карьера программиста как она есть.
… закончили этапами карьерного роста.
Даже не знаю, как оценить статью: забавная с точки зрения «ментальных ловушек» или совершенно плоская с точки зрения анализа эволюции разработчика?
Прошу прощения.. был невнимателен :) Однако принцип тот же..
Своим комментарием я хотел сказать "Хочу не только платформу, но и среду разработки" :) Еще раз прощу прощения :)
Но позвольте, уважаемый.. Ведь для Microsoft Windows приведенные являются ничем иным, как встраиваемыми объектами (ActiveX). Т.е. по сути desktop решением. И тот факт, что они встраиваются в браузер, еще не делает эти решения революционными.
Первое, что пришло на ум, - Microsoft .NET с их Silverlight, ASP.NET, XAML и собственно desktopным решением для ОС Windows. Да не забросают меня камнями ненавистники Microsoft, но на мой взгляд это действительно решение, если не стирающее, то размывающее границы между Web и Desktop.
В решениях Google я не силен, но у них тоже что-то такое есть... Просветите пожалуйста. :)
Information
Rating
Does not participate
Location
Санкт-Петербург, Санкт-Петербург и область, Россия
В свое время Фредерик Брукс писал об эффекте второй системы. Суть эффекта в том, что проектировщик в силу отсутствия опыта или времени накапливает идеи и решения в одном проекте, а потом выплескивает все это безобразие в другом/новом проекте.
Подобную тенденцию можно наблюдать не только у архитекторов, но и у рядовых разработчиков, который бросаются на проект с мыслью «В прошлый раз у меня не было такой свободы. А вот сейчас я все сделаю правильно!».
Лечить эту болезнь можно мягко, в бесконечных дискуссиях воспитывая в человеке внутреннюю дисциплину, или жестко, продавливая стратегические решения.
Что касается mock'ов, то я вовсе не призываю использовать их везде и повсюду. Можно конечно и без них, если требуется покрыть тестами только успешные сценарии.
Если требуется достичь максимального покрытия и моделировать стрессовые ситуации для различных участков кода, то здесь без mock'ов не обойтись.
Сам я уже не помню, когда использовал googletest отдельно от googlemock.
Я бы посмотрел сразу в сторону Google C++ Mocking Framework, который уже включает в себя googletest.
* Pantheios
* ACE
* google-glog
* Boost.Log by Andrey Semashev
* Boost.Logging by John Torjo
* log4cplus
* log4cpp
* log4cxx
Вдаваться в специфику проекта не буду. Скажу лишь, что выбор пал на lo4cplus в силу его размеров, отсутствия внешних зависимостей и использования критический секций для Windows.
Pantheios не стали использовать из-за отсутствия поддержки rolling files (на тот момент ее еще не было) и зависимости от STLSoft STL.
И, если автор возьмется за сравнительный анализ логгеров, отдельно хотелось бы выделить google-glog. Его CHECK-макросы — это нечто.
Вероятно расширение устанавливается через реестр. Чтобы его (расширение) деинсталлировать, достаточно удалить соответствующий ключ HKCU или HKLM \Software\Mozilla\Firefox\Extensions\<Microsoft Extension ID>. Идентификатор можно определить по значению ключа, которое указывает на расположение расширения.
alizar, добавьте, пожалуйста, этот метод в качестве альтернативы удалению файлов.
P. S. Поправьте пожалуйста опечатку в заголовоке — дефис «из-за».
Начинали писать о «ментальных ловушках»…
> Вот она, моя карьера программиста как она есть.
… закончили этапами карьерного роста.
Даже не знаю, как оценить статью: забавная с точки зрения «ментальных ловушек» или совершенно плоская с точки зрения анализа эволюции разработчика?
Своим комментарием я хотел сказать "Хочу не только платформу, но и среду разработки" :) Еще раз прощу прощения :)
Первое, что пришло на ум, - Microsoft .NET с их Silverlight, ASP.NET, XAML и собственно desktopным решением для ОС Windows. Да не забросают меня камнями ненавистники Microsoft, но на мой взгляд это действительно решение, если не стирающее, то размывающее границы между Web и Desktop.
В решениях Google я не силен, но у них тоже что-то такое есть... Просветите пожалуйста. :)