Программирование

Ответить в тред Ответить в тред
Check this out!
Проектирование ПО Аноним 14/02/20 Птн 20:32:55 16020511
1022150425.jpg 777Кб, 1030x1200
1030x1200
Какие книги по проектированию стоит почитать?
Какие инструменты и методики хорошо работают?
UML - годнота?
Как не скатиться в ООП-головного мозга?
До какого уровня конкретики стоит доводить проект на бумаге: буквально до набросков реализации или остановиться на описании объектов и их взаимодействия, а остальное уже доводить до ума в процессе имплементации?
Аноним 14/02/20 Птн 20:42:07 16020602
>>1602051 (OP)
Банда четырех
Компилятор и текстовый редактор хорошо работают. Методики -- зависит от предметной области, наверное
Безусловно
Не писать на ООП-языках
Степанов сказал, что реально никто не начинает с классов и объектов, все начинают с алгоритмов. Я доверяю Степанову, он умный мужик, STL придумал как-никак.
Аноним 14/02/20 Птн 21:26:12 16020993
>>1602051 (OP)
Я всё ещё верю, что существуют люди, которые реально сидят и рисуют диаграммки и пишут алгоритмы на "АЛГ НАЧ КОН" перед тем, как запустить IDE. Верю, но никогда их не видел.
Аноним 14/02/20 Птн 21:34:16 16021134
>>1602099

Ну с алгоритмами ты малость перебрал, но вот рисовать диаграммы взаимодействия - вроде как обычная практика.
Аноним 14/02/20 Птн 21:36:13 16021175
>>1602113
Да, рисуют, но прям задрачивают их единицы.
14/02/20 Птн 21:44:42 16021256
14/02/20 Птн 22:46:55 16021667
>2020
>UML
>ООП
14/02/20 Птн 23:03:30 16021728
Аноним 14/02/20 Птн 23:04:38 16021739
>>1602166

А какой хороший курс есть по uml?
(Если мимо будет проходить аноноархитект, то порекомендуй и по bpmn)
Аноним 14/02/20 Птн 23:17:52 160217910
>>1602051 (OP)
>UML - годнота?
Только если ты быстро и грамотно на нем пишешь, для грамотных людей которые могут это быстро понять и дать фидбек, ну или для документации.

>До какого уровня конкретики стоит доводить проект на бумаге
Сколько бумагу не марай, все никогда не всех нюансов не предвидишь
Аноним 14/02/20 Птн 23:26:31 160218311
Что скажите про "Объектно-ориентированный анализ и проектирование" Гради Буча?
Аноним 14/02/20 Птн 23:34:22 160218912
А про ООП все так бугуртят же в основном от того, что решения получаемые им плохо ложатся на современную вычислительную архитектуру? Верно ведь?
Аноним 14/02/20 Птн 23:36:22 160219113
Аноним 14/02/20 Птн 23:47:12 160219814
>>1602183
Лично я читал только выше упомянутую "Банда четырех", и методичку курса по ООП, после этого все вопросы по поводу ООП отпали.

>>1602189
главные минусы проседании быстродействие за счет сложной организации программной системы, если меру знать и не городить огороды из патернов, можно элегантно составлять решение задач, не теряя в производительности и сохраняя все плюсы ооп - естественность, понятность, надежность, легкое сопровождение и расширение программы.
Аноним 15/02/20 Суб 00:22:13 160222015
>>1602198
Под сложностью программной системы можно много чего понимать, и далеко не всё будет ухудшать быстродействие
Аноним 15/02/20 Суб 00:45:36 160223216
>>1602189
Бугуртят и взамен предлагают такую хуиту, что сложно поверить, что они правда так считают.

> плохо ложатся на современную вычислительную архитектуру
Нормально там всё ложится.
Аноним 15/02/20 Суб 05:10:15 160232517
Аноним 15/02/20 Суб 17:49:15 160304818
А есть вообще какие-то альтернативы объектному подходу в проектировании? Декомпозиция задачи, выделение сущностей с их областями ответственности, иерархическая структура - это ведь используется независимо от того, на функциональном или императивном языке ты пишешь. Это просто естественные способы моделирования сложных систем.
Аноним 15/02/20 Суб 17:58:39 160305819
>>1603048
Нет, нету никакой альтернативы. Попытки что-то писать на процедурных или функциональных языках всегда приводят к изобретению "объектного подхода".

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

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

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

И если бы у нас работал хоть сколько-нибудь опытный архитектор, то сложность и объём переработок кода сократилась бы в разы.
Аноним 15/02/20 Суб 18:28:48 160309521
>>1603083
На данный момент читаю книгу для даунов или детей, или детей даунов или детей-даунов на refactoring guru.
Аноним 15/02/20 Суб 18:38:10 160312122
>>1603048
>объектному подходу
А что это такое? Если это "называть структуры данных так же, как объекты реального мира", то ООП -- это велосипед, ибо так делали еще в Си.
Кстати, аргумент в пользу ООП "ну реальный мир то из объектов состоит а не из функций)))00)" на мой взгляд дурацкий, ибо ООП это не только объекты, но еще и сообщения между ними. В связи с чем у меня возникает вопрос: что нужно курить, чтобы камни начали обмениваться сообщениями с деревьями, ручьи с облаками и т.д.? В ФП объекты -- это типы, и никаких загадочных сообщений нет, есть морфизмы-стрелки -- это функции (выражения). И примеры преобразований одних объектов в другие в реальном мире есть, например, из льда можно сделать пар, достаточно сильно разогрев его, из муки, яиц, соды и других ингредиентов можно сделать пирог и т.д.
Поэтому ООП-бляди зря себе присваивают т.н. "объектный подход", этим все и так пользуются без ООП.
Аноним 15/02/20 Суб 18:45:51 160313223
>>1603121
Зато в ООП это получается наиболее естественно, чем в трудно совместимых с реальным миром идеях об иммутабельности.
Аноним 15/02/20 Суб 18:51:13 160313824
>>1603121
>называть структуры данных так же, как объекты реального мира
Не структуры данных, а объекты
Не реального мира, а предметной области

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

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

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

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

мимо
Аноним 15/02/20 Суб 18:56:49 160314326
>>1603132
ФП бывает не только иммутабельным.
Аноним 15/02/20 Суб 19:00:19 160314827
>>1603138
>Не сообщения, а связь
А связь это что тогда? Очередная неведомая хуйня из мира такого очень похожего на реальный ООП?
Аноним 15/02/20 Суб 19:00:20 160314928
>>1603143
Ага. Называется оно "ООП".
Аноним 15/02/20 Суб 19:14:48 160316329
>>1603148
Нет, связь между объектами это, например, один объект управляет другим
Аноним 15/02/20 Суб 19:45:30 160320030
Аноним 15/02/20 Суб 23:18:52 160341531
ООП - срань.
У нас есть определенное состояние и его мутации. Функциональщина больше подходит для моделирования окружающего мира.
Кстати, было исследование, где в пиндосии ставили эксперименты над студентами. Они куда быстрее врубались в фп, чем другая группа в ООП.
Аноним 16/02/20 Вск 00:10:13 160344332
>>1603415
> Функциональщина больше подходит для моделирования окружающего мира.
Вместо того, чтобы просто изменить объект, создаётся его полная копия, но немного изменённая. При этом старая никуда не девается. Так похоже на реальный мир, да.

> Они куда быстрее врубались в фп, чем другая группа в ООП.
Потому что математика головного мозга. Они такие: "как x = x = 1, если x не равно x + 1"
Аноним 16/02/20 Вск 00:12:50 160344533
>>1602051 (OP)
О, запахло старыми добрыми ООП-тредами, как же я траллил тогда, эх, молодость.

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

Один из самых надежных признаков дилетанта (или тролля) - вопли на тему превосходства/голимости ООП/ФП, или, как разновидность, развешивание ярлыков "это не ФП"/"это не ООП". Можно и на ассемблере писать ООП, или на C, как подметил >>1603141-кун. Да, сахара не будет, а таблицы виртуальных методов для полиморфизма придется писать врукопашную - но можно. Прошаренный проектировщик вмегда помнит о главной цели: нам надо управлять рождением и/или развитием конкретной сложной системы, и только успех в решении данной задачи является критерием успеха подхода. ООП очень много дал инженерам в этом смысле, и что немаловажно - отрицательного, что сильно повлияло на вектор развития современных языков.
Аноним 16/02/20 Вск 00:32:38 160345134
>>1603445
Принадлежность к парадигме определяет то, какими инструментами ты будешь пользоваться при решении определенной проблемы, минимизируя при этом количество кода. В Си можно наверняка сделать и объекты, и монады, и композицию (вообще не факт, но предположим), и потом через них решить задачу, но ты все равно их будешь делать за счет императивных средств вроде прямого управления памятью и т.д. И наоборот, в ФП можно писать императивный код, но прямое обращение к памяти и т.д. ты будешь делать используя средства ФП. В первом случае было бы быстрее (читай -- экономнее в плане количества строк кода) сразу работать с тем, что есть в Си, а во втором случае сразу работать с тем, что дает ФП.
>>1603443
>Потому что математика головного мозга.
Как что-то плохое. Новука та же описывает мир через математические модели. Те новуки, которые не описывают, являются хуитой вроде психоанализа, марксизма и астрологии.
Аноним 16/02/20 Вск 00:34:29 160345235
>>1603451
биология не описывает
Аноним 16/02/20 Вск 00:41:22 160345536
>>1603452
Это не совсем так, в некоторых областях биологии широко применяется математика.
Физика тоже не всегда была точной наукой, часть её разделов изначально были описательными.

мимо
Аноним 16/02/20 Вск 01:11:44 160346037
1001001100
16/02/20 Вск 01:25:51 160347138
Аноним 16/02/20 Вск 03:31:35 160350139
>>1603445
Виталик Л. прав.

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

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

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

Но когда религиозники начинают "всё есть объект" и рожают ООП на пустом месте, то там пиздец начинается. Они не решают проблемы проектирования, а создают их.
Аноним 16/02/20 Вск 03:47:07 160350340
>>1603141
Что такое объект и методы.

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

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

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

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

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

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

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

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

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


Аноним 16/02/20 Вск 04:09:13 160350741
Ещё соплей, чуть из серии ООП vs ФП.

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

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

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



Аноним 16/02/20 Вск 15:12:14 160378142
>>1602051 (OP)
В ООП языках для говноедов, никакой особой идеи нет, это просто надстройка над процедурным программированием, код - это утверждения МЕНЯЮЩИЕ глобальное состояние программы. В языках для людей код - это выражения. Выражения соответствуют математическим объектами и ОБОЗНАЧАЮТ их величины.
Аноним 16/02/20 Вск 15:16:24 160378843
>>1603781
> В языках для людей код - это выражения.
А ещё в языках для людей зарплата - это борщ.
Аноним 16/02/20 Вск 15:59:39 160385944
16/02/20 Вск 16:02:22 160386545
>>1603788
Кто о чём, а РАБотничек на дядю о зарплате.
Аноним 16/02/20 Вск 16:09:31 160388046
>>1603865
Ну точно, борщехлеб.
Аноним 16/02/20 Вск 16:21:55 160390547
5BECB4E9-AA6D-4[...].jpeg 56Кб, 732x566
732x566
>>1603880
Харкнул в ебло этому пролетарию.
Аноним 16/02/20 Вск 17:43:17 160403348
>>1603501
>Виталик Л. прав.
Я не он (хотя и работал с одним Виталиком Л. в Авито пару лет назад).

>>1603501
>религиозники начинают "всё есть объект" и рожают ООП на пустом месте, то там пиздец начинается
Люто двачую, особенно этот пиздец проявляется при работе с большими объемами данных (вроде текстовых редакторов) и сложными абстрактными структурами (вроде конечных автоматов в компиляторах). Важно уметь увидеть, где подход на пользу, а где во вред, а не совать его везде. Тут еще проблема в том, чаще всего ООП действительно хорош в прикладных задачах уровня крудошлепства; это порождает ложное убеждение, что он хорош всегда и везде.
Аноним 17/02/20 Пнд 00:24:57 160468649
>>1602051 (OP)
1. Твой пик по шаблонам
2. Patterns of Enterprise Application Architecture
3. Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems
Аноним 19/02/20 Срд 09:52:44 160750950
>>1603141
Методы в ООП под капотом работают аналогично сишным функциям, принимающим указатели на структуру. Всегда сркытно первым аргументом идет ссылка на сам объект. В яве так, по-моему.
Аноним 19/02/20 Срд 09:56:32 160751251
>>1603445
>ООП очень много дал инженерам в этом смысле, и что немаловажно - отрицательного, что сильно повлияло на вектор развития современных языков.

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

https://www.youtube.com/watch?v=rX0ItVEVjHc
Аноним 20/02/20 Чтв 21:29:39 160952952
>>1607512
Fragile base class как фундаментальный неустранимый недостаток, к примеру. В итоге современные best practices избегают длинных цепочек наследования, а в некоторых языках наследование реализации вообще недопустимо.
Аноним 20/02/20 Чтв 21:30:57 160953353
>>1607512
>ООП тормозило
ООП не может "тормозить кэш", это может делать компилятор, не умеющий в оптимизацию.
Аноним 20/02/20 Чтв 22:10:30 160959154
>>1609533

Может.
Особенно заметно в плюсах, развесистый ооп вызывает регулярные кэш мисы.
Остальные языки слишком тормозные, что бы это сильно влияло.
Аноним 21/02/20 Птн 10:41:43 160995855
>>1602099
А нахуя их рисовать? Я могу начать за месяц думать над решением задачи, не приступая к написанию кода. Могу долго думать, как это лучше написать. Когда структура более-менее прозрачна, сажусь писать.
Аноним 21/02/20 Птн 17:49:05 161044856
>>1603095
Как называется книжка?
Аноним 21/02/20 Птн 18:21:59 161048357
Аноним 21/02/20 Птн 19:22:39 161053858
>>1603095

А ее сливали? Или купил?
Аноним 22/02/20 Суб 12:49:17 161132059
>>1609591
>развесистый ооп вызывает регулярные кэш мисы
Это делает не ооп, а конпелятор крестов. ООП - это просто способ записывать программу, а как ее выполнять - вопрос совершенно другой. Тот же раст на этапе конпеляции вытворяет такое, что крестам и не снилось.
Аноним 01/04/20 Срд 18:34:53 164814360
А накидайте курсов бесплатных/которые есть на торрентах по архитектуре.
Там чистая, микросервисы, cqrs es
Что-нибудь где эту херь на практике показывают. От статей пухнет голова как от непонятной теории.
Аноним 03/04/20 Птн 00:37:58 164884961
Бамп
Аноним 04/04/20 Суб 11:47:34 164983462
>>1602183
хорошая книга, стоит читать.
Аноним 04/04/20 Суб 13:40:12 164995163
>>1603121
Поэтому от двача нужно отказаться, ну, или заходить раз в месяц, два, после такого текста.

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

удаляюсь с вашего позволения.
Аноним 04/04/20 Суб 17:49:23 165015364
>>1603121
>В связи с чем у меня возникает вопрос: что нужно курить, чтобы камни начали обмениваться сообщениями с деревьями, ручьи с облаками и т.д.?
Ничего курить не нужно, потому что именно так обстоят дела в реальном мире. Звёзды на небе это энергия излучённая в момент Х, которую ты своими рецепторами уловишь и обработаешь к момент Y, причём те картинки что ты увидишь далеко не то что было на самом деле, да и никакого объекта к этому моменту может и не быть, т.е. объект звезда существует только внутри сообщения в твоём мейлбоксе и его свойства сужены до уровня, который твой интерфейс способен обрабатывать.
Аноним 04/04/20 Суб 20:28:30 165023465
С ОО-даунами бесполезно спорить и что-то им доказывать.

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

Очень похоже на ситуацию с верунами, которые по разному интерпретируют писания троллей и даунов из прошлых веков.
Аноним 05/04/20 Вск 11:47:23 165052866
>>1650234
Абстрактный объект на то и абстрактный, что о нём известен только некий набор свойств. Собственно, математика изучением объектов, о которых почти ничего не известно.
Аноним 06/04/20 Пнд 15:55:50 165186167
test
Аноним 08/04/20 Срд 00:21:24 165312168
Как перестать быть программистом и устроиться наконец архитектором? Есть какой роадмап?
Аноним 08/04/20 Срд 10:14:40 165325269
>>1653121
>2020
>архитектор

Разве ещё остались распилочные конторы где есть эта маняпозиция из 90х?
Аноним 08/04/20 Срд 23:40:30 165382670
>>1653252

Люся большая контора?
Аноним 11/04/20 Суб 14:42:00 165567271
О, как раз хотел спросить про книгу с ОП-пика. Оно еще актуально, или устаревшее говно мамонта?
Аноним 12/04/20 Вск 01:21:45 165614272
>>1655672
Паттерны не устаревают.
Сама корзинка говно по сравнению с бандой четырех, но почему бы и нет.
Аноним 12/04/20 Вск 02:17:21 165615473
>>1602051 (OP)

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

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

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

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

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

> UML - годнота?

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

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

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

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

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

1. Тебе объясняют на пальцах то, чего от тебя хотят
2. Тебе все предельно понятно и ты идешь кодить
3. Начинаешь кодить и чет уже не так все понятно
4. Идешь уточнять, тебе уже не так уверенно отвечают на твои вопросы
5. Ты идешь и рисуешь на бумаге схему, как ты понял, что от тебя хотят и несешь показывать со словами "ЭТО ВЫ БЛЯТЬ ХОТИТЕ?"
6. Тебе говорят "НЕТ, БЛЯТЬ НЕ ЭТО!"
7. Ты говоришь "ТАК НАРИСУЙ БЛЯТЬ КАК НАДО!"
8. Тебе рисуют, вроде все понятно, идешь кодить
9. Возвращаешься на шаг 3
Аноним 19/04/20 Вск 19:19:01 166224374
>>1602125
Двачую. Пробовал читать их книгу по C# - чуть не блеванул.
Аноним 03/05/20 Вск 08:11:45 167517375
>>1602125
>>не читай.
Конкретно эту рецензировал и рекомендовал Эрих Гамма и какой то второй из банды. Она считается проще и понятнее оригинала. К тому же примеры - на джаве. Опять же надо понимать что хэд фест - это учебник для нубов, а не справочник. Поэтому воды много. В начале первая страница об этом.
>>1602051 (OP)
>>Какие книги по проектированию стоит почитать?
Книги Боба Мартина и Мартина Фаулера наверни.
Аноним 03/05/20 Вск 08:19:08 167517676
>>1675173
>Боба Мартина и Мартина Фаулера
Мошенники, которые зарабатывают тем, что пишут свои мутные книжки и выступают на конференциях где рассказывают о своих бредовых идеях. Удивительно, что кто-то ведется на таких говорящих голов, которые никогда и нигде не работали программистами.
Аноним 04/05/20 Пнд 11:26:34 167600977
>>1602099
В моей шараге есть такие преподаватели
Аноним 04/05/20 Пнд 11:59:32 167603278
>>1675176
Кто-то еще ходит учиться в вузик к людям, которые никогда не работали программистами.
Аноним 04/05/20 Пнд 12:22:52 167605579
>>1675176
Это "не читал, но осуждаю", или ты что-то конкретное сказать можешь?
Аноним 11/05/20 Пнд 08:12:50 168373080
>>1676055
>или ты что-то конкретное сказать можешь?
Не может - он ведь тоже никогда не работал программистом.
Аноним 11/05/20 Пнд 13:20:45 168386681
Помогите с 5 uml-диаграмамми за донат, Украина(((
Аноним 11/05/20 Пнд 13:39:16 168388182
>>1683866
Размести объяву о найме джуна без опыта, скидывай как тестовое. у вас же там и так полно программистов за миску борща
Аноним 16/05/20 Суб 19:51:57 169073383
>>1603451
>Те новуки, которые не описывают, являются хуитой вроде психоанализа, марксизма и астрологии
Вообще-то марксизм описывает, если мы про марксистскую экономику говорим. С предсказательной силой там беда, но это общая проблема всех экономических и социологических теорий, а математика на месте.
Аноним 16/06/20 Втр 14:55:07 172468184
>>1683881
>Размести объяву о найме джуна без опыта, скидывай как тестовое
Лол, а ведь идея на миллион.
Аноним 17/06/20 Срд 00:42:20 172550785
Давайте пертрем за Event Storming. Кто умеет/практикует?
Аноним 17/06/20 Срд 11:35:54 172586986
1) На каком этапе надо учить и пробовать применять паттерны, сразу после общих концепций ооп?
2) Как развивать ООП-мышление? Мне сказали, что я все равно пишу структурным подходом, несмотря на использование классов.
Аноним 17/06/20 Срд 12:04:55 172590387
Аноним 30/10/20 Птн 00:21:32 184344888
image.png 34Кб, 1166x229
1166x229
>>1602051 (OP)
Как бы вы спроектировали элегантно?
Есть класс УниверсальныйРисовательТаблиц (УРТ), который пишет наименование объекта и в столбцах его свойства (разных типов). Есть класс Товар, у него свойства: вес, состав, дата изготовления, срок годности, адрес производителя. УРТ может нарисовать каталог таких товаров. Но в магазине хранится другая структура {Товар, цена, количество} , и УРТ должен нарисовать и список таких записей тоже, причем уже не все свойства Товара надо отобразить, а напимер так: наименование, дата изготовления, вес, цена, количество.
Я думал сделать интерфейс, который передается УРТ, из него УРТ может получить массив названий свойств (строк). И еще сделать в интерфейсе метод GetValue(int tovarId, string propertyName), а в реализации этого метода if (propertyName == "состав") { ... }. Но они же разных типов могут быть. Что делать?
Аноним 30/10/20 Птн 12:18:19 184364789
>>1843448
Ну и что что разных типов, у тебя будет отдельная реализация этого интерфейса для товара и никогда её не будет использовать для других типов.
Нормальная у тебя идея - Урт может получать (с помощью сеттера) ноль и более интерфейсов "отдаватель списка интересующих полей", поставленных в соответствие с типом, к которому такой отдаватель надо получать.

Это конечно если не хочется вручную выдирать из товара нужные поля и пихать в урт , я бы сделал вручную
Аноним 30/10/20 Птн 13:42:54 184373090
Аноним 09/11/20 Пнд 23:16:31 185224491
Есть некая игра на прямоугольной доске. В клетках стоят фигуры разных типов. Если начинать с самой простой реализации, то доска - двумерный массив, а фигуры - целые константы const int A = 0, B = 1... или enum { A, B, C ... }. Тут уже возникает мысль, что фигуры должны уметь себя рисовать, значит надо сделать их классами с методом Draw(), но пока не до этого, будем отделять логику игры, от ее отображения. Далее выясняется, что некоторые фигуры могут быть Левыми и Правыми. Продолжая вариант с перечислениями получаем enum { A, B, CLeft, CRight, DLeft, DRight... }. Тут конечно проблема, если я хочу функцию, меняющую ориентацию фигуры, придется ифами перебирать все типы. Я тут 3 варианта вижу, и все они не очень.

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

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

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

Что лучше, другие варианты?
Аноним 10/11/20 Втр 10:04:02 185243392
Аноним 10/11/20 Втр 16:42:37 185269493
>>1852433
Как это мне поможет?
Аноним 16/11/20 Пнд 09:21:42 185746394
>>1852694
по-байтоебски в енаме отвести бит на флаг - симметрична ли фигура или нет, и менять флаг через xor.
Аноним 23/11/20 Пнд 11:58:03 186356095
Аноним 23/03/21 Втр 18:38:07 197541796
>>1609958
Ты наверное архитектуры больше чем Хелоуворда не продумывал.

А вот пришлось как-то писать с нуля кросплатформенное приложение, читающее сенсоры с разных мат.плат. везде свои стандарты, где-то подключено к чипсету напрямую, где-то к SIO, да и везде свои SIO и чипсеты, где-то данные идут по 8бит, где-то по 16, короче, в линуксе одни методы доступа к аппаратуре, в винде другие, короче, заёб полный с этой стандартизацией, чтобы потом не росло как больное дерево.
Надо сначала продумывать и детально и где-то записывать. Чтоб потом следовали четко документации, а не так: "слушай я тут хуйню придумал, давай её заимплементим, потом доделаем и будем её тоже поддерживать", вот именно на этой стадии проект "размазывается" и начинается возня в болоте.
Аноним 25/03/21 Чтв 08:49:47 197688797
О, тред живой, охуенно. Читаю сейчас книгу с оп-пика в бумаге.
А также купил на рефакторинг.гуру за полторашку весь камтент, копейки же.
Аноним 07/04/21 Срд 09:37:38 198872098
Бамп, ну где же вы, архитекторы?
Аноним 10/04/21 Суб 22:33:53 199234699
9b41b41d3eec3c2[...].jpg 13Кб, 336x189
336x189
>>1988720
Архитекторов нет, это сверхлюди, которые были до нас. Это великие умы на которых держится Вселенная. Мы только приходим\уходим, чиним\добавляем баги на фундамент залеженный богами.
Аноним 13/04/21 Втр 03:35:32 1994307100
Обмонадился с ООП лалок

мимо ФП господин
Аноним 13/04/21 Втр 03:56:26 1994311101
>>1994307
Иди факториал вычисляй, факториал сам не вычислится
Аноним 13/04/21 Втр 05:03:57 1994321102
Аноним 13/04/21 Втр 16:16:12 1994722103
>>1994311
Слышал что-то про ленивые вычисления, питушок? Все факториалы объявлены вычисленными наперёд.
Аноним 14/04/21 Срд 21:46:16 1996352104
>>1609958
значит ничего сложного не писал
Аноним 14/04/21 Срд 21:50:15 1996357105
>>1653252
сейчас есть техлиды, входящие в отделы архитектуры, сам такой

Задачи отдела архитектуры - разбивка и оценка проекта на этапе pre sale, архитектура и выбор основного стека, запуск проекта, передача постоянному техлиду, поддержка техлида на время существования проекта. Как правило дают пол процета-процент доли прибыли проекта.
Аноним 14/04/21 Срд 22:00:37 1996373106
image.png 198Кб, 2094x1390
2094x1390
>>1602051 (OP)
>>1656154
из UML самая полезная - sequence diagram, разбираешься ли ты в существующей системе или встраиваешь что-то новое

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

Диаграму классов рисуют гораздо реже, в основном если заказчик в документации требует.
Настройки X
Ответить в тред X
15000
Макс объем: 40Mб, макс кол-во файлов: 4
Кликни/брось файл/ctrl-v
Стикеры X
Избранное / Топ тредов