|
Заблокирован
|
|
ООП - парадигмы, паттерны, подходы - кратко и доходчиво03.06.2020, 16:34. Показов 17531. Ответов 153
Метки нет (Все метки)
Я не проф программист и никогда им не буду (старый уже). Потихоньку что-то читал и делал на c# WPF. Получалось, работало, но это были относительно простые штуковины и собственно ОПП там особо не использовалось. Но ту взялся сделать (для себя) более сложную штуковину и увидел, что не сделал ещё и малой части, а уже приходится неоднократно переписывать почти всё заново. Чё-то не очень получается делать ладные "кирпичики", из которых будут строиться блоки программы, а из блоков постепенно усложняться большое здание программы. Постоянно что-то "подпиливаю" в кирпичиках и даже их заменяю. Если так и дальше пойдет, то я эту штуку никогда не сделаю. Оказалось, что это очень не просто правильно сделать модель предметной области, правильно определиться со способами реализациями идей, правильно разбить программу на какие-то правильно взаимодействующие части. К тому же, c# имеет богатый функционал средств. Одно и то же можно сделать по разному. Постоянно встает проблема выбора - и так можно и эдак... Код поначалу всё терпит)
В итоге оказалось, что "что-то не так" - очевидно не хватает каких-то системных знаний. Сама задача достаточно стандартная - анализ исторических данных биржевых курсов акций, выработка и реализация торговых стратегий и т.д. Это интересно, но чувствую, что что-то идёт не так) Забавно, что в рамках процедурного программирования достаточно быстро "слепил" один небольшой кусочек программы и частично оттестировал микроидею. Усложнять далее в рамках процедурного подхода было уже не рационально. Поэтому стал переписывать в рамках подхода ООП. Это заняло гораздо больше времени и никак не закончу). Постоянно что-то переделываю. Честно говоря, не ожидал, что возникнут такие принципиальные трудности. Одного здравого смысла и соображалки явно не достаточно. И шо же делать?) Изучить все парадигмы, подходы, паттерны программирования, чтобы потом легко выбирать нужные? Это конечно правильный, но очень долгий путь. Что подскажут профессионалы? Может есть какой-то не оч объемный (страниц 100 - 200) "тот самый" фолиант, или статья, или блог, или ещё что, который мне тут может помочь? Как-то подтолкнёт в нужном направлении. А далее уже методом проб и ошибок - путём набора опыта.
0
|
|
| 03.06.2020, 16:34 | |
|
Ответы с готовыми решениями:
153
Парадигмы: императивная vs ООП
Подходы к разработке ПО и их связь с ООП |
|
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,631
|
|||
| 16.06.2020, 17:46 | |||
|
1
|
|||
|
Заблокирован
|
|
| 16.06.2020, 17:54 [ТС] | |
|
korvin_,
На самом деле, для меня обсуждение было полезным. Правда, не вполне уверен, что смогу быстро воспользоваться этой пользой) Однако, спасибо! Добавлено через 6 минут Раз уж тут нарекомендовали увесистую подборку книг и тем, не могу не вспомнить, что когда я задал вопрос по "литературе по базам данных", мне кто-то порекомендовал "начать с Дейта". Я его прочитал с большим интересом. Дейт умный чувак. Не жалею. Но, прочитав, я понял, что начинать изучение "баз данных" с этой книги - это преступление против головного мозга, ресурсы которого, да и наше время, имеют свойство быть ограниченными)
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
|
| 16.06.2020, 18:00 | |
|
0
|
|
|
|
||
| 16.06.2020, 18:19 | ||
|
Кто-то же должен делать так как велело само Небо.. Кстати, кто знает, подскажите: на C# можно писать в процедурном стиле? Без ООП? Если можно, то пишите просто, вам же не проект в миллион строк писать. Для этого процедурка подходит. На самом деле процедурное подходит под проекты с любым количеством строк, вопрос в соглашениях.
0
|
||
|
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,631
|
||
| 16.06.2020, 18:21 | ||
|
titan4ik, почитайте Эрика Эванса. Гарантированно с первого раза не усвоите, но никто не запрещает перечитать) Лично мне очень сильно понравилось. Ещё народ Гари Буча сильно хвалит.
Добавлено через 1 минуту
1
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
|||||||||||||||
| 16.06.2020, 18:31 | |||||||||||||||
Максимум на что годится его творчество — вызывать сон. Лучше уж Мейера почитать — и интересней и полезней. Добавлено через 1 минуту Добавлено через 57 секунд
0
|
|||||||||||||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
||
| 16.06.2020, 18:52 | ||
|
0
|
||
|
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,631
|
||||
| 16.06.2020, 19:01 | ||||
|
0
|
||||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
|||
| 16.06.2020, 19:24 | |||
|
Пример: Наша модель - уникальные треугольники с периметром 100. Из данных у нас только длины трёх сторон (задаются/изменяются пользователем). Мы можем валидировать модель только целиком, и валидация включает проверку уникальности (запрос к БД). Что удобней - сеттер с тремя аргументами (длины сторон) или функции (для сохранения в БД и прочих задач) с одним аргументом (невалидированным треугольником)? Добавлено через 11 минут
0
|
|||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
||
| 16.06.2020, 19:30 | ||
|
0
|
||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
|
| 16.06.2020, 19:45 | |
|
p.s. Знание нескольких языков хотя бы на уровне решения учебных задач позволяет отличать ограничения парадигмы от ограничений конкретного языка. А так же отличать код, специфичный для некой парадигмы, от универсального кода. Например, циклы используются в ОО языках, но не являются признаком ОО языка.
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
|||||||||||||||||||
| 16.06.2020, 21:34 | |||||||||||||||||||
|
Добавлено через 7 минут
0
|
|||||||||||||||||||
|
Заблокирован
|
||
| 20.06.2020, 17:30 [ТС] | ||
|
Задал новый безутешный вопрос (Средства C# для реализации механизмов взаимодействия модулей программы) и опять стал читать Роберта Мартина (с самого начала, ибо забыл уже то, что прочитал в начале месяца, когда открыл эту книгу и потом на время забросил) - читаю как новую книгу и что-то даже стало доходить)))
Добавлено через 6 минут И приятно. От чтения книг умных людей, даже если не становишься умнее, то хотя бы получаешь удовольствие.
0
|
||
|
Заблокирован
|
||
| 24.06.2020, 00:03 [ТС] | ||
|
Дочитывая Дядюшку Боба наткнулся на сакраментальную фразу (стр 348)
![]() не, ну чё-то полезное из этой книженции, наверное, нельзя не почерпнуть!(?).
0
|
||
|
Модератор
3138 / 2286 / 469
Регистрация: 26.03.2015
Сообщений: 8,894
|
|
| 24.06.2020, 12:34 | |
|
Это то, о чём я писал в самом начале темы (не нужно использовать паттерны, пока не ...).
0
|
|
|
Заблокирован
|
||
| 25.06.2020, 23:16 [ТС] | ||
|
Эрик Эванс в своей книге "Предметно-ориентированное проектирование..." настойчиво доводит простую мысль (там вначале вообще одни простые мысли, но видать выстраданные и очень важные) о том, что модель предметной области должна соответствовать задаче ее реализации в коде. И вот тут несколько актуальных слов о реализации процедурным языком и языком ООП (стр 66):
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,781
|
|
| 25.06.2020, 23:33 | |
|
titan4ik, а что мистер Эванс говорит про предментно-ориентированные языки (domain specific languages)?
0
|
|
|
Заблокирован
|
|
| 25.06.2020, 23:58 [ТС] | |
|
Пока не знаю) Он исходит из ООП языков. Вроде даже упоминания пока не было (дальше стр 76 не читал).
0
|
|
|
|
||||
| 26.06.2020, 07:50 | ||||
|
1
|
||||
|
Заблокирован
|
|
| 26.06.2020, 10:54 [ТС] | |
|
vantfiles,
Вы цитируете цитаты так, как будто это мои высказывания. Вы же в данном случае не со мной тут дискутируете (я не имею на то должной компетенции), а с Эриком Эвансом. Это хорошо бы отмечать явно.
0
|
|
| 26.06.2020, 10:54 | |
|
Паттерны vs ООП
Основы Java освоены, понятия, парадигмы, ООП. Читать код могу, понятия есть, но все бы ничего, что дальше? Доходчиво разъясните...
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу.
До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
|
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений.
. . .
|
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения
Продолжаю серию постов о дискретно-событийной модели рабочего. . .
|
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы
Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
|
|
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция
Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
|
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
|
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
|
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
|