Форум программистов, компьютерный форум, киберфорум
Обо всем!
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.91/55: Рейтинг темы: голосов - 55, средняя оценка - 4.91
шарпопочитатель
 Аватар для ht1515
59 / 26 / 7
Регистрация: 31.01.2010
Сообщений: 1,035

SOLID принципы

23.01.2017, 17:55. Показов 17580. Ответов 359
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
всего 5 принципов:
1) srp - класс должен описывать только те характеристики, которые на объект из предметной области возложены. То есть либо кот, либо пес, котопес быть не может.
2) ocp - Писать надо классы так, чтобы их можно было легко расширить, но не изменять
3) Лисков - ???
4) делайте много маленьких интерфейсов, один дольшой интерфейс это плохо. Так как рефакторинг усложняется...
5) Инверсия зависимостей. Типо композицию поменяйте на агрегацию


Я не понимаю принцип Лисков. Можете объяснить популярно?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.01.2017, 17:55
Ответы с готовыми решениями:

Нелогичные принципы программирования
Я вспомнил программу, по которой как то начинал изучать программирование на языке С++, код приложу к теме. Программа определяет количество...

SOLID
Здравствуйте, стоит ли использовать правила SOLID в маленьких задачках, например в том же шифре цезаря? Задаюсь таким вопросом потому что...

Нарушен ли solid ?
Привет. Есть например сущности предметной области Нож и Складной Нож. Как вы думаете нужно спроектировать классы в этом случае? ...

359
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 12:07
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от asmquest Посмотреть сообщение
рефлексия не "дает" никакой информации, это модификация кода в рантайме, это термин такой, слово такое, которое люди употребляют, для описания определенного конкретного процесса
Вот люди в технической документации употребляют этот термин именно применительно к метаданным вшитым в сегмент данных компилятором и механизмам их получения из хранилища. А что там в вики-мурзилках написано к термину никакого отношения не имеет.
0
Заблокирован
31.01.2017, 12:09
Цитата Сообщение от Usaga Посмотреть сообщение
Разве не даёт?
Это просто термин. еще раз. рефлексия -- это модификация кода, интроспекция -- это наблюдение за кодом(чтение)

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
люди в технической документации употребляют этот термин именно применительно к метаданным вшитым в сегмент данных компилятором и механизмам их получения из хранилища.
Видимо, безграмотные просто люди, это не редкость на сегодняшний момент.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 12:21
Цитата Сообщение от asmquest Посмотреть сообщение
Видимо, безграмотные просто люди, это не редкость на сегодняшний момент.
Ну скажем так. Если абсолютно во всей технической документации рефлекшином называется именно получение метаданных, а практически все модуля которые занимаются извлечением этой информации в разных языках (в т.ч и GLSL и HLSL) называются или содержат в названии именно Reflection(за редким исключением - у борланда они называются RTTI хотя в документации через раз упоминается рефлекш.), то наверое таки безграмотные автора статьи в википедии.

Добавлено через 2 минуты
Цитата Сообщение от asmquest Посмотреть сообщение
Это просто термин. еще раз. рефлексия -- это модификация кода, интроспекция -- это наблюдение за кодом(чтение)
Модификация кода это модификация кода. Интроспекция это интроспекция. А рефлексия ни к тому ни к другому не относится. Это получение метаданных в рантайме.
0
Заблокирован
31.01.2017, 12:21
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Если абсолютно во всей технической документации
насколько я понял, имеется в виду документация, писанная java/++ программистами, и им подобными. Откуда им знать, что это такое, ведь, к примеру, тот же страуструп понятия не имеет что такое ООП, чего же можно от адептов ожидать, если дезигнеры безграмотны
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 12:24
Цитата Сообщение от asmquest Посмотреть сообщение
насколько я понял, имеется в виду документация, писанная java/++ программистами, и им подобными.
Имеется в виду документация по Borland С++ Builder, Delphi, Qt, MSVC, С#, PHP, DirectX и OpenGL (применительно GLSL и HLSL)
0
Заблокирован
31.01.2017, 12:26
Fulcrum_013, короче, давайте пруф из серьезного, академического источника, тогда поговорим.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 12:28
Цитата Сообщение от asmquest Посмотреть сообщение
тут жа страуструп понятия не имеет что такое ООП
Ляпов он конечно парочку наделал, до сих пор в стандарте не залатали. Но вся причина в том что он делал ООП язык, и пока этот язык пошел в массы основная парадигма сменилась с ООП на КОП поддержки которой в стандарте С++ как раз и нету. А как именно ООП язык С++ лучший. С расширениями синтаксиса для поддержки КОП и как КОП язык лучший.
0
Заблокирован
31.01.2017, 12:32
Fulcrum_013, люди, которые стояли у истоков, и ввели термин ООП, не имели в виду с++
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 13:26
Цитата Сообщение от asmquest Посмотреть сообщение
Fulcrum_013, люди, которые стояли у истоков, и ввели термин ООП, не имели в виду с++
Когда этот термин появился в 1967-ом ни то что С++, C еще в проекте не было. А до действительно толковой реализации ООП-языка добрались только в расширенном варианте С++ от борланда 1997-го года

Добавлено через 23 минуты
Цитата Сообщение от asmquest Посмотреть сообщение
тот же страуструп понятия не имеет что такое ООП,
А какой язык по вашему является по настоящему ООП языком?

Добавлено через 15 минут
Цитата Сообщение от asmquest Посмотреть сообщение
короче, давайте пруф из серьезного, академического источника, тогда поговорим.
Пример из документации: ID3D10ShaderReflection. Ни о каком изменении или получении информации о самом коде речи нет и близко. Исключительно о получении метаданных - структуры входных и выходных данных шейдера и структуре константных буферов.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
31.01.2017, 16:14
Цитата Сообщение от asmquest Посмотреть сообщение
рефлексия не "дает" никакой информации, это модификация кода в рантайме, это термин такой, слово такое, которое люди употребляют, для описания определенного конкретного процесса
Здесь "люди" - это только Вы или ещё кто-нибудь?
0
Заблокирован
31.01.2017, 16:27
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А какой язык по вашему является по настоящему ООП языком?
смоллток и его наследники

Добавлено через 1 минуту
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Пример из документации:
нет, нужен серьезный источник, из области CS. Документацию может писать всякий сброд, это не аргумент
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
31.01.2017, 16:50
Цитата Сообщение от asmquest Посмотреть сообщение
короче, давайте пруф из серьезного, академического источника, тогда поговорим.
Вы приведите пруф своей версии.
И опишите, по каким признакам вы различаете "серьезные, академические источники" и "хрень".
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
31.01.2017, 19:02
Цитата Сообщение от Shamil1 Посмотреть сообщение
Насколько я себе представляю, в gtk+ фиксированная иерархия.
не вразумел

Цитата Сообщение от Shamil1 Посмотреть сообщение
Продемонстрируйте, как. Очень интересно.
это эмулируется через агрегацию.
просто всякими макросами добавляют сахарку.
подробности в gtk+ смотрите

Цитата Сообщение от Shamil1 Посмотреть сообщение
Какое отношение язык макросов имеет к процедурной парадигме?
просто всякими макросами добавляют сахарку.

я как то не ясно выражаюсь?

Цитата Сообщение от Shamil1 Посмотреть сообщение
Реализуйте наследование, например, на Фортране.
а чего сразу не на каком нибудь бренфаке?
вам нужно вы и реализовывайте.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Любой ОО код можно представать в виде последовательности машинных команд. Но это будет уже не ОО код.
ну и ? последовать машинных команда и есть процедурная парадигма.
зачем вы за мной повторяетесь?

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Ну и на кой она такая нужна? От нее толку что мертвому припарка. Динамическая нужна.
толк - перфоманс. эффективность.
нафига нужна динамика?
которая, кстати, уже сейчас не сложно велосипедится.
а со статической - можно будет тривиально создавать любые динамические типы.
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Вот с этого и начнем. Без возможности сериализации/десериализации обрабатываемых данных любая прога не более чем хеллоуверд.
мне этот ваш бред не очень интересен.

Цитата Сообщение от asmquest Посмотреть сообщение
рефлексия не "дает" никакой информации, это модификация кода в рантайме,
вы уперлись в свой рантайм.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
31.01.2017, 20:13
Цитата Сообщение от hoggy Посмотреть сообщение
это эмулируется через агрегацию.
Получается гораздо больше кода. В большинстве случаев убивает положительный эффект от использования ООП. Кроме тех случаев, где ООП подходит лучше всего (графический интерфейс и т.п.).

Цитата Сообщение от hoggy Посмотреть сообщение
я как то не ясно выражаюсь?
Да. Для меня фразы "тоже наследование - при помощи макросов" и "просто всякими макросами добавляют сахарку" имеют разный смысл.

Цитата Сообщение от hoggy Посмотреть сообщение
а чего сразу не на каком нибудь бренфаке?
Фортран - классический пример "процедурной парадигмы". А брейнфак вообще не поддерживает эту парадигму.

Цитата Сообщение от hoggy Посмотреть сообщение
зачем вы за мной повторяетесь?
Я пытаюсь обратить Ваше внимание на "странность" Вашей логики. Согласно которой любая парадигма "не что иное, как эволюция развития процедурной парадигмы".
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 20:50
Цитата Сообщение от hoggy Посмотреть сообщение
мне этот ваш бред не очень интересен.
Толку от иерархии объектов созданной в графическом редактор САПР если ее нельзя сохранить загрузить? Толку от системы RPS которой список свойств доступных для изменения по сети нужно костылить вручную?

Добавлено через 1 минуту
Цитата Сообщение от hoggy Посмотреть сообщение
толк - перфоманс. эффективность.
Эффективность чего?
Цитата Сообщение от hoggy Посмотреть сообщение
которая, кстати, уже сейчас не сложно велосипедится.
Вот в том то и оно что велосипедится. При этом соответствие лисапета коду классов нужно поддерживать вручную. Чем больше классов тем сложность в квадрате.

Добавлено через 3 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
толк - перфоманс. эффективность.
нафига нужна динамика?
Для перфомансу. Как девелопмента так и рантайма. А черезмерное увлечение статикой только снижает перфоманс в следствии разростания кода и получения спагетти переходов каждый из которых сбрасывает кеш и конвейер. Да и статическим полиморфизмом заменить динамический все равно толково не получится.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
31.01.2017, 21:21
Цитата Сообщение от Shamil1 Посмотреть сообщение
Получается гораздо больше кода. В большинстве случаев убивает положительный эффект от использования ООП. Кроме тех случаев, где ООП подходит лучше всего (графический интерфейс и т.п.).
ваш, Кэп)

Цитата Сообщение от Shamil1 Посмотреть сообщение
Да. Для меня фразы "тоже наследование - при помощи макросов" и "просто всякими макросами добавляют сахарку" имеют разный смысл.
ну, значит вы просто не знаете, что такое сишка,
и что там у него за макросы бывают
и что сишники с их помощью проворачивают.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Фортран - классический пример "процедурной парадигмы".
я его в глаза вообще не видел.
мне как то не очевидно,
нафига вы мне его предлагаете.
Цитата Сообщение от Shamil1 Посмотреть сообщение
А брейнфак вообще не поддерживает эту парадигму.
я перефразирую.
может быть так будет понятнее:
мне на него покласть точно так же,
как и на фортран.

Цитата Сообщение от Shamil1 Посмотреть сообщение
Я пытаюсь обратить Ваше внимание на "странность" Вашей логики. Согласно которой любая парадигма "не что иное, как эволюция развития процедурной парадигмы".
я такого не утверждал.

Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Эффективность чего?
статика имеет рантайм и вхвост и в игриву.
по части эффективности (сочетание быстродействия и экономичности)
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Для перфомансу. Как девелопмента так и рантайма. А черезмерное увлечение статикой только снижает перфоманс в следствии разростания кода и получения спагетти переходов каждый из которых сбрасывает кеш и конвейер. Да и статическим полиморфизмом заменить динамический все равно толково не получится.
хорош с меня этого бреда.
я не могу с вами общаться.
не пишите мне больше ничего.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 21:34
Цитата Сообщение от hoggy Посмотреть сообщение
которая, кстати, уже сейчас не сложно велосипедится.
Те у кого такой лисапед на каждом шагу лисаппетят в результате метакомпилятор. Некоторые полноценный промышленный компилятор (ведущие производители). Может стоит таки стандартизировать лучшие достижения компиляторостроя последних 25-лет добавив фактически нативные средства поддержки КОП в язык а не пытаться заменить развтие языка впихиванием в него библиотеки созданной по концепции актуальной для 60-х, при этом не пригодной к использованию вообще нигде, поскольку автора библиотеки не могут иметь ни малейшего представления о конкретных задачах в которых эта библиотека будет использоваться, а соответсвенно ни малейшего представления ни об необходимом наборе компонентов ни об их архитектуре. Попытки же сделать абсолютно разноплановое поведение в одном и том же компоненте ни к чему хорошему еще никогда не приводили.

Добавлено через 9 минут
Цитата Сообщение от hoggy Посмотреть сообщение
статика имеет рантайм и вхвост и в игриву.
по части эффективности (сочетание быстродействия и экономичности)
Что имеете в виду под статикой и динамикой? Типизацию или диспетчеризацию? При попытке замены динамической диспетчеризации статической проблемы с перфомансом гарантированы при разрастании кода. А про типизацию никто не говорит кроме моментов касаемых абстрактных фабрик , внешней сериализации/десериализации, внешних редакторов генерирующих интерфейс на основе свойств редактируемого объекта и т.п. Но как бы в этом плане статика вообще не пригодна в принципе, поскольку код создаваемых/сохраняемых/редактируемых объектов может не существовать на момент компиляции фабрики/алгоритма сериализации/редактора и т.п. системы. А динамика генерирует связи один раз на старте дальше работает с тем же перфомансом как и статика.
0
Модератор
Эксперт функциональных языков программирования
3141 / 2289 / 469
Регистрация: 26.03.2015
Сообщений: 8,920
31.01.2017, 21:44
Цитата Сообщение от hoggy Посмотреть сообщение
я такого не утверждал.
Сначала Вы написали, что оо-парадигма базируется на процедурной парадигме, потому что любой оо-код можно представить в виде процедурной парадигмы. Потом Вы добавили, что последовать машинных команда и есть процедурная парадигма.
Согласно Вашей логике, любой код, который можно представить в виде последовательности машинных команд, базируется на процедурной парадигме. Например, код на Хаскеле или Прологе.

Добавлено через 3 минуты
Цитата Сообщение от hoggy Посмотреть сообщение
по части эффективности (сочетание быстродействия и экономичности)
Фортран превосходит С++... Поэтому ИМХО странно сравнивать Фортран с Брейнфаком лишь на том основании, что Вы его не знаете.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
31.01.2017, 21:47
Цитата Сообщение от Shamil1 Посмотреть сообщение
Фортран превосходит С++...
При этом во всех учебниках по фортрану рекомендуется избегать процедур поскольку они имеют очень высокие накладные расходы на вызов.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
31.01.2017, 21:52
Цитата Сообщение от Shamil1 Посмотреть сообщение
Согласно Вашей логике, любой код, который можно представить в виде последовательности машинных команд, базируется на процедурной парадигме. Например, код на Хаскеле или Прологе.
это не моя логика.
думайте лучше.

заодно подумайте,
как работает компилятор какацкеля,
или что там у него.

и какое отношение вообще имеет парадигма языка
к технологиями компилятора

Добавлено через 1 минуту
Цитата Сообщение от Shamil1 Посмотреть сообщение
Фортран превосходит С++
аха. наверное, именно поэтому, он на свалке истории,
никому не нужный кроме полторы старых колек.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
31.01.2017, 21:52

Solid Works Api
Здравствуйте! Пишу програмку для Solid Works используя Api. Перестроение проекта, высвечивание элементов занимает много времени. Можно ли...

Пятый принцип SOLID
Здравствуйте. Формулировка пятого принципа гласит о том, что модули верхнего уровня не должны зависеть от модулей нижнего уровня. И те и...

Применение SOLID принципов
Всем доброго времени суток, Есть плохо написанный код машины Тьюринга на Java: package tm; import...

Solid Works Api и C#
Здравствуйте! Подскажите пожалуйста, ресурсы для изучения Solid Works Api на русском. Интересуют такие моменты как, 1. Вставка деталей,...

Тест по SOLID принципам
Нужна помощь по тестам, в принципах вроде как разобрался, но тест очень сильно путает своими вариантами ответов. Хочется узнать мнение...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
220
Ответ Создать тему
Новые блоги и статьи
Запустил конкурс "тем и промптов для текстовых квестов созданных почти чисто ИИ"
Adler 06.10.2026
Всем привет! За последние три-четыре дня я создал более 16 текстовых квестовых игр используя преимущественно по одному запросу к ИИ на игру. Мне так понравилось смотреть все ветки/ сцены во всех. . .
ИИ не может найти нужный язык в списке
Supersumestria 05.10.2026
Я ему даю вот такое изображение и прошу найти и подчеркнуть немецкий язык. Возвращает он вот это: https:/ / i. **********/ vqBWLe2. png Нужную строчку в 3й колонке просто выдумал. . Это. . .
Новая последняя моя музыка в SUNO
zorxor 05.10.2026
Здравствуйте, дорогие мои друзья! С большой радостью я хотел бы представить вам свою новую последнею музыку, которую сгенерировала мне по моей просьбе нейросеть SUNO. С уважением, zorxor. Это. . .
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки Правым кликом по серверу -> отладочная информация -> edit Заменить "net": "raw", на "net": "tcp", Нажать кнопку reload.
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js. В помощники взял Яндекс-Алису. Было создано три зала на разные интересы. исторические и ретро сериал Хичкок. . .
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#. Название изменил на ColorStep. Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru