tag:blogger.com,1999:blog-8596733192274108952.post8891491994323259414..comments2024-03-12T06:00:18.305+02:00Comments on Programming stuff: Interface Segregation PrincipleSergey Teplyakovhttp://www.blogger.com/profile/14300835272589262297noreply@blogger.comBlogger10125tag:blogger.com,1999:blog-8596733192274108952.post-40723313865545440462019-11-19T17:28:36.667+02:002019-11-19T17:28:36.667+02:00"связанным внутри (highly cohesive), что позв..."связанным внутри (highly cohesive), что позволит ... уменьшает связанность (low coupling)"<br />Вы наверное хотели написать "сцепленные внутри..."?Yurihttps://www.blogger.com/profile/08269269876694699979noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-4570351603585277102015-03-30T19:41:02.769+03:002015-03-30T19:41:02.769+03:00Спасибо, поправлю.Спасибо, поправлю.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-56452427405243610862015-03-30T18:56:01.663+03:002015-03-30T18:56:01.663+03:00"Помимо отображения ошибок/предупреждений, ин..."Помимо отображения ошибок/предупреждений, инфраструктура R# SDK позволяет создавать фисы (Quick Fixes)."<br /><br />Может подразумевалось "фиксы", а не "фисы"?Anonymoushttps://www.blogger.com/profile/14172484815732371993noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-32929524954503018442014-08-07T10:34:39.386+03:002014-08-07T10:34:39.386+03:00Владимир, спасибо за ссылку на Role Interface. Я п...Владимир, спасибо за ссылку на Role Interface. Я поправил пост:)<br /><br />Да, и я видел ссылку от Марка на его новый курс, но хочу вначале написать эту серию постов про SOLID, и только потом буду его смотреть:)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-83121648751192872692014-08-07T08:29:07.012+03:002014-08-07T08:29:07.012+03:00Так это же Role Interface, а не Marker :)
http://m...Так это же Role Interface, а не Marker :)<br />http://martinfowler.com/bliki/RoleInterface.html<br /><br />P.S. Будет потом интересно сравнить мнения: http://pluralsight.com/training/courses/TableOfContents?courseName=encapsulation-solidAnonymoushttps://www.blogger.com/profile/06564078956877713341noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-67117815943289745552014-08-06T16:22:01.534+03:002014-08-06T16:22:01.534+03:00Косательно ISP - полностью согласен с тем, что это...Косательно ISP - полностью согласен с тем, что этот принцип клиентский.<br />Фактически это один из вариантов реализации принципа low-coupling, мы просто предоставляем пользователям класса лишь то, что им необходимо, не более.<br /><br />З.Ы. С удовольствием бы почитал о других принципах SOLID в интепритации автора!Alexanderhttps://www.blogger.com/profile/17719464894842331791noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-11523343609942390942014-08-06T14:12:56.545+03:002014-08-06T14:12:56.545+03:00Слава, спасибо за дельный комментарий.Слава, спасибо за дельный комментарий.Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-12355809065106002132014-08-06T14:12:26.024+03:002014-08-06T14:12:26.024+03:00Владимир, да, ICloneable, IComparable, IEquatable ...Владимир, да, ICloneable, IComparable, IEquatable действительно не совсем маркерные интерфейсы. Класс, реализующий такие интерфейсы говорят, что они "Can Do" something.<br />Но приведенные интерфейсы скорее "аспектные", нежели "маркерные".<br /><br />З.Ы. Раз есть желание услышать про остальные принципы, значит будем писать:)Sergey Teplyakovhttps://www.blogger.com/profile/14300835272589262297noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-19715393357929929082014-08-06T11:45:59.331+03:002014-08-06T11:45:59.331+03:00Сергей, спасибо. Добавлю, в теории, поклон Бертран...Сергей, спасибо. Добавлю, в теории, поклон Бертрану Мейеру за его труд, программная модель начинается с выделения АТД (абстрактный тип данных), интерфейс это первое приближение АТД к программной модели, далее вниз по иерархии идет уже спецификация типа. Выделение нового АТД - это уточнение/спецификация программной модели, даже если один АТД наследует несколько других.<br />Как пример ISP можно привести в STL разделение контейнеров и алгоритмов, где выделен интерфейс итератора контейнера, в .NET Extension методы реализованы по такому же принципу, в сигнатуре задекларирован интерфейс который необходим для работы.<br />Я бы еще добавил к выводу, что правильное использование ISP позволяет создавать оптимальную программную модель: выдержать равновесие между минимальной гранулярностью и максимальным повторным использованием кода.Славаhttps://www.blogger.com/profile/01633245188932975582noreply@blogger.comtag:blogger.com,1999:blog-8596733192274108952.post-37711877859289793892014-08-06T10:29:42.771+03:002014-08-06T10:29:42.771+03:00Мне всегда казалось, что маркерные интерфейсы не с...Мне всегда казалось, что маркерные интерфейсы не содержат вообще никаких членов, а в ICloneable, IComparable и IEquatable очевидно они есть.<br /><br />Желание услышать мнение про остальные принципы, конечно, есть.<br /><br />Anonymoushttps://www.blogger.com/profile/06564078956877713341noreply@blogger.com