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

SOLID принципы

23.01.2017, 17:55. Показов 17547. Ответов 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
25.01.2017, 04:34
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от asmquest Посмотреть сообщение
потому что тупой код проще для анализа компилятором.
Тупой код копипастят мартышки на JS и подобных языках. У них там всегда главнаяя проблема - где скопипастить нужный сниппет.
А за меня С++ сделанные мной шаблоны под заданную мной модификацию копипастит. Это так для начала.
Цитата Сообщение от asmquest Посмотреть сообщение
Она предпочтительней только в двух случаях
Она предпочтительна в том случае когда нужна типобезопасность и определение алгебры над сущностяи. Когда к примеру нужно обеспечить к примеру чтобы координата складывалась только с перемещением а перемещение получалось к примеру в результате умножения скорости на время. при этом координата ни на скорость ни умножалась бы ни со временем не складывалась бы.
Цитата Сообщение от asmquest Посмотреть сообщение
переполнениях буфера
Особенно кольцевого
Цитата Сообщение от asmquest Посмотреть сообщение
В этом смысле динамика безопасней и надежней.
В задачах промышленной автоматики реаллок буферов это нечто что лучше оставить на стадии пусконаладки. Определились с потребыми размерами во время тестирования, на старте с запасом распределили и так себе и живут никуда не деваясь до самого сбоя по питанию.
Цитата Сообщение от asmquest Посмотреть сообщение
В этом смысле динамика безопасней и надежней.
Постоянное динамическое перераспределение памяти это отказ по фрагментации в течение нескольких суток максимум. Если же софт должен без перезапуска работать годами такое в принципе не приемлемо. К примеру прокатный стан это тебе не самолет. Это самолет час летит сутки обслуживается. А прокатный стан пол-года кататет неделю в обслуживани. При этом обслуживание данные АСУТП пользует поэтому сбоить при обслуживании стана незя в принципе.
Цитата Сообщение от asmquest Посмотреть сообщение
Жалко что мужики из AI LAB MIT, колыбели искуственного интеллекта и робототехники этого не знали, использовали лисп, по старинке.
То роботоигрушки а не робототехника. А колыбель робототехники это Siemens. И ребятки из Siemens сначала на фортране софт УВМ промышленных роботов лабали потом на плюсах. Для контроллеров свой доморощенный язык но тоже статический.
0
Заблокирован
25.01.2017, 04:41
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
То роботоигрушки а не робототехника.
Как бы, изначально тема перешла в холивар, а теперь скатилась до петросянства. Петросянство -- это убойный аргумент, крыть нечем

Добавлено через 3 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
В задачах промышленной автоматики
Единственное что добавлю, я в этом мало понимаю, но знаю, что эмбедщики внезапно обожают тикль. Куда уж динамичней, там не просто динамика, там прямой доступ к стеку вызовов. А вот С++ у них считается дурным тоном, только сишечка и асм
0
Эксперт .NET
 Аватар для Usaga
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
25.01.2017, 04:45
Цитата Сообщение от ht1515 Посмотреть сообщение
Имхо, если я буду знать солид принципы, не факт что я напишу норм архитектуру с первого раза.
Они гарантируют что человек в них разобравшись напишет божественный код? Если нет, то смысл их популяризировать ваще тогда? Чем гоф не устроил?
Но факт, что не зная солид ты точно ничего норм не напишешь

Я не понимаю каких гарантий ты ожидаешь. Что тебе гарантии даёт? Детальное знание языка? GOF? ООП? Юнит-тесты? Всё это - интрументы и не более. Ключевая основа тут - твой скилл и прымые руки. Это как крутая паяльная станция в руках деревенского гопника (надеюсь аналогия не будет воспринята как оскорбление).

SOLID - набор принципов разумное следование которым позволит добится более качественного кода. Если ты настолько крут и опытен, что SOLID должен следовать тебе, а не ты ему, тогда вопросов нет. Т.е. если ты точно знаешь, что делаешь и понимаешь, что если здесь сделать иначе, то будет только лучше, то тебе, по идее, никто слова не скажет, что ты - дивергент и реальные пацаны так не делают. Но опять же, ключевые слова тут: "знаешь, понимаешь". На данный момент ты не понимаешь что это за принципы и для чего они нужны. Просто опыта мало (или нет совсем). Потому ты можешь давать оценку "фуфло" тому, с чем не знаком.

Тебя никто не заставляет фанатично следовать каким-то принципам или парадигмам (а может и заставляет, я хз). Понимание полезности всех этих солидов-шмолидов придёт только с опытом. Постарайся просто понять эти принципы, без вынесения вердиктов.
0
Заблокирован
25.01.2017, 04:48
Цитата Сообщение от Usaga Посмотреть сообщение
Но факт, что не зная солид ты точно ничего норм не напишешь
Да что Вы говорите. До солида люди писали только хелловорды, по-ходу, ага. На самом деле, появление солида как раз совпало со скатыванием программирования в говно.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 04:54
Цитата Сообщение от asmquest Посмотреть сообщение
Кроме того, можно сделать реалтайм сборку мусора, и такие системы существуют. Для этого, насколько я знаю, нужна конкурентность.
Можно и реалтайм кернел для виды сделать. Вопрос не в этом. Вопрос в том что к примеру в С++ у меня сборка осуществляется по тому конкретному механизму который соответствует решаемой задаче, а не по вангованию разработчиков "универсального" сборщика. Самая главная проблема подкапотного встроенного в язык сбора в том что он не модифицируем. При этом обычно использует кривую концепцию "объект не нужен когда на него нет трассы из рута" и реализовать слабо владеющие контейнеры, и прочие прелести двунаправленных указателей в результате слишком затруднительно. Т.е. организовать в одном месте механизм обеспечивающий принудительное удаление объекта с обнулением всех активных ссылок на него и удалением ссылок из списков обработки нереально. Так же как к примеру и реализовать самоудаление объекта при нарушении минимально допустимого комплекта типизированных ссылок на него.

Добавлено через 3 минуты
Цитата Сообщение от asmquest Посмотреть сообщение
А вот С++ у них считается дурным тоном, только сишечка и асм
Эмбедеб это обычно нечто из серии утюгов и кофеварок и моргания светодиодами когда кофе закипел. А промышленная автоматика это из серии сурьезого счета сурьезного матана на сурьезных компутерах и шовеленич на основе оного счета мегаватными движками и т.п.
0
Заблокирован
25.01.2017, 04:54
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Самая главная проблема подкапотного встроенного в язык сбора в том что он не модифицируем.
Тут я согласен, но это ортогонально динамической типизации, которую начали обсуждать, это вопрос конкретных реализаций. И, кроме того, есть языки, которые дают юзер-доступ к конфигурации сборки мусора, например луа.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 04:56
Цитата Сообщение от asmquest Посмотреть сообщение
И, кроме того, есть языки, которые дают юзер-доступ к конфигурации сборки мусора, например луа.
Конфигурации или полной замене механизма? Причем в рамках одной программы очень часто нужно несколько разных механизмов для разных классов а то и разных сборок компонентов.
0
Заблокирован
25.01.2017, 05:05
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Эмбедеб это обычно нечто из серии утюгов и кофеварок
эмбедед -- это программирование встраиваемых систем, обычно, с жесткими ограничениями по различным критериям. Это и есть основа промышленной электроники, робототехники, и техники военной и космической отраслей.

Если вы подразумеваете под промышленной электроникой и робототехникой компы с вендой, установленные на токарном ЧПУ дяди Васи, то это не оно

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Конфигурации или полной замене механизма?
Конфигурации, насколько я помню. Чтобы полностью заменить механизм, надо досконально знать реализацию языка, едва ли это реально в современных условиях, языки слишком сложны.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 05:30
Цитата Сообщение от asmquest Посмотреть сообщение
Чтобы полностью заменить механизм, надо досконально знать реализацию языка, едва ли это реально в современных условиях, языки слишком сложны.
Чтобы обеспечить нужный механизм сборки нужно просто спроектировать алгоритм его работы. Универсальная реализация к примеру двунаправленных указателей выливается строк в 200. Главное чтобы автоматическая мусоросборка под ногами не путалась, была возможность принудительного удаления объекта и деструкторы.

Добавлено через 1 минуту
Цитата Сообщение от asmquest Посмотреть сообщение
Если вы подразумеваете под промышленной электроникой и робототехникой компы с вендой, установленные на токарном ЧПУ дяди Васи, то это не оно
А вы знаете сколько стоит копия винды допиленная сименсом под реалтайм полной заменой кернела?
0
Заблокирован
25.01.2017, 05:36
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Чтобы обеспечить нужный механизм сборки нужно просто спроектировать алгоритм его работы.
Ну а как его интегрировать в реализацию языка, не зная всех нюансов этой реализации?

В любом случае, факт, что для промышленных языков общего назначения это не нужно, не для этого они разрабатывались. И не будет востребована эта гипотетическая возможность.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 05:40
Цитата Сообщение от asmquest Посмотреть сообщение
и техники военной и космической отраслей.
Ну ну. Посмотрю я как они игрушки для ботового компутера к примеру шатлла будут в блокнотике писать на динамическом язые. Да кстати в курсе что в обязанности каждого из пилотов шатлла во время полета входило как минимум 4 часа играться на компе в игрушку под названием "посади шатлл никого при этом не угробив" с реальных между прочим джойстиков. Вот и терзают меня смутные сомнения - однозначно такую игрулю не на ява скрипте в блакнотике писали. А к примеру на АДЕ. Теперя правда на плюсы перешли и пилоту вообще по новой задумке тока собак кормить а руками ниче не трогать.
Цитата Сообщение от asmquest Посмотреть сообщение
с жесткими ограничениями по различным критериям.
Во всех этих делах жестко ограничены два условия - время реакции системы и отказоустойчивость. Так что никаких асмов никаких динамических типизаций, а кольцевые буфера, перегрузочка операторов алгебра, над сущностями и т.д. и т.п. И как можно меньше реаллоков в процессе. А количество памяти и запас вычислительной мощности в таких делах проблема отдела оборудования а не программистов.
0
Заблокирован
25.01.2017, 05:45
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Теперя правда на плюсы перешли
нет никакого теперь, шатл свернули. Может поэтому и зафейлился проект, что на плюсы перешли. А в старинные времена навигаторы спутников писали на старинных интерпретируемых лиспах, когда возникали проблемы, по радиоуправлению с земли правили программу, не останавливая ее работы.
0
Эксперт .NET
 Аватар для Usaga
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
25.01.2017, 05:56
Цитата Сообщение от asmquest Посмотреть сообщение
Да что Вы говорите. До солида люди писали только хелловорды, по-ходу, ага. На самом деле, появление солида как раз совпало со скатыванием программирования в говно.
Ну конечно, и существенно возросшая доступность компьютеров, удобства средств разработки и снижение порога вхождения в профессию тут вообще ни причём. Виноват конечно же SOLID

Я тебя сильно удивлю, если скажу, что принципы входящие в SOLID существовали (и о них знали) задолго до того, как их решили объединить в пачку с таким названием?
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 05:59
Цитата Сообщение от asmquest Посмотреть сообщение
В любом случае, факт, что для промышленных языков общего назначения это не нужно, не для этого они разрабатывались.
Общего назначения - означает предназначенный для любой задачи. А не только для хеллоувердов равняния ввода вывода в исполнении вчерашнего школьника как к примеру php и js
А любые задачи это к примеру еще и САПРы, имитационное моделирование разных систем и еще куча всего где подход к вопросу "объект не нужен когда на его нет трассы из рута" не приемлем.
Цитата Сообщение от asmquest Посмотреть сообщение
Ну а как его интегрировать в реализацию языка, не зная всех нюансов этой реализации?
А просто не нужен мусоросборник вот и все. Просто язык должен не генерить мусор сам по себе (под капотом) как наример его вообще не генерит С++. А с механизмом сборки явно распределяемых объектов программисту конкретной задачи все равно виднее что делать. Вывод - в серьезных задачах подкапотная мусоросборка только мешает а соответственно в универсальном языке общего назначения ее быть не должно.
Кстати для какой квалификации и каких задач какой язык предназначен четко видно по вакансиям на западных сайтах.
Ну для примеру - основная масса вакансия JS и PHP требует образования средняя школа и предлагает з/п порядка 40k/год (что без в/о для штатов кстати очень даже не кисло). Задачи в основном гоняние говноданных говнокодом с браузера на говносайт и обратно.
Примерно так же по яве, но с тем отличием что на сотню обезьян требуется еще и архитектор с в/о и опытом. И занимаются они бэк-эндом оных корпоративных говносайтов. У тим-лида-архитектора верхняя планка $120/год. Максимум что для этих бизнес процессов изредка юзают - шарп.
А если по плюсам вкладки откроем - то там однозначно требования в/о, разноплановый матан, и вакансии из области промавтоматики, САПР, и прочего математически высоконагруженного софта. Ну соответсвенно задачам и оплата. $120k/год это в таких делах з/п стажера.
0
Заблокирован
25.01.2017, 06:00
Цитата Сообщение от Usaga Посмотреть сообщение
Я тебя сильно удивлю, если скажу, что принципы входящие в SOLID существовали (и о них знали) задолго до того, как их решили объединить в пачку с таким названием?
Естественно знали, ведь это по-сути дела есть ни что иное, как объяснение элементарных вещей сложным забубенным языком и попытка выдать частные случаи профитов каких то техник проектирования за нечто универсальное.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 06:04
Цитата Сообщение от asmquest Посмотреть сообщение
нет никакого теперь, шатл свернули
Ну да отлетал свое старичек. Теперя Falcon-9 100% многоразовую 100% автоматическую ракету-носитель испытывают. Весь бортовой софт на плюсах. Как самой ракеты так и необитаемой плавучей посадочной площадки.
0
Заблокирован
25.01.2017, 06:10
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
А если по плюсам вкладки откроем - то там однозначно требования в/о, разноплановый матан, и вакансии из области промавтоматики, САПР, и прочего математически высоконагруженного софта. Ну соответсвенно задачам и оплата. $120k/год это в таких делах з/п стажера.
lol, тото я наблюдаю, что среди плюсовиков столько баб, казалось бы, специальность мужская, инженерная, а оно вон оно как, оказывается, в/о, все дела. Кстати, после в/о основная проблема чтобы выбить штампы из мозгов, это общая проблема, и редко получается успешно это сделать. Сборка мусора тут не поможет

Добавлено через 4 минуты
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Теперя Falcon
это дешевая сборка из чермета оставшегося после шаттлов. Занимается этим всем солидная компания, аналог нашего МММ, успешно распиливают бюджет и деньги инвесторов. С полетами пока так успешно не получается, но надежды спонсоров умирают последними.
0
Эксперт .NET
 Аватар для Usaga
14790 / 9564 / 1367
Регистрация: 21.01.2016
Сообщений: 36,060
25.01.2017, 06:11
Цитата Сообщение от asmquest Посмотреть сообщение
Естественно знали, ведь это по-сути дела есть ни что иное, как объяснение элементарных вещей сложным забубенным языком и попытка выдать частные случаи профитов каких то техник проектирования за нечто универсальное.
Мне кажется, что это только твоё мнение. Люди выделили набор принципов следование которым, в большинстве случаев, даёт положительный результат. Скинули в кучку и назвали SOLID. Мне в литературе не попадалась ни разу агитация за то, что нужно использовать строго либо все принципы, либо ни одного. Можешь использовать только один, или только четыре. Или ни одного. SOLID "придумали", чтобы люди знали, что вот эти вещи могут быть полезны. Лично я нахожу наиболее полезными и универсальными только первые три (SOL), остальные (ID) только в крупных и долгоиграющих проектах.

И никакой тут забубенный язык не применяется.
0
 Аватар для Fulcrum_013
2083 / 1576 / 169
Регистрация: 14.12.2014
Сообщений: 13,614
25.01.2017, 06:14
Цитата Сообщение от asmquest Посмотреть сообщение
С полетами пока так успешно не получается, но надежды спонсоров умирают последними.
Они хотя бы взлетают и приземляются. А не валятся пачками на якутов как "Прогрессы"
0
Заблокирован
25.01.2017, 06:21
Цитата Сообщение от Fulcrum_013 Посмотреть сообщение
Они хотя бы взлетают и приземляются. А не валятся пачками на якутов как "Прогрессы"
взлетать то взлетают обычно, да, процент взлетов большой. А вот приземляются где-то через раз.

Прогрессы тоже не блещут, не спорю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.01.2017, 06:21

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
80
Ответ Создать тему
Новые блоги и статьи
ИИ не может найти нужный язык в списке
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, со следующими реквизитами: - ВидТО (СправочникСсылка. ВидыТО); - ВидГСМ. . .
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр. Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала. Ниже прикреплён. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru