tag:blogger.com,1999:blog-8596733192274108952.post190195344034840662..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: Идеальная архитектураSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger7125tag:blogger.com,1999:blog-8596733192274108952.post-82656038386191838612014-05-26T12:21:43.499+03:002014-05-26T12:21:43.499+03:00Спасибо за статью.Спасибо за статью.Khurshid Rustamovhttps://www.blogger.com/profile/05854405922925577674noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-39788495520569618402012-04-09T21:29:50.036+03:002012-04-09T21:29:50.036+03:00@Александр: спасибо, я рад, что не одинок в своих ...@Александр: спасибо, я рад, что не одинок в своих выводах:)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-68810638730568766942012-01-04T12:56:25.199+02:002012-01-04T12:56:25.199+02:00Хорошая статья, согласен с обоими критериями, как ...Хорошая статья, согласен с обоими критериями, как наиболее быстрым способо получения "оценки качества" кода/архитектуры.Anonymoushttps://www.blogger.com/profile/10052289350861902919noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-36109070116583738022011-11-24T19:13:02.315+02:002011-11-24T19:13:02.315+02:00@ony: с тобой мы уже это дело обсудили;) так что п...@ony: с тобой мы уже это дело обсудили;) так что продолжать флеймить не будем:)<br /><br />@Slava: +100 500!Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-79307042670968285202011-11-24T17:08:57.742+02:002011-11-24T17:08:57.742+02:00Сергей, спасибо за хорошую статью!
Тестирование вр...Сергей, спасибо за хорошую статью!<br />Тестирование враперов - легко :)<br />Что мешает сделать мок и подсовывать его? Сложнее тестировать многопоточность и асинхронность, но тоже решаемо.<br />Ony, вообще в дизайне лучше избегать таких вот звездочек. Если же есть такие классы, то они не должны содержать сложную или запутанную функциональность. Я бы сказал так: что если получается вот такая звездочка, то скорее всего плохой дизайн.<br />Чуть поправлю nwm, целью юнит теста является проверка соблюдение контракта класса. Это предусловие, постусловие и инвариант.<br />На счет архитектуры. Есть отличный принцип здравого смысле, всегда когда что-то делаешь, надо думать, кто этим будет пользоваться и как часто. И еще считаю что вся документация должна быть минимально достаточной. Архитектурную документацию возможно и стоит держать, чтобы знать где какой модуль по какому протоколу и с кем общается. Документацию для дизайна лучше генерить из кода, либо рисовать непосредственно для последующего обсуждения. Хранить кипу диаграмм классов бессмысленно, т.к. ее надо будет либо поддерживать, либо она станет не актуальной.Slavahttps://www.blogger.com/profile/02339157671912415386noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-10610831840539079272011-11-24T09:45:55.817+02:002011-11-24T09:45:55.817+02:00Я бы хотел немного возразить на предыдущий коммент...Я бы хотел немного возразить на предыдущий комментарий. Целью юнит-теста является, в первую очередь, показать, работает ли условие, являющееся индикатором работоспособности тестируемого кода. Если да, то ни о каком быстродействии речь не идет. Тест - это не боевой код, это дополнение к нему. И тестирование враппера, как Вы пишете, входит в его обязанности лишь в том свете, чтобы показать - враппер в тесте сработал в нужном контексте, а значит, он сработает в данном контексте и в боевом коде. И юнит-тест - это один из индикаторов того, что мы имеем адекватную архитектуру, которую можно протестировать по частям. А значит, она достаточно гибкая.nwmhttps://www.blogger.com/profile/11905520968599349090noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-74486651872506277862011-11-24T08:36:03.313+02:002011-11-24T08:36:03.313+02:00И опять юнит тесты... :) Понятно, что если компоне...И опять юнит тесты... :) Понятно, что если компоненты легко заменять, то их и легко подменять для тестов. Но если ты делаешь wrapper что бы внести какую-то стороннюю библиотеку себе в приложение, то этот враппер - обычно сложно тестировать так как хорошая прослойка не должна вносить особой потери быстродействия (быть достаточно тонкой), а значит очень хорошо прилегать к целевой библиотеке. А подобная "звёздочка", приведенная на картинке - характерна всяким объектам объединяющим функциональность, например - делаешь свою однородную сеть для передачи чего-то поверх кучи разных протоколов, каждый из которых выполняет свою особую роль (один предоставляет средства передачи коротких сообщений, другой - уведомления, третий- временное хранилище) и в реализации функций используются сразу несколько (огромную картинку нужно закачать и послать уведомление).Anonymoushttps://www.blogger.com/profile/03159331377410025186noreply@blogger.com