|
Заблокирован
|
|
ООП - парадигмы, паттерны, подходы - кратко и доходчиво03.06.2020, 16:34. Показов 17843. Ответов 153
Метки нет (Все метки)
Я не проф программист и никогда им не буду (старый уже). Потихоньку что-то читал и делал на c# WPF. Получалось, работало, но это были относительно простые штуковины и собственно ОПП там особо не использовалось. Но ту взялся сделать (для себя) более сложную штуковину и увидел, что не сделал ещё и малой части, а уже приходится неоднократно переписывать почти всё заново. Чё-то не очень получается делать ладные "кирпичики", из которых будут строиться блоки программы, а из блоков постепенно усложняться большое здание программы. Постоянно что-то "подпиливаю" в кирпичиках и даже их заменяю. Если так и дальше пойдет, то я эту штуку никогда не сделаю. Оказалось, что это очень не просто правильно сделать модель предметной области, правильно определиться со способами реализациями идей, правильно разбить программу на какие-то правильно взаимодействующие части. К тому же, c# имеет богатый функционал средств. Одно и то же можно сделать по разному. Постоянно встает проблема выбора - и так можно и эдак... Код поначалу всё терпит)
В итоге оказалось, что "что-то не так" - очевидно не хватает каких-то системных знаний. Сама задача достаточно стандартная - анализ исторических данных биржевых курсов акций, выработка и реализация торговых стратегий и т.д. Это интересно, но чувствую, что что-то идёт не так) Забавно, что в рамках процедурного программирования достаточно быстро "слепил" один небольшой кусочек программы и частично оттестировал микроидею. Усложнять далее в рамках процедурного подхода было уже не рационально. Поэтому стал переписывать в рамках подхода ООП. Это заняло гораздо больше времени и никак не закончу). Постоянно что-то переделываю. Честно говоря, не ожидал, что возникнут такие принципиальные трудности. Одного здравого смысла и соображалки явно не достаточно. И шо же делать?) Изучить все парадигмы, подходы, паттерны программирования, чтобы потом легко выбирать нужные? Это конечно правильный, но очень долгий путь. Что подскажут профессионалы? Может есть какой-то не оч объемный (страниц 100 - 200) "тот самый" фолиант, или статья, или блог, или ещё что, который мне тут может помочь? Как-то подтолкнёт в нужном направлении. А далее уже методом проб и ошибок - путём набора опыта.
0
|
|
| 03.06.2020, 16:34 | |
|
Ответы с готовыми решениями:
153
Парадигмы: императивная vs ООП
Подходы к разработке ПО и их связь с ООП |
|
14731 / 9505 / 1363
Регистрация: 21.01.2016
Сообщений: 35,855
|
|||
| 16.06.2020, 17:46 | |||
|
1
|
|||
|
Заблокирован
|
|
| 16.06.2020, 17:54 [ТС] | |
|
korvin_,
На самом деле, для меня обсуждение было полезным. Правда, не вполне уверен, что смогу быстро воспользоваться этой пользой) Однако, спасибо! Добавлено через 6 минут Раз уж тут нарекомендовали увесистую подборку книг и тем, не могу не вспомнить, что когда я задал вопрос по "литературе по базам данных", мне кто-то порекомендовал "начать с Дейта". Я его прочитал с большим интересом. Дейт умный чувак. Не жалею. Но, прочитав, я понял, что начинать изучение "баз данных" с этой книги - это преступление против головного мозга, ресурсы которого, да и наше время, имеют свойство быть ограниченными)
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|
| 16.06.2020, 18:00 | |
|
0
|
|
|
|
||
| 16.06.2020, 18:19 | ||
|
Кто-то же должен делать так как велело само Небо.. Кстати, кто знает, подскажите: на C# можно писать в процедурном стиле? Без ООП? Если можно, то пишите просто, вам же не проект в миллион строк писать. Для этого процедурка подходит. На самом деле процедурное подходит под проекты с любым количеством строк, вопрос в соглашениях.
0
|
||
|
14731 / 9505 / 1363
Регистрация: 21.01.2016
Сообщений: 35,855
|
||
| 16.06.2020, 18:21 | ||
|
titan4ik, почитайте Эрика Эванса. Гарантированно с первого раза не усвоите, но никто не запрещает перечитать) Лично мне очень сильно понравилось. Ещё народ Гари Буча сильно хвалит.
Добавлено через 1 минуту
1
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||||||||||||
| 16.06.2020, 18:31 | |||||||||||||||
Максимум на что годится его творчество — вызывать сон. Лучше уж Мейера почитать — и интересней и полезней. Добавлено через 1 минуту Добавлено через 57 секунд
0
|
|||||||||||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
||
| 16.06.2020, 18:52 | ||
|
0
|
||
|
14731 / 9505 / 1363
Регистрация: 21.01.2016
Сообщений: 35,855
|
||||
| 16.06.2020, 19:01 | ||||
|
0
|
||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|||
| 16.06.2020, 19:24 | |||
|
Пример: Наша модель - уникальные треугольники с периметром 100. Из данных у нас только длины трёх сторон (задаются/изменяются пользователем). Мы можем валидировать модель только целиком, и валидация включает проверку уникальности (запрос к БД). Что удобней - сеттер с тремя аргументами (длины сторон) или функции (для сохранения в БД и прочих задач) с одним аргументом (невалидированным треугольником)? Добавлено через 11 минут
0
|
|||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||
| 16.06.2020, 19:30 | ||
|
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|
| 16.06.2020, 19:45 | |
|
p.s. Знание нескольких языков хотя бы на уровне решения учебных задач позволяет отличать ограничения парадигмы от ограничений конкретного языка. А так же отличать код, специфичный для некой парадигмы, от универсального кода. Например, циклы используются в ОО языках, но не являются признаком ОО языка.
0
|
|
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||||||||||||||||
| 16.06.2020, 21:34 | |||||||||||||||||||
|
Добавлено через 7 минут
0
|
|||||||||||||||||||
|
Заблокирован
|
||
| 20.06.2020, 17:30 [ТС] | ||
|
Задал новый безутешный вопрос (Средства C# для реализации механизмов взаимодействия модулей программы) и опять стал читать Роберта Мартина (с самого начала, ибо забыл уже то, что прочитал в начале месяца, когда открыл эту книгу и потом на время забросил) - читаю как новую книгу и что-то даже стало доходить)))
Добавлено через 6 минут И приятно. От чтения книг умных людей, даже если не становишься умнее, то хотя бы получаешь удовольствие.
0
|
||
|
Заблокирован
|
||
| 24.06.2020, 00:03 [ТС] | ||
|
Дочитывая Дядюшку Боба наткнулся на сакраментальную фразу (стр 348)
![]() не, ну чё-то полезное из этой книженции, наверное, нельзя не почерпнуть!(?).
0
|
||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,900
|
|
| 24.06.2020, 12:34 | |
|
Это то, о чём я писал в самом начале темы (не нужно использовать паттерны, пока не ...).
0
|
|
|
Заблокирован
|
||
| 25.06.2020, 23:16 [ТС] | ||
|
Эрик Эванс в своей книге "Предметно-ориентированное проектирование..." настойчиво доводит простую мысль (там вначале вообще одни простые мысли, но видать выстраданные и очень важные) о том, что модель предметной области должна соответствовать задаче ее реализации в коде. И вот тут несколько актуальных слов о реализации процедурным языком и языком ООП (стр 66):
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|
| 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 освоены, понятия, парадигмы, ООП. Читать код могу, понятия есть, но все бы ничего, что дальше? Доходчиво разъясните...
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства.
Жизнь действительно предъявляет каждому. . .
|
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
|
Лето уходит
kumehtar 17.08.2026
|
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
|
|
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины".
За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html
Задача: . . .
|
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|