М.Двач / Программирование

Двач.hk не отвечает.
Вы видите копию треда, сохраненную 1 июня 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

777 Кб, 1030x1200
Проектирование ПО 14 фев 2020, 20:32 1602051 В конец треда | Веб

Какие книги по проектированию стоит почитать?
Какие инструменты и методики хорошо работают?
UML - годнота?
Как не скатиться в ООП-головного мозга?
До какого уровня конкретики стоит доводить проект на бумаге: буквально до набросков реализации или остановиться на описании объектов и их взаимодействия, а остальное уже доводить до ума в процессе имплементации?

Ответы602060602099602125602179602325603083603445603781604686656154675173843448996373

2 14 фев 2020, 20:42 2 1602060

>>1602051 (OP)
Банда четырех
Компилятор и текстовый редактор хорошо работают. Методики -- зависит от предметной области, наверное
Безусловно
Не писать на ООП-языках
Степанов сказал, что реально никто не начинает с классов и объектов, все начинают с алгоритмов. Я доверяю Степанову, он умный мужик, STL придумал как-никак.

Ответы725903

3 14 фев 2020, 21:26 3 1602099

>>1602051 (OP)
Я всё ещё верю, что существуют люди, которые реально сидят и рисуют диаграммки и пишут алгоритмы на "АЛГ НАЧ КОН" перед тем, как запустить IDE. Верю, но никогда их не видел.

Ответы602113609958676009

4 14 фев 2020, 21:34 4 1602113

>>1602099

Ну с алгоритмами ты малость перебрал, но вот рисовать диаграммы взаимодействия - вроде как обычная практика.

Ответы602117

5 14 фев 2020, 21:36 5 1602117

>>1602113
Да, рисуют, но прям задрачивают их единицы.

sage 6 14 фев 2020, 21:44 6 1602125

>>1602051 (OP)
Книги Head first - говно, не читай.

Ответы662243675173

sage 7 14 фев 2020, 22:46 7 1602166

>2020
>UML
>ООП

Ответы602172602173

sage 8 14 фев 2020, 23:03 8 1602172

>>1602166
>>ООП
ФП, да?

9 14 фев 2020, 23:04 9 1602173

>>1602166

А какой хороший курс есть по uml?
(Если мимо будет проходить аноноархитект, то порекомендуй и по bpmn)

10 14 фев 2020, 23:17 10 1602179

>>1602051 (OP)
>UML - годнота?
Только если ты быстро и грамотно на нем пишешь, для грамотных людей которые могут это быстро понять и дать фидбек, ну или для документации.

>До какого уровня конкретики стоит доводить проект на бумаге
Сколько бумагу не марай, все никогда не всех нюансов не предвидишь

11 14 фев 2020, 23:26 11 1602183

Что скажите про "Объектно-ориентированный анализ и проектирование" Гради Буча?

Ответы602198649834

12 14 фев 2020, 23:34 12 1602189

А про ООП все так бугуртят же в основном от того, что решения получаемые им плохо ложатся на современную вычислительную архитектуру? Верно ведь?

Ответы602191602198602232

13 14 фев 2020, 23:36 13 1602191

>>1602189
Нет, не поэтому.

14 14 фев 2020, 23:47 14 1602198

>>1602183
Лично я читал только выше упомянутую "Банда четырех", и методичку курса по ООП, после этого все вопросы по поводу ООП отпали.

>>1602189
главные минусы проседании быстродействие за счет сложной организации программной системы, если меру знать и не городить огороды из патернов, можно элегантно составлять решение задач, не теряя в производительности и сохраняя все плюсы ооп - естественность, понятность, надежность, легкое сопровождение и расширение программы.

Ответы602220

15 15 фев 2020, 00:22 15 1602220

>>1602198
Под сложностью программной системы можно много чего понимать, и далеко не всё будет ухудшать быстродействие

16 15 фев 2020, 00:45 16 1602232

>>1602189
Бугуртят и взамен предлагают такую хуиту, что сложно поверить, что они правда так считают.

> плохо ложатся на современную вычислительную архитектуру
Нормально там всё ложится.

17 15 фев 2020, 05:10 17 1602325

>>1602051 (OP)
Бесполезно читать про это.

18 15 фев 2020, 17:49 18 1603048

А есть вообще какие-то альтернативы объектному подходу в проектировании? Декомпозиция задачи, выделение сущностей с их областями ответственности, иерархическая структура - это ведь используется независимо от того, на функциональном или императивном языке ты пишешь. Это просто естественные способы моделирования сложных систем.

Ответы603058603121

19 15 фев 2020, 17:58 19 1603058

>>1603048
Нет, нету никакой альтернативы. Попытки что-то писать на процедурных или функциональных языках всегда приводят к изобретению "объектного подхода".

> Это просто естественные способы моделирования сложных систем.
This.

20 15 фев 2020, 18:21 20 1603083

>>1602051 (OP)
Ебать наконец-то появился этот тред. Я искренне не понимаю, почему его ещё не было или нет в закрепе. Подписываюсь на тред. Сам пытаюсь вкатиться в архитектуру.
Работаю в небольшом ит отделе небольшое компании над внутренним CRM проектом. Благо подобие архитектуры дал веб фреймворк с которым мы работаем, но в целом архитектуры нет и код в основном пишется там где видится. Постоянные правки связанные с изменением бизнес логики приводят к перепахиванию значительной части не очень большого, но относительно сложного проекта.
Все осложняется тем, что у нас нет ни senior'ов, ни архитекторов, и просто напросто некому подсказать как и что делать.

Вот сейчас сам пытаюсь понемногу вкатиться в ООП и паттерны и нащупать хоть какую-то почву под ногами.

Причём решаемые задачи нашей системы самые классические:
- расчёт зп
- выставление счетов
- работа с товарами
- склад

И если бы у нас работал хоть сколько-нибудь опытный архитектор, то сложность и объём переработок кода сократилась бы в разы.

Ответы603095

21 15 фев 2020, 18:28 21 1603095

>>1603083
На данный момент читаю книгу для даунов или детей, или детей даунов или детей-даунов на refactoring guru.

Ответы610448610538

22 15 фев 2020, 18:38 22 1603121

>>1603048
>объектному подходу
А что это такое? Если это "называть структуры данных так же, как объекты реального мира", то ООП -- это велосипед, ибо так делали еще в Си.
Кстати, аргумент в пользу ООП "ну реальный мир то из объектов состоит а не из функций)))00)" на мой взгляд дурацкий, ибо ООП это не только объекты, но еще и сообщения между ними. В связи с чем у меня возникает вопрос: что нужно курить, чтобы камни начали обмениваться сообщениями с деревьями, ручьи с облаками и т.д.? В ФП объекты -- это типы, и никаких загадочных сообщений нет, есть морфизмы-стрелки -- это функции (выражения). И примеры преобразований одних объектов в другие в реальном мире есть, например, из льда можно сделать пар, достаточно сильно разогрев его, из муки, яиц, соды и других ингредиентов можно сделать пирог и т.д.
Поэтому ООП-бляди зря себе присваивают т.н. "объектный подход", этим все и так пользуются без ООП.

Ответы603132603138649951650153

23 15 фев 2020, 18:45 23 1603132

>>1603121
Зато в ООП это получается наиболее естественно, чем в трудно совместимых с реальным миром идеях об иммутабельности.

Ответы603143

24 15 фев 2020, 18:51 24 1603138

>>1603121
>называть структуры данных так же, как объекты реального мира
Не структуры данных, а объекты
Не реального мира, а предметной области

>так делали еще в Си
Поподробней можно?

>ООП это не только объекты, но еще и сообщения между ними
Не сообщения, а связь

> В ФП объекты -- это типы
У тебя не может быть типа данных Window, следовательно это не объекты, следовательно твои "объекты" - это примитивные типы данных, если же у тебя полноценные структуры и классы, то это уже не ФП

Ответы603141603148

25 15 фев 2020, 18:54 25 1603141

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

мимо

Ответы603445603503607509

26 15 фев 2020, 18:56 26 1603143

>>1603132
ФП бывает не только иммутабельным.

Ответы603149

27 15 фев 2020, 19:00 27 1603148

>>1603138
>Не сообщения, а связь
А связь это что тогда? Очередная неведомая хуйня из мира такого очень похожего на реальный ООП?

Ответы603163

28 15 фев 2020, 19:00 28 1603149

>>1603143
Ага. Называется оно "ООП".

Ответы603200

29 15 фев 2020, 19:14 29 1603163

>>1603148
Нет, связь между объектами это, например, один объект управляет другим

30 15 фев 2020, 19:45 30 1603200

>>1603149
Нет.

31 15 фев 2020, 23:18 31 1603415

ООП - срань.
У нас есть определенное состояние и его мутации. Функциональщина больше подходит для моделирования окружающего мира.
Кстати, было исследование, где в пиндосии ставили эксперименты над студентами. Они куда быстрее врубались в фп, чем другая группа в ООП.

Ответы603443

32 16 фев 2020, 00:10 32 1603443

>>1603415
> Функциональщина больше подходит для моделирования окружающего мира.
Вместо того, чтобы просто изменить объект, создаётся его полная копия, но немного изменённая. При этом старая никуда не девается. Так похоже на реальный мир, да.

> Они куда быстрее врубались в фп, чем другая группа в ООП.
Потому что математика головного мозга. Они такие: "как x = x = 1, если x не равно x + 1"

Ответы603451

33 16 фев 2020, 00:12 33 1603445

>>1602051 (OP)
О, запахло старыми добрыми ООП-тредами, как же я траллил тогда, эх, молодость.

ОП, книги нужно читать самые разные, даже сраного Буча, но они ничего не дадут из коробки. Надо пробовать, пытаться, переосмысливать, возвращаться, перечитывать и так 20 лет.

Один из самых надежных признаков дилетанта (или тролля) - вопли на тему превосходства/голимости ООП/ФП, или, как разновидность, развешивание ярлыков "это не ФП"/"это не ООП". Можно и на ассемблере писать ООП, или на C, как подметил >>1603141-кун. Да, сахара не будет, а таблицы виртуальных методов для полиморфизма придется писать врукопашную - но можно. Прошаренный проектировщик вмегда помнит о главной цели: нам надо управлять рождением и/или развитием конкретной сложной системы, и только успех в решении данной задачи является критерием успеха подхода. ООП очень много дал инженерам в этом смысле, и что немаловажно - отрицательного, что сильно повлияло на вектор развития современных языков.

Ответы603451603501607512

34 16 фев 2020, 00:32 34 1603451

>>1603445
Принадлежность к парадигме определяет то, какими инструментами ты будешь пользоваться при решении определенной проблемы, минимизируя при этом количество кода. В Си можно наверняка сделать и объекты, и монады, и композицию (вообще не факт, но предположим), и потом через них решить задачу, но ты все равно их будешь делать за счет императивных средств вроде прямого управления памятью и т.д. И наоборот, в ФП можно писать императивный код, но прямое обращение к памяти и т.д. ты будешь делать используя средства ФП. В первом случае было бы быстрее (читай -- экономнее в плане количества строк кода) сразу работать с тем, что есть в Си, а во втором случае сразу работать с тем, что дает ФП.
>>1603443
>Потому что математика головного мозга.
Как что-то плохое. Новука та же описывает мир через математические модели. Те новуки, которые не описывают, являются хуитой вроде психоанализа, марксизма и астрологии.

Ответы603452690733

35 16 фев 2020, 00:34 35 1603452

>>1603451
биология не описывает

Ответы603455

36 16 фев 2020, 00:41 36 1603455

>>1603452
Это не совсем так, в некоторых областях биологии широко применяется математика.
Физика тоже не всегда была точной наукой, часть её разделов изначально были описательными.

мимо

37 16 фев 2020, 01:11 37 1603460

1001001100

Ответы603471

sage 38 16 фев 2020, 01:25 38 1603471

>>1603460
100001001.

39 16 фев 2020, 03:31 39 1603501

>>1603445
Виталик Л. прав.

ООП скорее про принцип проектирования, который можно реализовать на чём угодно. В принципе можно сказать, что если у тебя потребность писать в ООП стиле даже не на ООП языках с соответствующим оверхедом, то ООП явно оправдан.

Просто эту концепцию, как и массу других, иногда пытаются приткнуть просто, чтобы была, не понимая, какие проблемы ты решаешь, откуда там сложности берутся и как с ними бороться.

ООП из названия видно, что ориентировано на объекты. Вот когда ты в программе имеешь дело с какими-то сложными объектами, со сложным внутренним состоянием, с большим количеством функций, к ним применимых (завязанных на состояние), особенно когда разнородные, но схожие объекты есть, то ООП подход по отношению к ним оправдан.

Но когда религиозники начинают "всё есть объект" и рожают ООП на пустом месте, то там пиздец начинается. Они не решают проблемы проектирования, а создают их.

Ответы604033

40 16 фев 2020, 03:47 40 1603503

>>1603141
Что такое объект и методы.

У тебя есть объект, то есть структура данных, какая-то область памяти, где хранятся переменные и указатели, ссылка на описание класса объекта, таблицу виртуальных функций и т.п., тут специфика каждого языка. Метод объекта - это самая обычная функция, куда одним из аргументов передаётся указатель на объект. Эта функция просто берёт указатель на объекта, получает переменные оттуда и что-то с ними делает.

Например в питоне этот указатель даже явно в методах указывается, первый параметр, принято его self называть. Чаще принято неявно его передавать, и в функции этот указатель называется обычно this.

Как было в сишечке. Самый яркий пример - функции для работы с файлами. Там два типа функций было. Более показательный f-вариант
FILE *f = fopen(name, attr);
c = fgetc(f) // прочитать следующий символ из открытого файла

В сущности FILE - это какой-то сложный объект. И во все функции ты первым параметром передаёшь указатель на этот объект.

И так можно реализовывать любые объекты.

Можно и самому наследование поддержать, и виртуальные функции, и другое.

По сути: современные языки мультипарадигмовые, сюда идёт развитие. Они не пытаются выжать максимум из одной парадигмы, а больше базу берут от каждой, которой ты можешь пользоваться. Как в конкретном случае удобнее, так и пользуешься.

Питон, JS - они и немного ООП, но немного, и немного ФП.

Общий тренд сейчас - асинхронные инструменты, их запиливают во все языки, async/await. Полезно знать, но это тоже не панацея даже для асинхронных задач. Просто один из принципов проектирования соответствующего сервисного кода.

41 16 фев 2020, 04:09 41 1603507

Ещё соплей, чуть из серии ООП vs ФП.

Суть ООП - есть объект, некая сущность. Настоящий объект это то, что нельзя скопировать, к нему можно только применить методы. Вот как Window, или структура файла, сокета или чего ещё. Скопировать объект - это целая песня, он же может содержать ссылки на другие объекты, как эксклюзивно, как и шареные между другими объектами. В общем случае скопировать объект невозможно. Вот как в реальном мире, где состояние квантовой частицы скопировать невозможно.

ФП опирается больше на математические идеи, где всё есть какое-то выражение, можно всегда скопировать, сохранить и т.п.

Невозможно применить ФП к настоящим объектам, у них просто недетерминированное состояние. ФП не может быть заменой ООП в реально жизни примерно никогда. Вот из-за этих свойств объекта. Но на самом деле это проблема объектов, а не их сильная сторона. Было бы куда проще, если бы объекты было легко клонировать, сохранять и восстанавливать, пересылать по себе. И вот реально надо проектировать так, чтобы максимально уходить от этого "квантового" свойства объектов, это реально убирает массу проблем и открывает массу возможностей. Но возможно далеко не всегда, а когда возможно, не всегда разумно.

42 16 фев 2020, 15:12 42 1603781

>>1602051 (OP)
В ООП языках для говноедов, никакой особой идеи нет, это просто надстройка над процедурным программированием, код - это утверждения МЕНЯЮЩИЕ глобальное состояние программы. В языках для людей код - это выражения. Выражения соответствуют математическим объектами и ОБОЗНАЧАЮТ их величины.

Ответы603788

43 16 фев 2020, 15:16 43 1603788

>>1603781
> В языках для людей код - это выражения.
А ещё в языках для людей зарплата - это борщ.

Ответы603859603865

44 16 фев 2020, 15:59 44 1603859

>>1603788
Содомит

sage 45 16 фев 2020, 16:02 45 1603865

>>1603788
Кто о чём, а РАБотничек на дядю о зарплате.

Ответы603880

46 16 фев 2020, 16:09 46 1603880

>>1603865
Ну точно, борщехлеб.

Ответы603905

56 Кб, 732x566
47 16 фев 2020, 16:21 47 1603905

>>1603880
Харкнул в ебло этому пролетарию.

48 16 фев 2020, 17:43 48 1604033

>>1603501
>Виталик Л. прав.
Я не он (хотя и работал с одним Виталиком Л. в Авито пару лет назад).

>>1603501
>религиозники начинают "всё есть объект" и рожают ООП на пустом месте, то там пиздец начинается
Люто двачую, особенно этот пиздец проявляется при работе с большими объемами данных (вроде текстовых редакторов) и сложными абстрактными структурами (вроде конечных автоматов в компиляторах). Важно уметь увидеть, где подход на пользу, а где во вред, а не совать его везде. Тут еще проблема в том, чаще всего ООП действительно хорош в прикладных задачах уровня крудошлепства; это порождает ложное убеждение, что он хорош всегда и везде.

49 17 фев 2020, 00:24 49 1604686

>>1602051 (OP)
1. Твой пик по шаблонам
2. Patterns of Enterprise Application Architecture
3. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems

Ответы610483

50 19 фев 2020, 09:52 50 1607509

>>1603141
Методы в ООП под капотом работают аналогично сишным функциям, принимающим указатели на структуру. Всегда сркытно первым аргументом идет ссылка на сам объект. В яве так, по-моему.

51 19 фев 2020, 09:56 51 1607512

>>1603445
>ООП очень много дал инженерам в этом смысле, и что немаловажно - отрицательного, что сильно повлияло на вектор развития современных языков.

По подробнее можно? Я только знаю про DOD когда ООП тормозило кеш на убогом соснольно-соснульном железе:

https://www.youtube.com/watch?v=rX0ItVEVjHc

Ответы609529609533

52 20 фев 2020, 21:29 52 1609529

>>1607512
Fragile base class как фундаментальный неустранимый недостаток, к примеру. В итоге современные best practices избегают длинных цепочек наследования, а в некоторых языках наследование реализации вообще недопустимо.

53 20 фев 2020, 21:30 53 1609533

>>1607512
>ООП тормозило
ООП не может "тормозить кэш", это может делать компилятор, не умеющий в оптимизацию.

Ответы609591

54 20 фев 2020, 22:10 54 1609591

>>1609533

Может.
Особенно заметно в плюсах, развесистый ооп вызывает регулярные кэш мисы.
Остальные языки слишком тормозные, что бы это сильно влияло.

Ответы611320

55 21 фев 2020, 10:41 55 1609958

>>1602099
А нахуя их рисовать? Я могу начать за месяц думать над решением задачи, не приступая к написанию кода. Могу долго думать, как это лучше написать. Когда структура более-менее прозрачна, сажусь писать.

Ответы975417996352

56 21 фев 2020, 17:49 56 1610448

>>1603095
Как называется книжка?

57 21 фев 2020, 18:21 57 1610483

>>1604686
Спасибо, почитаю

58 21 фев 2020, 19:22 58 1610538

>>1603095

А ее сливали? Или купил?

59 22 фев 2020, 12:49 59 1611320

>>1609591
>развесистый ооп вызывает регулярные кэш мисы
Это делает не ооп, а конпелятор крестов. ООП - это просто способ записывать программу, а как ее выполнять - вопрос совершенно другой. Тот же раст на этапе конпеляции вытворяет такое, что крестам и не снилось.

60 1 апр 2020, 18:34 60 1648143

А накидайте курсов бесплатных/которые есть на торрентах по архитектуре.
Там чистая, микросервисы, cqrs es
Что-нибудь где эту херь на практике показывают. От статей пухнет голова как от непонятной теории.

61 3 апр 2020, 00:37 61 1648849

Бамп

62 4 апр 2020, 11:47 62 1649834

>>1602183
хорошая книга, стоит читать.

63 4 апр 2020, 13:40 63 1649951

>>1603121
Поэтому от двача нужно отказаться, ну, или заходить раз в месяц, два, после такого текста.

Чел, ООП это альтернатива реальному миру, она не говорит о том, что ООП сделали для объектов реального мира.
>Objects sometimes correspond to things found in the real world

удаляюсь с вашего позволения.

64 4 апр 2020, 17:49 64 1650153

>>1603121
>В связи с чем у меня возникает вопрос: что нужно курить, чтобы камни начали обмениваться сообщениями с деревьями, ручьи с облаками и т.д.?
Ничего курить не нужно, потому что именно так обстоят дела в реальном мире. Звёзды на небе это энергия излучённая в момент Х, которую ты своими рецепторами уловишь и обработаешь к момент Y, причём те картинки что ты увидишь далеко не то что было на самом деле, да и никакого объекта к этому моменту может и не быть, т.е. объект звезда существует только внутри сообщения в твоём мейлбоксе и его свойства сужены до уровня, который твой интерфейс способен обрабатывать.

65 4 апр 2020, 20:28 65 1650234

С ОО-даунами бесполезно спорить и что-то им доказывать.

ООП не дает строгого определения объекта, это открывает огромные возможности для маневрирования. Приводишь в пример очередной костыль-паттерн и в ответ слышишь: КО-КО-КО ЭТО НЕ НАСТОЯЩИЙ ООП. НАСТОЯЩИЙ ООП ЭТО [очередной набор баззвордов вперемешку без какого-либо смысла].

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

Ответы650528

66 5 апр 2020, 11:47 66 1650528

>>1650234
Абстрактный объект на то и абстрактный, что о нём известен только некий набор свойств. Собственно, математика изучением объектов, о которых почти ничего не известно.

67 6 апр 2020, 15:55 67 1651861

test

68 8 апр 2020, 00:21 68 1653121

Как перестать быть программистом и устроиться наконец архитектором? Есть какой роадмап?

Ответы653252

69 8 апр 2020, 10:14 69 1653252

>>1653121
>2020
>архитектор

Разве ещё остались распилочные конторы где есть эта маняпозиция из 90х?

Ответы653826996357

70 8 апр 2020, 23:40 70 1653826

>>1653252

Люся большая контора?

71 11 апр 2020, 14:42 71 1655672

О, как раз хотел спросить про книгу с ОП-пика. Оно еще актуально, или устаревшее говно мамонта?

Ответы656142

72 12 апр 2020, 01:21 72 1656142

>>1655672
Паттерны не устаревают.
Сама корзинка говно по сравнению с бандой четырех, но почему бы и нет.

73 12 апр 2020, 02:17 73 1656154

>>1602051 (OP)

> Какие книги по проектированию стоит почитать?

Точно не из той серии, что на оппике, где на обложке всякие босоногие долбаебы с отвратительной формой стопы (даже мне, фут-фетишисту, блевать хочется).

Я пытался читать Хавьера Design Patterns .NET. НИАСИЛИЛ, каюсь

> Какие инструменты и методики хорошо работают?

Если ты не Senior Solution Arcitect, то тебе это не нужно. А то забьешь себе голову всякой хуйней и будешь потом оборачивать функцию сложения двух чисел в декоратор, который создается фабрикой через прокси, которая в свою очередь создается билдером а над всем этим Abstract Factory ебнуть, сам не зная зачем, но не зря ж книжку читал

> UML - годнота?

Если твой проект будет иметь 100 000+ сущностей, которые будут распределены по 1000 БД, а бизнес логика такая, что даже будучи распределенной поровну в головы целой армии китайцев не поместится, то да. В остальных случаях практически бесполезна.

> Как не скатиться в ООП-головного мозга?

Ты так говоришь, как будто это что-то плохое

> До какого уровня конкретики стоит доводить проект на бумаге: буквально до набросков реализации или остановиться на описании объектов и их взаимодействия, а остальное уже доводить до ума в процессе имплементации?

Обычно это делается так:

1. Тебе объясняют на пальцах то, чего от тебя хотят
2. Тебе все предельно понятно и ты идешь кодить
3. Начинаешь кодить и чет уже не так все понятно
4. Идешь уточнять, тебе уже не так уверенно отвечают на твои вопросы
5. Ты идешь и рисуешь на бумаге схему, как ты понял, что от тебя хотят и несешь показывать со словами "ЭТО ВЫ БЛЯТЬ ХОТИТЕ?"
6. Тебе говорят "НЕТ, БЛЯТЬ НЕ ЭТО!"
7. Ты говоришь "ТАК НАРИСУЙ БЛЯТЬ КАК НАДО!"
8. Тебе рисуют, вроде все понятно, идешь кодить
9. Возвращаешься на шаг 3

73 12 апр 2020, 02:17 73 1656154

>>1602051 (OP)

> Какие книги по проектированию стоит почитать?

Точно не из той серии, что на оппике, где на обложке всякие босоногие долбаебы с отвратительной формой стопы (даже мне, фут-фетишисту, блевать хочется).

Я пытался читать Хавьера Design Patterns .NET. НИАСИЛИЛ, каюсь

> Какие инструменты и методики хорошо работают?

Если ты не Senior Solution Arcitect, то тебе это не нужно. А то забьешь себе голову всякой хуйней и будешь потом оборачивать функцию сложения двух чисел в декоратор, который создается фабрикой через прокси, которая в свою очередь создается билдером а над всем этим Abstract Factory ебнуть, сам не зная зачем, но не зря ж книжку читал

> UML - годнота?

Если твой проект будет иметь 100 000+ сущностей, которые будут распределены по 1000 БД, а бизнес логика такая, что даже будучи распределенной поровну в головы целой армии китайцев не поместится, то да. В остальных случаях практически бесполезна.

> Как не скатиться в ООП-головного мозга?

Ты так говоришь, как будто это что-то плохое

> До какого уровня конкретики стоит доводить проект на бумаге: буквально до набросков реализации или остановиться на описании объектов и их взаимодействия, а остальное уже доводить до ума в процессе имплементации?

Обычно это делается так:

1. Тебе объясняют на пальцах то, чего от тебя хотят
2. Тебе все предельно понятно и ты идешь кодить
3. Начинаешь кодить и чет уже не так все понятно
4. Идешь уточнять, тебе уже не так уверенно отвечают на твои вопросы
5. Ты идешь и рисуешь на бумаге схему, как ты понял, что от тебя хотят и несешь показывать со словами "ЭТО ВЫ БЛЯТЬ ХОТИТЕ?"
6. Тебе говорят "НЕТ, БЛЯТЬ НЕ ЭТО!"
7. Ты говоришь "ТАК НАРИСУЙ БЛЯТЬ КАК НАДО!"
8. Тебе рисуют, вроде все понятно, идешь кодить
9. Возвращаешься на шаг 3

Показать весь текст
Ответы996373

74 19 апр 2020, 19:19 74 1662243

>>1602125
Двачую. Пробовал читать их книгу по C# - чуть не блеванул.

75 3 мая 2020, 08:11 75 1675173

>>1602125
>>не читай.
Конкретно эту рецензировал и рекомендовал Эрих Гамма и какой то второй из банды. Она считается проще и понятнее оригинала. К тому же примеры - на джаве. Опять же надо понимать что хэд фест - это учебник для нубов, а не справочник. Поэтому воды много. В начале первая страница об этом.
>>1602051 (OP)
>>Какие книги по проектированию стоит почитать?
Книги Боба Мартина и Мартина Фаулера наверни.

Ответы675176

76 3 мая 2020, 08:19 76 1675176

>>1675173
>Боба Мартина и Мартина Фаулера
Мошенники, которые зарабатывают тем, что пишут свои мутные книжки и выступают на конференциях где рассказывают о своих бредовых идеях. Удивительно, что кто-то ведется на таких говорящих голов, которые никогда и нигде не работали программистами.

Ответы676032676055

77 4 мая 2020, 11:26 77 1676009

>>1602099
В моей шараге есть такие преподаватели

78 4 мая 2020, 11:59 78 1676032

>>1675176
Кто-то еще ходит учиться в вузик к людям, которые никогда не работали программистами.

79 4 мая 2020, 12:22 79 1676055

>>1675176
Это "не читал, но осуждаю", или ты что-то конкретное сказать можешь?

Ответы683730

80 11 мая 2020, 08:12 80 1683730

>>1676055
>или ты что-то конкретное сказать можешь?
Не может - он ведь тоже никогда не работал программистом.

81 11 мая 2020, 13:20 81 1683866

Помогите с 5 uml-диаграмамми за донат, Украина(((

Ответы683881

82 11 мая 2020, 13:39 82 1683881

>>1683866
Размести объяву о найме джуна без опыта, скидывай как тестовое. у вас же там и так полно программистов за миску борща

Ответы724681

83 16 мая 2020, 19:51 83 1690733

>>1603451
>Те новуки, которые не описывают, являются хуитой вроде психоанализа, марксизма и астрологии
Вообще-то марксизм описывает, если мы про марксистскую экономику говорим. С предсказательной силой там беда, но это общая проблема всех экономических и социологических теорий, а математика на месте.

84 16 июня 2020, 14:55 84 1724681

>>1683881
>Размести объяву о найме джуна без опыта, скидывай как тестовое
Лол, а ведь идея на миллион.

85 17 июня 2020, 00:42 85 1725507

Давайте пертрем за Event Storming. Кто умеет/практикует?

86 17 июня 2020, 11:35 86 1725869

1) На каком этапе надо учить и пробовать применять паттерны, сразу после общих концепций ооп?
2) Как развивать ООП-мышление? Мне сказали, что я все равно пишу структурным подходом, несмотря на использование классов.

87 17 июня 2020, 12:04 87 1725903

>>1602060
толсто

34 Кб, 1166x229
88 30 окт, 00:21 88 1843448

>>1602051 (OP)
Как бы вы спроектировали элегантно?
Есть класс УниверсальныйРисовательТаблиц (УРТ), который пишет наименование объекта и в столбцах его свойства (разных типов). Есть класс Товар, у него свойства: вес, состав, дата изготовления, срок годности, адрес производителя. УРТ может нарисовать каталог таких товаров. Но в магазине хранится другая структура {Товар, цена, количество} , и УРТ должен нарисовать и список таких записей тоже, причем уже не все свойства Товара надо отобразить, а напимер так: наименование, дата изготовления, вес, цена, количество.
Я думал сделать интерфейс, который передается УРТ, из него УРТ может получить массив названий свойств (строк). И еще сделать в интерфейсе метод GetValue(int tovarId, string propertyName), а в реализации этого метода if (propertyName == "состав") { ... }. Но они же разных типов могут быть. Что делать?

Ответы843647843730

89 30 окт, 12:18 89 1843647

>>1843448
Ну и что что разных типов, у тебя будет отдельная реализация этого интерфейса для товара и никогда её не будет использовать для других типов.
Нормальная у тебя идея - Урт может получать (с помощью сеттера) ноль и более интерфейсов "отдаватель списка интересующих полей", поставленных в соответствие с типом, к которому такой отдаватель надо получать.

Это конечно если не хочется вручную выдирать из товара нужные поля и пихать в урт , я бы сделал вручную

90 30 окт, 13:42 90 1843730

>>1843448
View Model

91 9 ноя, 23:16 91 1852244

Есть некая игра на прямоугольной доске. В клетках стоят фигуры разных типов. Если начинать с самой простой реализации, то доска - двумерный массив, а фигуры - целые константы const int A = 0, B = 1... или enum { A, B, C ... }. Тут уже возникает мысль, что фигуры должны уметь себя рисовать, значит надо сделать их классами с методом Draw(), но пока не до этого, будем отделять логику игры, от ее отображения. Далее выясняется, что некоторые фигуры могут быть Левыми и Правыми. Продолжая вариант с перечислениями получаем enum { A, B, CLeft, CRight, DLeft, DRight... }. Тут конечно проблема, если я хочу функцию, меняющую ориентацию фигуры, придется ифами перебирать все типы. Я тут 3 варианта вижу, и все они не очень.

1) Иерархия классов Фигура->СимметричнаяФигура. Надо будет проверять, является ли фигура симметричной. Если является, то кастовать ее к этому типу и отражать. И если у меня нет множественного наследования, я не смогу подобным образом добавить другие свойства.

2) Интерфейсы. Опять надо проверять тип и кастовать. Также для всех Симметричных типов придется накопипастить одинаковую реализацию. Я не знаю как тут не копипастить.

3) Универсальный класс фигуры, в котором есть все свойства всех фигур и методы проверки, реализовано это свойство или нет.

Что лучше, другие варианты?

Ответы852433

92 10 ноя, 10:04 92 1852433

>>1852244
N xor 1

Ответы852694

93 10 ноя, 16:42 93 1852694

>>1852433
Как это мне поможет?

Ответы857463

94 16 ноя, 09:21 94 1857463

>>1852694
по-байтоебски в енаме отвести бит на флаг - симметрична ли фигура или нет, и менять флаг через xor.

95 23 ноя, 11:58 95 1863560

Просто оставлю это здесь

http://www.aosabook.org/en/index.html

96 23 мар, 18:38 96 1975417

>>1609958
Ты наверное архитектуры больше чем Хелоуворда не продумывал.

А вот пришлось как-то писать с нуля кросплатформенное приложение, читающее сенсоры с разных мат.плат. везде свои стандарты, где-то подключено к чипсету напрямую, где-то к SIO, да и везде свои SIO и чипсеты, где-то данные идут по 8бит, где-то по 16, короче, в линуксе одни методы доступа к аппаратуре, в винде другие, короче, заёб полный с этой стандартизацией, чтобы потом не росло как больное дерево.
Надо сначала продумывать и детально и где-то записывать. Чтоб потом следовали четко документации, а не так: "слушай я тут хуйню придумал, давай её заимплементим, потом доделаем и будем её тоже поддерживать", вот именно на этой стадии проект "размазывается" и начинается возня в болоте.

97 25 мар, 08:49 97 1976887

О, тред живой, охуенно. Читаю сейчас книгу с оп-пика в бумаге.
А также купил на рефакторинг.гуру за полторашку весь камтент, копейки же.

98 7 апр, 09:37 98 1988720

Бамп, ну где же вы, архитекторы?

Ответы992346

13 Кб, 336x189
99 10 апр, 22:33 99 1992346

>>1988720
Архитекторов нет, это сверхлюди, которые были до нас. Это великие умы на которых держится Вселенная. Мы только приходим\уходим, чиним\добавляем баги на фундамент залеженный богами.

100 13 апр, 03:35 100 1994307

Обмонадился с ООП лалок

мимо ФП господин

Ответы994311

101 13 апр, 03:56 101 1994311

>>1994307
Иди факториал вычисляй, факториал сам не вычислится

Ответы994321994722

102 13 апр, 05:03 102 1994321

>>1994311
?

103 13 апр, 16:16 103 1994722

>>1994311
Слышал что-то про ленивые вычисления, питушок? Все факториалы объявлены вычисленными наперёд.

104 14 апр, 21:46 104 1996352

>>1609958
значит ничего сложного не писал

105 14 апр, 21:50 105 1996357

>>1653252
сейчас есть техлиды, входящие в отделы архитектуры, сам такой

Задачи отдела архитектуры - разбивка и оценка проекта на этапе pre sale, архитектура и выбор основного стека, запуск проекта, передача постоянному техлиду, поддержка техлида на время существования проекта. Как правило дают пол процета-процент доли прибыли проекта.

198 Кб, 2094x1390
106 14 апр, 22:00 106 1996373

>>1602051 (OP)
>>1656154
из UML самая полезная - sequence diagram, разбираешься ли ты в существующей системе или встраиваешь что-то новое

"изучать UML" тебе нахуй не всралось, идешь да рисуешь её на примере. В пикрелейтед OAuth, глянул на диаграму, сразу понятно что к чему.

Диаграму классов рисуют гораздо реже, в основном если заказчик в документации требует.

Обновить тред
Двач.hk не отвечает.
Вы видите копию треда, сохраненную 1 июня 2021 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.

« /pr/В начало тредаВеб-версияНастройки

/a//b//mu//s//vg/Все доски

Пользуетесь скринридером — пишите, что можно улучшить.
Host-Food.ru — надёжный хостинг от 12 руб/мес | Free DNS
Зеркала М.Двача: m2ch.hk, m2ch.gq, m2ch.cf, m2ch.fapp.in, m2ch.lib, m2chfapiswfw2wcakptqp4o6ltgchvjuxfab7urxlduraomtlnhw5xad.onion