Главная Настройка Mobile Контакты NSFW Каталог Пожертвования Купить пасскод Pics Adult Pics API Архив Реквест доски Каталог стикеров Реклама
Доски


[Ответить в тред] Ответить в тред

Check this out!


[Назад][Обновить тред][Вниз][Каталог] [ Автообновление ] 181 | 29 | 42
Назад Вниз Каталог Обновить

ООП и пиздец вокруг него №3 Аноним 25/05/17 Чтв 01:46:54  996015  
Q0vFcHd.png (151Кб, 1948x858)
Santa Interview[...].jpg (61Кб, 600x393)
fault-tolerance.png (144Кб, 640x320)
Добро пожаловать, анон. В этом треде Грэди Буч обильно инкапсулирует на лицо твоей мамке, а Алан Кей давно уже полиморфировал, глядя на результат наследования его идей хитрым Страуструпом. Душисто пахнет свежим шашлыком смуглый анус старого джявиста Сандхира, уставшего конвертировать XML в эксепшены абстрактной фабрикой виртуальных фасольных компонент; функциональные шкальники декламируют друг другу Википедию по ролям, и так далее, и тому подобное. А мы продолжаем выяснять: что же такое ООП, зачем оно явилось в наш мир, за что это нам и что нам за это будет.

Тред #2: >>986149 (OP)
Тред #1: >>979641 (OP)
Аноним 25/05/17 Чтв 11:06:59  996103
> конвертировать XML в эксепшены абстрактной фабрикой виртуальных фасольных компонент
Обкакался с этого.
Аноним 25/05/17 Чтв 15:32:19  996194
ООП позволяет спрятать внутри себя говнище, а на поверхности ты дергаешь только рычажки у объекта.
Называется это модульностью за счет инкапсуляции.

В чисто процедурном языке такое достигается только по соглашениям (то есть никак).

В ФП - игрушка для антиглоров
Аноним 25/05/17 Чтв 15:36:35  996196
go2.jpg (73Кб, 700x526)
javascript.jpg (108Кб, 960x504)
>>996194
Другая фишка, что принято дробить объект по его логической функции - то есть делает что-то одно, и все эти сущности группировать по логике (в подпакеты).

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

Либо ты растешь как специалист и осиливаешь ООП, либо сиди на всяких го или питонах как чмо
Аноним 25/05/17 Чтв 16:06:42  996209
>>996196
В Питоне есть и активно используется ООП , не гони.
Аноним 25/05/17 Чтв 16:08:26  996211
>>996194
>В чисто процедурном языке такое достигается только по соглашениям
В сишке запросто делается через opaque pointer.
Аноним 25/05/17 Чтв 16:27:48  996215
>>996211
ну я рад что он эволюционирует
Аноним 25/05/17 Чтв 16:29:03  996216
>>996209
Не юзал активно, как показался они юзают там не сам ооп, а возможность писать через оператор точка.
По большому счету, динамическому языку ООП нах не всралась
Аноним 26/05/17 Птн 09:43:11  996474
Шурик-1965-1.jpg (239Кб, 600x800)
Шурик-1965-2.png (37Кб, 568x379)
Шурик-1965-3.png (31Кб, 563x326)
Шурик-1965-4.jpg (213Кб, 600x800)
>>996216
Она никому и никогда не всралась, вон Шурик из комедии Гайдая спокойно работал себе в НИИ, на Фортране херачил.

Я уже говорил как-то, что суть ООП заключается в том, чтобы затруднить миграцию с венды. А не в мифическом RAII/DI, которые что сами наросли.
Аноним 26/05/17 Птн 13:05:40  996516
>>996474
>чтобы затруднить миграцию с венды
Нехера у тебя обострение

Суть ООП изолировать логику модуля от внешнего влияния, а наружу вытащить только то что нужно.

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

Круто? Конечно. Осталось тебе только осилить это.
Аноним 26/05/17 Птн 13:16:13  996529
>>996516
Это все ненужно.
Аноним 26/05/17 Птн 13:16:23  996530
>>996516
>изолировать логику модуля от внешнего влияния
Это суть любого грамотного подхода при программировании в языках поддерживающих ту, или иную модульность, будь то h-фалы в сишке, модули в Модуле, объекты в пхп.

Суть ООП совершенно в другом.
Аноним 26/05/17 Птн 13:16:34  996531
> ООП же тебе говорит - чувак, вот тебе все что надо это три твоих метода, остальное это там черный ящик у меня

Мама тебя тесты не учила писать? Черный ящик требуется покрывать тестами (интеграционных на интерфейсы мало, тут рот не открывай) и ты начинаешь бороться с ООП, ломать инкапсуляцию, а изо рта у тебя течет пена. Объектная парадигма, пропагандирующая черный ящик - мина замедленного действия. Код без тестов - лютое говно, которое невозможно поддерживать.
Аноним 26/05/17 Птн 13:19:44  996537
>>996531
>тесты
Не нужны.
>Код без тестов - лютое говно, которое невозможно поддерживать.
Если ты дебил и говнокодер - то несомненно.
Аноним 26/05/17 Птн 13:23:01  996538
>>996537

Тесты не нужны, для мамкиных борщехлебов, типа тебя.

Код который пишут больше одного человека - НАДО покрывать тестами, чтобы Васян за столом, не вникая в твое говно, мог внести правку и не сломать все к хуям собачьим.
Аноним 26/05/17 Птн 13:26:32  996540
>>996538
>НАДО ЯСКОЗАЛ
Ясно.
>Васян за столом
Просто Васяны не нужны.
Ничего личного, Васян, просто смирись.
Аноним 26/05/17 Птн 13:27:42  996543
>>996538
Тесты нужны, чтобы после того как Васян сломал код, покрытый тестом, это стало очевидным.
Аноним 26/05/17 Птн 13:32:09  996546
>>996540

В сракотан тебе ебал. #аргумент.
Аноним 26/05/17 Птн 13:34:02  996550
все ясно.jpg (105Кб, 800x450)
>>996546
Аноним 26/05/17 Птн 13:35:54  996552
>>996543

И пофиксил.

Бтв, открытые классы с инкапсуляцией данных прекрасно тестируются и лишены недостатка «20 приватных методов»
Аноним 26/05/17 Птн 13:37:47  996554
>>996552
>Васян
>пофиксил.
Спасибо, но нет.
Идите, пожалуйста, нахуй на мороз.
Аноним 26/05/17 Птн 13:42:47  996557
>>996554

Объясняю тупому еще раз:

> :3 <=======|
> :3=====|
> :3=|
> :3=====|
> :3 <=======|

Где :3 - твой сракотан, <=======| - МПХ

Понял?
Аноним 26/05/17 Птн 13:44:27  996560
>>996557
Ты гофер пидор что ли?
Аноним 26/05/17 Птн 14:18:13  996588
>>996474
>Я уже говорил как-то, что суть ООП заключается в том, чтобы затруднить миграцию с венды.
Удваиваю.

Алсо, угорел тут ночью по Rust.
Выглядит как годнота.
Аноним 26/05/17 Птн 14:24:38  996593
>>996588
>Выглядит как говнота.
Согласен с тобой.
Аноним 26/05/17 Птн 14:27:37  996594
1123cf8ac86ed47[...].png (792Кб, 648x794)
>>996593
Обнаружен поехавший срущий питух.
Аноним 26/05/17 Птн 14:29:43  996595
>>996594
Колчанька, пожалуйста.
Аноним 26/05/17 Птн 15:09:35  996616
>>996529
>Это все ненужно.
Гофер??
Аноним 26/05/17 Птн 15:12:49  996618
>>996530
Это называется инкапсуляция и это ВНИМАНИЕ часть ООП.
И чаще именно без ооп пишут кишками наружу, поэтому ООП уже де-факто модульнее чем любое процедурное говнище.
Аноним 26/05/17 Птн 15:15:01  996620
>>996531
Как минимум завозят рефлексию, но вы еще это не проходили (а на жабе вообще мутузят байткой как хотят).
Аноним 26/05/17 Птн 15:17:29  996621
>>996594
Гофер детектед, лол
Аноним 26/05/17 Птн 15:37:49  996642
>>996618
>инкапсуляция часть ООП
Ага, значит питон - не ООП?

>поэтому ООП уже де-факто модульнее
На ООП можно точно так же спокойно нахуячить паблик методов и паблик свойств.

Сдуру можно и хуй сломать. Дело, в основном, не в языке, а в прослойке между клавиатурой и стулом. Даже на коболе можно писать грамотно.
Аноним 26/05/17 Птн 16:04:04  996646
>>996620
>>996620

Рассуждаю с позиции интерпретируемой параши, где рефлексия - частный случай метапрограммирования, которым обмазаться проще простого. И бтв, ломать инкапсуляцию - в т.ч. модификацией и/или отслеживанием методов - один хрен костыль, ведущий к избытку кода что-ли.
Аноним 26/05/17 Птн 16:07:50  996648
>>996642
>Ага, значит питон - не ООП?
Ну да, питон это язык, а ооп парадигма.
Аноним 26/05/17 Птн 16:39:02  996653
>>996642
>инкапсуляция часть ООП
часть, одна из частей...

>Ага, значит питон - не ООП?
сам питон не ООП, а вот в нем ООП есть, кривой правда
Аноним 26/05/17 Птн 16:40:00  996655
>>996642
>На ООП можно точно так же спокойно нахуячить паблик методов и паблик свойств.

Можно и ляшку за машку, если ты уж решил срать в коде, то сделать это можно 100500 способами и без ООП
Аноним 26/05/17 Птн 17:29:33  996662
>>996655
Аргументация анона - ООП модульнее остальных. Если сказал модульнее - то аргументируй на сколько и в каких единицах измеряется. Пока что это был беспруфный вскукарек, ибо при любой парадигме срется в код легко. Взять ранний PHP, вроде бы ООП есть, а модульность при этом никакая.

Инкапсуляция вообще создана не для сокрытия всякой хуйни и уж тем более не для изолирования чего-то там от внешнего влияния. Наоборот, она изолирует весь внешний код от деталей реализации конкретной функциональности. Вот это и есть настоящая инкапсуляция, а не эти ваши privatы-хуяты. И это достигается не в результате использования той, или иной парадигмы, а трудом программиста.
Аноним 26/05/17 Птн 17:32:36  996664
>>996662
Ты случаем не тот психопат гофер, который несет постоянно абстрактную хуйню?
Аноним 26/05/17 Птн 18:05:42  996665
>>996664
Нет, я другой. Но ведь я не несу хуйню, люди в целом неправильно понимают некоторые вещи, например инкапсуляцию как сокрытие всего и вся, и из-за этого абстракции начинают протекать.
Аноним 26/05/17 Птн 18:12:27  996670
Эссенция инкапсуляции в сокрытии объектов внутри объектов.
Аноним 26/05/17 Птн 18:28:25  996675
Кто мне пояснит разницу между виртуальным и статическим методом?
Аноним 26/05/17 Птн 19:21:19  996691
>>996675
Виртуальный метод - метод объекта.
Когда ты его вызываешь, программа смотрит в таблицу методов объекта, достаёт ссылку на конкретную реализацию и исполняет его.

Статический метод - это метод класса. Он не имеет доступа к полям объектов. Для его вызова не нужен объект. Компилятор сразу вставляет ссылку на него в маш.код при компиляции, т.к. такой метод нельзя перегрузить.
Аноним 26/05/17 Птн 19:26:49  996693
>>996691
Спасибо, вроде все ясно понятно для меня.
Аноним 26/05/17 Птн 20:57:46  996724
>>996588
Да что ты говоришь.
Аноним 26/05/17 Птн 21:07:21  996732
Почему вы только переливаете из пустого в порожнее, но не прибегаете к примерам из реальной жизни? К примеру вот задачка, её можно решить как с помощью ООП, так и с помощью ФП, а потом посмотреть какое решение наиболее читабельное и расширяемое (легко ли добавлять новые виды скидок или модифицировать существующие).

Есть продукты A, B, C, D, E, F, G, H, I, J, K, L, M. Каждый продукт стоит определенную сумму.
Есть набор правил расчета итоговой суммы:
Если одновременно выбраны А и B, то их суммарная стоимость уменьшается на 10% (для каждой пары А и B)
Если одновременно выбраны D и E, то их суммарная стоимость уменьшается на 5% (для каждой пары D и E)
Если одновременно выбраны E,F,G, то их суммарная стоимость уменьшается на 5% (для каждой тройки E,F,G)
Если одновременно выбраны А и один из [K,L,M], то стоимость выбранного продукта уменьшается на 5%
Если пользователь выбрал одновременно 3 продукта, он получает скидку 5% от суммы заказа
Если пользователь выбрал одновременно 4 продукта, он получает скидку 10% от суммы заказа
Если пользователь выбрал одновременно 5 продуктов, он получает скидку 20% от суммы заказа
Описанные скидки 5,6,7 не суммируются, применяется только одна из них
Продукты A и C не участвуют в скидках 5,6,7
Каждый товар может участвовать только в одной скидке. Скидки применяются последовательно в порядке описанном выше.
Необходимо написать программу, которая, имея на входе набор продуктов (один продукт может встречаться несколько раз) рассчитывала суммарную их стоимость.
Аноним 26/05/17 Птн 21:16:09  996739
>>996732
При чем тут паттерн матчинг?
Аноним 26/05/17 Птн 21:44:48  996765
>>996732

метод ЯтвоюМамкуЕбал
цена = МодульРассчетаЦен.new(корзина).посчитать
конец

...

где-то в модуле РассчетаЦен

метод посчитать
....
скидка = МодульСкидок.new(корзина).посчитать
...
цена_товара = базовая_цена - скидки ± ...± ... etc

вернуть цена_товара
конец

...

где-то в МодулеСкидок

метод посчитать
список_скидок = получить_список_скидок

сумма = список_скидок.аггрегирровать_твою_мамку { |скидка| скидка.посчитать(корзина) }

вернуть сумму
конец

и хуячешь множество наследников от абстрактной_скидки c конкретными правилами, не забудь про иерархию типов. С тебя 200 баксов.
Аноним 26/05/17 Птн 22:46:33  996786
>>996765
ебать гавнище
надеюсь ты не работаешь нигде
Аноним 26/05/17 Птн 23:08:07  996797
>>996786
>ебать гавнище
Вы смотрите, квалифицированный работник в трениках из грязной подворотни голос подал.
Аноним 26/05/17 Птн 23:12:08  996799
>>996516
>Суть ООП изолировать логику модуля от внешнего влияния, а наружу вытащить только то что нужно.
Тебе уже написали, что инкапсуляция есть в любом процедурном языке хоть в сишке, хоть в паскале. Даже в форте, где вообще нихуя нет, ни локальных переменных, ни модулей, ни скоупов, инкапсуляция есть.
Аноним 26/05/17 Птн 23:17:16  996805
>>996618
>инкапсуляция и это ВНИМАНИЕ часть ООП
Но инкапсуляция не эксклюзивная фича ООП. Она была задолго до. К тому же инкапсуляция может быть достингнута многими другими средствами, а не только говнарскими protected/private, my/our и тому подобным говнарстом.
Аноним 26/05/17 Птн 23:30:01  996817
>>996797
дебилушка, за такую хуиту, что ты высрал, в нормальных конторах публично ссут в тупое ебало
Аноним 26/05/17 Птн 23:31:02  996819
>инкапсуляция
У меня есть коллега, который презирает уровни доступа С++. Он работает на низком уровне, использует С++, как С с классами. Драйвера, софт для embedded и т.п. Когда я ему начинаю говорить про типобезопасность, инкапсуляцию, он говорит, что возьмет и получит нужные данные по смещению. Ну и что ему возразишь? Ничего. Он прав. Если кто-то захочет - он сделает. Даже в мейнстримовых песочницах можно. Вопрос цены только.

Конечно это не значит, что нужно все это забыть. Но категоричность сбавить можно было бы :)
Аноним 26/05/17 Птн 23:38:18  996829
>>996819
Ну я тоже все кишками наружу делаю. Так проще и быстрее, и понимание практически не затрудняет. value() setValue() действительно необходимы для pimpl как в Qt или на границе больших модулей, где надо четко API зафиксировать.
Аноним 26/05/17 Птн 23:39:59  996831
>>996653
>сам питон не ООП, а вот в нем ООП есть, кривой правда
А в чем проявляется эта КРИВОТА?
Аноним 26/05/17 Птн 23:46:07  996837
А вот объясните на пальцах, буквально в двух словах, что же такое ООП? Почему я должен учиться размышлять такими абстракциями? Я не семеню, правда, просто совсем ньюфаг, не знаю, что к чему, а с вашей помощью стану более развит в этой сфере.
Аноним 26/05/17 Птн 23:48:18  996838
>>996819
В большинстве ООП языков закрытые данные можно получить рефлексией, если нужно.
Инкапсуляция нужна, чтобы криворукие индусы не поломали хрупкие внутренности объекта, а работали с ним только через ограниченный список безопасных методов.
Аноним 26/05/17 Птн 23:52:41  996842
>>996837
Ты мамкин борщец любишь?
Аноним 26/05/17 Птн 23:53:04  996843
>>996837
>буквально в двух словах, что же такое ООП?
Когда данные лежат в одном месте, и операции с ними осуществляется методами через точечку (или квадратные скобочки).
>Почему я должен учиться размышлять такими абстракциями?
Единственная причина - повсеместная практика.
Аноним 26/05/17 Птн 23:59:01  996846
>>996675
>>996691
Статический метод - это простая функция из необъектного Си или Паскаля, только видимая лишь в неймспейсе класса.

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

Сам объект - это структура. Помимо обычных полей, у нее есть дополнительное поле vmt, где хранится таблица виртуальных методов - массив указателей на процедуры.

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

Это если есть только классы с одиночным наследованием (Turbo Pascal, первая версия C++), при множественном наследовании/интерфейсах/трейтах все намного усложняется.
Аноним 26/05/17 Птн 23:59:10  996847
>>996817
>что ты высрал
Я мимокродил вообще.

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

Ну как скажешь.
Аноним 27/05/17 Суб 00:04:10  996848
>>996831
> инкапсуляция это часть ООП
> но в питоне нет ее
> значит в питоне ООП кривое
и тут ты спрашиваешь в чем кривота ООП в питоне - ну ебанный врот, ты тред чем читаешь?
Аноним 27/05/17 Суб 00:07:53  996849
>>996848
>> но в питоне нет ее
Там самая правильная инкапсуляция - по соглашению. Хочешь дергать приватные методы, дергай под свою ответственность.
Аноним 27/05/17 Суб 00:09:24  996850
>>996837
ООП позволяет разбить с помощью паттернов и SOLID архитектуру сложного проекта на примитивные модули (классы). Сотню таких модулей можно аутсорсить в Индию, Китай или другую страну, наняв за тарелку риса местных Раджанов, худо-бедно выучивших, что такое циклы и переменые, каждому по модулю. А гнущего пальцы Ивана, помнящего наизусть число тактов в каждом опкоде Z80, можно выкинуть на помойку. Бизнесу сотня Равшанов обходится дешевле одного Ивана. Потому ООП и популярно.
Аноним 27/05/17 Суб 00:12:31  996852
>>996838
Настоящая расширяемость, модифицируемость — это не когда вам дали два гнезда и вы можете воткнуть в одно — функцию, раскрашивающую вывод, а во вторую константу, отвечающую за размер буфера. Расширяемость, в том виде в каком к ней надо стремиться — это возможность взять вещь, посмотреть как она устроена, разобрать, что-то вынуть, что-то поставить свое. Утиная типизация, подсовывание своего объекта вместо чужого, все ручки на виду и перезаписываемые. При проектировании под расширяемость надо учитывать ровно одну вещь — что ты понятия не имеешь, кто и что с твоей библиотекой захочет сделать.

Ведь почему мы так любим Кложу? Потому что в ней принято делать открытые системы (с подачи Рича, конечно). Первое — библиотеки гоняют данные, и на вход, и на выход, и внутри. Данные, понятно, открыты, это не классы, их легко распечатать, легко поменять, сгенерировать в нужном виде — короче, библиотека никак не диктует, что и как вам делать с данными. Второе — протоколы, протоколом прикинуться легко. Третье — открытые неймспейсы, куда можно при необходимости залезть, посмотреть, поменять что-то. Позволяет, например, тестировать даже то, что для тестирования не предназначалось.

Это приводит к тому, что почти всегда библиотеку на Кложе можно понять и можно заставить делать то, что нужно. Очень трудно загнать пользователя в угол, если только специально не прилагать усилий. Это важно, и я рад, что Кложе-сообщество подхватило этот тренд.

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

Не надо так.
Аноним 27/05/17 Суб 00:18:20  996854
>>996850
Ну так все верно, чтобы копать траншею инженерное образование не нужно, проще бригаду таджиков нанять нежели одного Ивана с вышкой.
Аноним 27/05/17 Суб 00:20:01  996855
>>996837
>буквально в двух словах, что же такое ООП?
Один из видом модульности в программировании.

Я гляжу нынешняя молодежь с трудом в ООП въезжает
Аноним 27/05/17 Суб 00:20:49  996856
>>996849
Лол, это отсутствие инкапсуляции
Аноним 27/05/17 Суб 00:25:19  996858
>>996854
Все IT и есть траншеи, за редким исключением (ОС, микроконтроллеры, машинное обучение, ПО для атомной и космической промышленности). И Иван в нем нахуй не нужен.
Аноним 27/05/17 Суб 00:25:31  996859
>>996856
Хорошо, доставь пруф в виде общепринятого определения инкапсуляции из которого явно будет следовать, что соглашение об именовании не канает.
Аноним 27/05/17 Суб 00:25:55  996860
>>996856
>Лол, это отсутствие инкапсуляции
Ну тогда нигде инкапсуляции нет, потому что практически везде ее можно обойти, если хочется.
Аноним 27/05/17 Суб 00:43:46  996862
>>996858
>микроконтроллеры
>ПО для атомной и космической промышленности
В рахе там как раз иваны пидорасят для клоунов за доширак.
Аноним 27/05/17 Суб 01:14:19  996872
>>996862
>В рахе там как раз иваны пидорасят для клоунов за доширак.
Кстати да.
В РФных истребителях и ракетах на PIC микроконтроллерах половина электроники сделана.
Аноним 27/05/17 Суб 01:34:10  996878
>>996872
>на PIC микроконтроллерах половина электроники сделана
Ну там может большего и не нужно. Для радаров/оптики какие-то сложные алгоритмы нужны, а для остального можно и так.
Аноним 27/05/17 Суб 01:38:26  996882
>>996878
>Ну там может большего и не нужно. Для радаров/оптики какие-то сложные алгоритмы нужны, а для остального можно и так.
Мякота в том, что оборонка построена на буржуйских микроконтроллерах.
Аноним 27/05/17 Суб 01:41:37  996884
>>996882
>Мякота в том, что оборонка построена на буржуйских микроконтроллерах
Последние года вроде и наши начали что-то выпускать. Даже FPGA свои есть.
Аноним 27/05/17 Суб 02:00:53  996891
>>996884
>Последние года вроде и наши начали что-то выпускать. Даже FPGA свои есть.
Там проблема не в том, что свои не могут выпускать.

А в тотальном бардаке.
Идиотизме.
Это под коррупцию не подходит даже.

Ну вот вспомнить вскрытие черного ящика сбитого турками истребителя. В /ra бугуртили 3 месяца подряд.
Аноним 27/05/17 Суб 02:07:27  996895
>>996891
>А в
Руководство о том чтобы наладить производство цепь поставок ИТД даже и не думает.
Только как украсть бюджет, и продать старье 30 лет гниющее на складах по цене золота.
Аноним 27/05/17 Суб 09:00:03  996927
543634563456.jpg (79Кб, 900x329)
>>996846
Спасибо, больше похоже на правду, но гораздо более непонятно.
Аноним 27/05/17 Суб 09:23:30  996931
>>996856
Инкапсуляция - это не сокрытие. Это создание компонентов, детали реализации которых не важны для осуществления их взаимодействия.
Аноним 27/05/17 Суб 09:23:43  996932
>>996852

> Общественное мнение склоняется к тому, что разработчику библиотеки виднее, что выставлять наружу, а что нет.

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

Тогда как внутри библиотки открытые классы - это охуенно.
Аноним 27/05/17 Суб 11:43:01  996944
>>996932
Просто не нужно ничего специально ограничивать, тогда не нужно будет ничего ломать. В 90% случаев, когда любители ООП используют инкапсуляцию - её не стоило бы использовать, а нужно было использовать просто списки, мэпы, etc. Библиотеки должны возвращать данные, а не объекты. В том же питоне так всё работает, и на нём можно много что сделать. Мне, как пользователю либы, лучше знать, для чего мне нужны данные и что я собираюсь с ними делать. Для совместимости есть протоколы.
Аноним 27/05/17 Суб 11:57:00  996947
>>996944
Объекты - это тоже данные.
Аноним 27/05/17 Суб 12:13:11  996952
>>996947
>Объекты - это тоже данные
Внутри которых данные, к которым разработчик ограничил доступ, хотя они тоже нужны.
Аноним 27/05/17 Суб 12:16:16  996953
>>996944

> Библиотеки должны возвращать

Не понял, в чем принципиальная разница между возвращаемым объектом и «данными». Данные - те же объекты.

>Для совместимости есть протоколы.

Давай на примере, допустим ты автор библиотеки, что скачивает веселые картинки с котиками, в недрах либы такая реализация:

метод ПослатьРеквест(токен)
...
конец

Потом ты переписываешь, ну скажем так

метод ПослатьРеквест
токен = текущий_токен || Либа::Конфиг.тоген
...
конец

Теперь твой код, с использованием послать_реквест сломается, из-за передачи ненужного параметра, а для нормального пользователя ничего не меняется, он опирается на контракт: публичный метод - получить_моего_котика. Как решить коллизию с помощью протокола? Хранить оба метода и ad-hom полифиормизм, пожалуйста не предлагай - буду ссаться кипятком.
Аноним 27/05/17 Суб 12:16:26  996954
Поправьте, если ошибаюсь, но программирование это просто создание узоров из 0 и 1, а любые ограничения, которые за вас кто-то насоздавал, это априори полезная работа?
Аноним 27/05/17 Суб 12:40:17  996957
>>996952
>Внутри которых данные, к которым разработчик ограничил доступ, хотя они тоже нужны.
Если эти данные нужны пользователю объекта, то этот разработчик должен быть разжалован нахуй в дворники.
Аноним 27/05/17 Суб 13:06:51  996968
>>996957
Нахуя вообще набирать разработчиков, которые не обладают даром ясновидения и предсказания будущего?
Аноним 27/05/17 Суб 13:14:06  996971
>>996968
Непротекающие абстракции могут создавать только экстрасенсы?
Аноним 27/05/17 Суб 14:05:29  996992
>>996971
>Непротекающие абстракции могут создавать только экстрасенсы?
Результат любой "непротекающей абстракции" - монструозный монолитный фреймворк, из которого невозможно изолировать ни один кусок. Ничего другого абстракции в ООП делать не позволяют.
Аноним 27/05/17 Суб 14:13:59  996995
https://pastebin.com/tgpXkVAQ
Аноним 27/05/17 Суб 14:25:35  997001
Проебался немного, коэффициенты нужно инвертировать для групп. Но это мелочь, суть в семантике.
Аноним 27/05/17 Суб 14:33:12  997004
>>996954
Наверное, крайне неудобно сопровождать такие узоры из 0 и 1. По крайней мере на текущем развитии мозга.
Аноним 27/05/17 Суб 14:36:28  997007
>>997004
Раз делают, значит удобнее, чем все остальное.
Аноним 27/05/17 Суб 14:39:52  997008
>>996992
Это скорее результат оптимизации производительности. При использоавании непротекающих абстракций возникает потребность часто преобразовывать данные из одного типа в другой, а так же создавать кучу их копий. Без соответствующих оптимизирующих компиляторов это причиняет боль ожидания конца выполнения программы.
Аноним 27/05/17 Суб 15:07:23  997019
https://pastebin.com/d9QNkWDP

Фикшу сам себя. Все намного проще.
Аноним 28/05/17 Вск 15:33:11  997490
cayl91rw6wgw.jpg (59Кб, 579x534)
Что-то маловато срача, опять одни школьники ебут друг друга в мамку. Опять без батькиного пендаля ничего не можете.

>>996732
Задача очень плохо сформулирована.

Смущает, что скидка в принципе 3 лишена смысла, так как выбор любых 3 продуктов активирует скидку 5 с тем же коэффициентом. А поскольку "каждый товар участвует только в одной скидке", то, очевидно, для последний трех скидок формулировка должна явно проговаривать "от суммы заказа за вычетом уже дисконтированных товаров", если это так, либо уточнение, что при наличии хотя бы одного дисконтированного товара общая скидка отменяется. Вообще предложение считать скидку "от суммы заказа" при явном указании того, что ряд товаров в этой скидке не участвует, отдает абсурдом.

Также стоило явно проговорить, что последние джве скидки перекрывают предыдущие две. Если понимать условие задачи "скидки применяются последовательно" буквально, то последние две скидки никогда не будут применены, так как их условие включает в себя условие предыдущей скидки. Следовательно, требуется уточнение: должна ли бОльшая скидка замещать меньшую.

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

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

Проблема плохого проектирования выдается за проблему методологии. В предыдущих двух тредах постоянно звучит неявная претензия: я вот тут что-то нахуярил на коленке без проектирования на этом вашем ООП, а оно чёт хуево взлетает, говно это, а не методология.
Аноним 28/05/17 Вск 16:17:39  997518
>>997490
>Проблема плохого проектирования выдается за проблему методологии.

Как выглядит процесс разработки софта при использовании проектирования? Проектируем, пилим, утыкаемся в недостатки спроектированной архитектуры, далее, либо ляпаем костыли, либо снова проектируем. Круг замкнулся.

Как выглядит нормальный процесс разработки софта? Пилим простой DSL под присмотром специалистов. Пилим софт на DSL, допиливаем DSL, пилим софт: круг замкнулся.
Аноним 28/05/17 Вск 16:47:49  997532
14821940627890.jpg (44Кб, 492x558)
>>997518
>Круг замкнулся
Это называется "итеративная разработка", и сам по себе такой подход может быть вполне успешен, так как сопособствует раннему выявлению ошибок в архитектуре, исправлять которые чем дальше, тем дороже. Конечно, он имеет и свои трейд-оффы по сравнению со всякими там V-models.
Аноним 28/05/17 Вск 16:51:48  997535
>>997490
>Отличная демонстрация того, что в индустрии работают прежде всего хуевые проектировщики, а их ругань в адрес ООП или ФП обусловлена тем же самым, чем ругань плохого начальника на якобы непутевых подчиненных - желанием переложить ответственность с себя на некое обстоятельство непреодолимой силы, рационализировать свое поражение.

Только вот.

Ругают НЕ проектировщики и ПМы, а программисты.
Проектировщиков как раз все устраивает.

Им ООП как манна небесная.
Аноним 28/05/17 Вск 17:28:08  997547
14149599445460.jpg (570Кб, 1365x2048)
>>997535
Ты хотел сказать, что программист не должен заниматься проектированием? Это просто бомба.

Да и задачку с демонстрацией уровня развития сюда запостил, увы, не ПМ.
Аноним 28/05/17 Вск 17:31:15  997549
>>997547

Вон выше пример, личинка программиста хуячит все в один метод и в ус не дует, какое проектирование, какое ооп - ты о чем, и так сойдет.
Аноним 28/05/17 Вск 17:53:14  997560
>>997490
>>997535
>>997547
>>997549
Зачем вы обсуждаете обычных наследственных дебилов, вам что - делать нечего?
Аноним 28/05/17 Вск 18:07:10  997564
ioslarge1459179[...].jpg (45Кб, 600x525)
>>997560
>Зачем вы обсуждаете обычных наследственных дебилов, вам что - делать нечего?
>обычных наследственных дебилов
>наследственных
Заметь, мы ни на шаг не отклонились от основной темы треда.
Аноним 28/05/17 Вск 18:15:15  997565
>>997549 Тот метод изи бьётся на несколько. Ждём твой вариант.
Аноним 28/05/17 Вск 19:15:10  997581
>>996537
>Не нужны.
конечно не нужны, не используй
Аноним 28/05/17 Вск 19:16:16  997582
смысл существования этого треда?
Аноним 28/05/17 Вск 20:07:50  997600
1400613577960.jpg (83Кб, 510x378)
>>996531
>Мама тебя тесты не учила писать? Черный ящик требуется покрывать тестами (интеграционных на интерфейсы мало, тут рот не открывай) и ты начинаешь бороться с ООП, ломать инкапсуляцию, а изо рта у тебя течет пена.

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

А разгадка проста: мамкины тестопейсатели не знают, что тесты должны фиксировать поведение интерфейса, а не реализацию. Нет разницы, как оно сформировано изнутри. Весь код защищенных методов так или иначе будет вызван при тестировании публичных и окажет влияние на их поведение, которое и фиксируется. Если это невозможно сделать - значит, код плохо декомпозирован и его надо отрефакторить. Далеко не любой код поддаются тестированию, это надо понимать сразу при разработке, чтобы потом не было мучительно больно.
Аноним 28/05/17 Вск 20:14:29  997602
>>996995
Круто. Мы вам перезвоним.

Хз как потом такой код поддерживать.
Аноним 28/05/17 Вск 20:23:00  997609
>>997600
правильно, так их

не пишите тестов, пусть клиент тестирует
Аноним 28/05/17 Вск 20:48:18  997619
>>997600

> значит, код плохо декомпозирован и его надо отрефакторить

О чем и речь, инкапсулировать следует геттеры, которые не нужно тестировать (в рамках текущего класса), максимум, что с ними нужно сделать, так это изолировать (mocking/stubbing). Ты дедуля шаришь, хотя и повторяешься немного в пересказе идей, своими словами.
Аноним 28/05/17 Вск 20:51:17  997620
momdomination.jpg (38Кб, 520x389)
>>997609
>не пишите тестов, пусть клиент тестирует

Тесты мало написать, их надо написать правильно.
Аноним 28/05/17 Вск 20:54:49  997621
>>997620
ну зачем ты плодишь конкуренцию,
пусть вообще не пишут и гордятся этим
Аноним 28/05/17 Вск 20:57:24  997622
1401909907408.jpg (41Кб, 700x648)
>>997621
Так они ж потом ко мне приходят работать. В конторе страшный кадровый голод, а приходят одни дегенераты, такое ощущение, что прямиком из этого итт треда.
Аноним 28/05/17 Вск 21:05:14  997625
>>997622
ну вот там вкатывальщиков и научишь за зп в кусок сала
Аноним 28/05/17 Вск 21:05:16  997626
>>997619

И развитие этой идеи ведет к понятию открытых и дружелюбных классов, то есть таких классов, что инкакапсулируют геттеры, простенькие методы, и данные (состояния). Впрочем, это не значит, что _все_ классы обязаны быть дружелюбными.
Аноним 28/05/17 Вск 21:17:03  997630
1382726618-6a62[...].jpeg (183Кб, 553x418)
>>997619
>инкапсулировать следует геттеры
Ти вапще с этой плонети? Что такое "инкапсулировать геттеры"?

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

>>997625
>вкатывальщиков и научишь
В гробу я видал тратить время и нервы на этот скам. Пусть хотя бы часть работы над собой сделают сами.

>>997626
>таких классов, что инкакапсулируют геттеры, простенькие методы, и данные (состояния)
Да дались вам эти геттеры. Геттер - это в принципе антипаттерн, их, конечно, не надо повсеместно выжигать каленым железом, но зачастую они сигнализируют о плохо просчитанной ответственности класса. Каждый геттер кто-то дергает снаружи, что увеличивает сопряженность, а этого надо стремиться избегать любой ценой.
Аноним 28/05/17 Вск 21:20:27  997631
>>996670
Это не инкапсуляция, это принципы RAII/DI.
Т.н. инкапсуляция — это пространства имён всего лишь, есть в любом современном я/п.
Аноним 28/05/17 Вск 21:31:26  997636
14081859008750.jpg (61Кб, 483x584)
>>997631
>Т.н. инкапсуляция — это пространства имён всего лишь
Пиздец крепчал. Идея инкапсуляции состоит в структурном объединении данных с кодом, который их обрабатывает, а также в ограждении внешней части системы от сложности внутренней части подсистемы (это называется сокрытие и оно опционально). Пространства имен никоим образом не решают ни одну из этих задач.
Аноним 28/05/17 Вск 21:35:30  997639
>>997636
>ограждении внешней части системы от сложности внутренней части подсистемы
Это называется абстрагирование, а не сокрытие.
Аноним 28/05/17 Вск 21:45:47  997645
>>997630
>Что такое "инкапсулировать геттеры"?

Оформить приватный интерфейс, возвращающий какой-нибудь service object. Можно в конструкторе объявить переменную, и потом обращаться к ней напрямую - но это не так очевидно, что-ли. А я люблю быть тупым и предсказуемым.

>Еще как нужно.

А по-моему, нет, не нужно. Они тестируются отдельно. Если в текущем классе Encapsulated объект влияет на что-то, будь добр пили fixtures и тестируй текущие интерфейсы. Зависимость от внутренностей других объектов при тестировании следует сводить к минимуму.

Если геттер реализует дополнительную логику, кроме возврата объекта ок - можно, но тут такая дилемма - а не лучше ли перенести эту логику в статический метод (являющийся конструктором объекта) для класса данного объекта? Геттеры с логикой - это скорее редкость, нежели правило.

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

Согласен, но «любой ценой» - звучит несколько категорично, нелюблю категоричность, программирование - это про торговлю и поиск меньшей из всех зол (в идеальном мирке).
Аноним 28/05/17 Вск 21:48:02  997647
AppThreads.png (2Кб, 753x84)
MacApp2.png (6Кб, 583x367)
>>996837
>Я не семеню, правда, просто совсем ньюфаг, не знаю, что к чему, а с вашей помощью стану более развит в этой сфере.
Изначально речь шла о разделении программы по слоям и (если очень хочется) потокам.
Затем внутри каждого потока его состояние (т.н. "стейт") запрятали в объекты — получив >>996850
Затем научились эти объекты создавать и удалять по требованию, добавив принципы RAII и DI, так перешли от ранних языков типа Modula-2 к современным.
Кое-где объекты могут отправлять сообщения другим объектам и окнам с помощью одной и той же функции, "SendMessage()", но это встречается редко и большинству нинужно (а смысл этого тайного действа в том, что они разделены между потоками).
Аноним 28/05/17 Вск 21:53:22  997648
>>996944 >>996947
Это два разных вида «объектов», одни компоненты программы, контейнеры с кодом, а другие — списки, мэпы, etc, контейнеры для данных.
Аноним 28/05/17 Вск 22:03:34  997653
>>997636
>в структурном объединении данных с кодом
Сколько я бороздил энторнеты, под этим словом понимали сокрытие данных от доступа извне.
Привязка к ним методов, чтобы получить к ним доступ только через эти методы — придумайте другое название, иначе вы в названиях и определениях запутаетесь.
Аноним 28/05/17 Вск 22:21:29  997661
>>997648
В списках, мэпах итд можно и код хранить.
Аноним 28/05/17 Вск 22:31:40  997667
>>997620
Тесты не помогают предотвращать ошибки, они помогают лишь обнаруживать их или создавать. Нужно делать формальную верификацию на зависимых типах.
Аноним 28/05/17 Вск 22:47:23  997676
>>997653
Инкапсуляция - это черный ящик. Когда все, связанное с сущностью (классом), т.е. и данные, и алгоритмы для их обработки собираются в одном месте, внутри этого ящика. А наружу торчит интерфейс - извне взаимодействовать с объектом можно лишь через него.
Аноним 28/05/17 Вск 22:49:24  997677
>>997639
Абстрагирование это более общая концепция, частным случаем которой является ООП. Модули в Turbo Pascal - тоже абстрагирование.
Аноним 28/05/17 Вск 22:55:59  997680
>>997677
Нет, абстрагирование - это и есть, то что ты написал в предыдущем посте. А вот каким способом это достигается - модульностью, объектами, лямбдами - это уже другой вопрос. Грубо говоря, абстрагирование - это создание интерфейсов.
Аноним 28/05/17 Вск 23:06:16  997684
>>997680
ООП это один из вариантов абстрагирования.
Аноним 28/05/17 Вск 23:16:20  997688
>>997684
ООП в общепринятом понимании, пришедшим из Симулы, это инкапсуляция (суть модульность), наследование и полиморфизм (суть повторное использование кода). Нигде про абстрагирование речи нет.
Аноним 28/05/17 Вск 23:20:12  997693
14837088593610.jpg (131Кб, 1024x682)
>>997645
>приватный интерфейс, возвращающий какой-нибудь service object
Ну ты очень хитрожопое название для этого явления придумал. Еще раз: если он приватный - его нужно тестировать только косвенно, через вызов публичных методов, которые внутри себя его дергают под нужным углом.

>А по-моему, нет, не нужно. Они тестируются отдельно.
Знатно поделил на ноль. Так нужно или не нужно, и отдельно от чего?

>не лучше ли перенести эту логику в статический метод
Ты ебанутый? Зачем пилить статический метод для работы с данными экземпляра? И при чем тут конструктор? Упаси б-же в конструкторе делать что-либо кроме проверки и присвоения пришедших на вход значений.

>Геттеры с логикой - это скорее редкость, нежели правило
Это скорее правило, чем редкость. Ленивая загрузка, ленивая инициализация, вот это все.

>звучит несколько категорично
Этот фактор чуть ли не единственный из всех напрямую влияет на сложность и устойчивость системы. Случаи, когда им можно торговать, можно по пальцам перечислить (быстрое прототипирование, одноразовые скрипты и прочие кейсы сильно ограниченного времени жизни системы).
Аноним 28/05/17 Вск 23:22:01  997696
vremyazavaliteb[...].jpg (74Кб, 580x501)
>>997653
>Сколько я бороздил энторнеты, под этим словом понимали сокрытие данных от доступа извне.
Специально залез в википузию - даже там в самом начале записано определение специально для бороздителей вроде тебя.
Аноним 28/05/17 Вск 23:29:05  997699
OzbJE3odA1A.jpg (59Кб, 604x604)
>>997688
>полиморфизм (суть повторное использование кода)

Полиморфизм вообще не про это, еще в первых тредах писал. Полиморфизм - это в самом общем случае способность фунции обрабатывать значения разных типов, а в частном случае ООП - перекладывание ответственности за конкретную обработку данных на внешний объект посредством иерархии типов (чем образована эта иерархия - наследованием, миксинами, интерфейсами, утиными анусами - не суть, это уже детали).
Аноним 28/05/17 Вск 23:36:49  997704
>>997699
Мне надо было уточнить тип полиморфизма, ты описал ad-hoc полиморфизм. Я имел ввиду параметрический полиморфизм.
Аноним 28/05/17 Вск 23:38:44  997705
>>996015 (OP)
наркоманы, вы бы так код хуярили как здесь пиздите
Аноним 28/05/17 Вск 23:43:48  997709
>>997693
> Зачем пилить статический метод для работы с данными экземпляра? И при чем тут конструктор? Упаси б-же в конструкторе делать что-либо кроме проверки и присвоения пришедших на вход значений.

Я хотел донести простую мысль: сложный геттер передает вызов в фабричный метод, а писать тесты на код типа @переменная || вызвать исключение, это столь же отвратительно, как и тестировать что 2+2 равно четырем.

По остальному завтра, может быть, поболтаем.
Аноним 29/05/17 Пнд 00:04:06  997713
>>996732
Оцените решение, ананасы.
https://github.com/fruttut/discounter
Аноним 29/05/17 Пнд 00:15:24  997714
>>997547
>Ты хотел сказать, что программист не должен заниматься проектированием?
Если программист занимается проектированием, то это уже не программист.
Или ты хочешь сказать, что сварщик не должен заниматься проектированием?
Или электрик?
Или носитель кирпичей?
Или крановщик?

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

Иногда ты сам себе и архитектор, и электрик. Но это опять таки, вне темы обсуждения.
Мы же говорим об индустрии в целом, а не о наколенных проэктиках.

А в индустрии так.
Кто-то где-то решил, что нужно использовать замыкания.
И ты хоть обосрись, но неприкасайся к for и прочим способами итерирования.
Только замыкания.
Больше замыканий богу замыканий.
Потому что так по уму, ООП лямбды ПМ воркфлоу ЕЙЧАРИНГ ТИМБИЛДИНГ круд МИТИНГ некогда объяснять делай замыкания.

Да ПМ - наверное не по наслышке знаком с программированием, и это, что, делает его внезапно очень вумным?
Прочитал книжечку про "правильный дизайн" и давай внедрять сии "знания" в жизнь.

Нужно начинать с того что 90% людей на планете идиоты, и 99.999% людей в IT не ушли интеллектом сильно дальше обезьян.
ПМы они там, или нет.

Разница между ПМом и рядовым макакеном в том, что ПМ не чувствует боль, от абстрактных фабрик хмл бобов. Теперь это проблема рядового макакена.


>Да и задачку с демонстрацией уровня развития сюда запостил, увы, не ПМ.
Не понимат о чем ты.
Аноним 29/05/17 Пнд 00:19:12  997717
no-u.jpg (53Кб, 533x457)
>>997696
>википузию
Сам же и обозвал её некрасиво звучащим словом.
Там же у них «отличительная особенность русской семиструнной гитары — стальные струны» и спутники ГЛОНАСС вещяют на секретной военной частоте.

По делу если: в Смоллтоке не было ещё методов, были только сообщения, в Эрланге сокрытие данных сделано с помощью потоков и сообщений. Сокрытие данных — общий случай, доступ с помощью методов/интерфейсов — один из частных случаев (а википидоры... я скорее поверю анону с борд, чем им).
Аноним 29/05/17 Пнд 01:04:30  997742
211516.strip.gif (54Кб, 640x199)
>>997713
Что там оценивать, когда задача сформулирована неоднозначно, а ты этого даже не обнаружил в процессе реализации? Естественно, там говно по ссылке, не нужно даже заходить туда, чтобы это понять.
Аноним 29/05/17 Пнд 01:27:16  997750
14189201471570.jpg (30Кб, 445x260)
>>997709
>сложный геттер передает вызов в фабричный метод
Это не единственное, что он делает.

>писать тесты отвратительно
Сидеть на дваче тоже, однако ж это тебе не мешает. Возможно, программирование - это попросту не твоё.

>>997714
>Если программист занимается проектированием, то это уже не программист.
Если он им не занимается, то он макака, а не программист, потому как без умения самостоятельно выделять абстракции он никому не нужен.

>программисту нужно принимать кое какие архитектурные решения, местечковые, но это и не предмет обсуждения.
"Местечком" является как минимум весь вверенный программисту сегмент проекта, как максимум - вообще весь проект. У макак все иначе, но это и не предмет обсуждения.

>ТИМБИЛДИНГ
Устройся в нормальную контору и прекрати транслировать сюда свои личные катастрофы. Мы обсуждаем дизайн софта, а не традиции ООО "Залупа и сыновья".

>Не понимат о чем ты.
О том, что задачку СПРОЕКТИРОВАЛ некий программист или некто косплеящий оного, и спроектировал так, что даже беглый анализ показал кучу несуразностей. То есть некто, считающий себя программистом, неспособен даже логику сраных скидок описать без накладок - как же ему можно доверять пректирование программы?
Аноним 29/05/17 Пнд 01:41:03  997753
>>997750
>Если он им не занимается, то он макака, а не программист, потому как без умения самостоятельно выделять абстракции он никому не нужен.
Это уже демагогия.

>"Местечком" является как минимум весь вверенный программисту сегмент проекта, как максимум - вообще весь проект. У макак все иначе, но это и не предмет обсуждения.
Другими словами.
>Настоящий программист делает что хочет и пишет как вздумается.
>Макаки следуют паттернам и принятой в прожекте системе.
Это феноменальная глупость.
И если разобраться, простой психоз. Ты ищешь "козлов отпущения", пытаясь перенести свои собственные психические проблемы на мифических "макак", которые плохие, и все неверно понимают.
Если просто.
У тебя пригорело. И ты в стадии отрицания. Психоз это потому, что из стадии отрицания ты не выходишь.

>Устройся в нормальную контору и прекрати транслировать сюда свои личные катастрофы.
Ну вот, теперь МОЯ личность уже виновна во всех твоих проблемах.

>Мы обсуждаем
И ты настолько неуверен в себе, что говоришь от именин коллектива, которого кстати нет.

>дизайн софта, а не традиции ООО "Залупа и сыновья".
Тащемто, тред о традициях ООП

>О том, что задачку СПРОЕКТИРОВАЛ некий программист или некто косплеящий оного, и спроектировал так, что даже беглый анализ показал кучу несуразностей. То есть некто, считающий себя программистом, неспособен даже логику сраных скидок описать без накладок - как же ему можно доверять пректирование программы?
Наверное нельзя.
У меня нет инсайдов относительно личностных и профессиональных качеств проектировщика "задачки", о которой ты говоришь.
Возможно, он просто не хотел напрягаться.
В конце концов, картинкофорум предпологает общение с минимум усилий. Меньше чем свитер.
Аноним 29/05/17 Пнд 02:08:54  997759
226142600.jpg (83Кб, 600x450)
>>997753
>Это уже демагогия
Сперва я подумал, что это ответ на один из моих тезисов, но, прочитав весь твой пост, понял, что это был его заголовок. Тонко, молодец.

>У тебя пригорело.
А вот тут толсто.

>картинкофорум предпологает общение с минимум усилий
Вот и не тужься зазря, грыжу заработаешь. А то для минимума усилий многовато букв генерируешь.
Аноним 29/05/17 Пнд 02:43:15  997765
>>997742
>Что там оценивать, когда задача сформулирована неоднозначно
Чего неоднозначного в задании "взять дохуялион выражений, и проверить их выполнение в определенном порядке"?
Некоторые из правил дали бы другой результат при другом порядке проверки? Некоторые из них не выполняются никогда? Какая в жопу разница.

Ты эксперт или школьник с синдромом отличника?
https://youtu.be/UoKlKx-3FcA

>>997713
Сорян бротиш, я скриптогосподин и не умею скакать по десяти различным файлам для восприятия логики кода.
Аноним 29/05/17 Пнд 04:48:42  997780
>>997759
Мать твою ебал.
Аноним 29/05/17 Пнд 06:12:33  997785
В чем разница между абстрактным классом и интерфейсом? И нахуй нужен последний? В документации просто сказано НУЖЕН НАРЯДУ С ДРУГИМИ. А даже мелкого примера нет.
Аноним 29/05/17 Пнд 06:34:17  997790
>>997705
не мешки ворочать
Аноним 29/05/17 Пнд 08:21:27  997802
indiangenocide.jpg (123Кб, 560x446)
>>997765
>Чего неоднозначного в задании
Я достаточно подробно расписал это вот здесь >>997490, повторяться для жопочтецов не вижу смысла.

>Ты эксперт или школьник с синдромом отличника?
Я просто умею внимательно читать таски и делать больно тем, кто пишет их недостаточно прозрачно.
Аноним 29/05/17 Пнд 08:23:50  997803
>>997742
Я обнаружил и реализовал так, как посчитал правильным. Если заказчик формулирует, как мудак - это его проблемы. Если что-то не нравится - пусть вносит корректировки в ТЗ, переделаю.
Аноним 29/05/17 Пнд 08:26:06  997804
>>997785
Чтобы было
Аноним 29/05/17 Пнд 08:29:18  997806
>>997785
Интерфейс - чистый контракт. В абстрактном классе, как правило, уже присутствует какая-то часть реализации.
Аноним 29/05/17 Пнд 08:29:26  997807
Lemmingsinmigra[...].jpg (35Кб, 430x251)
>>997803
>Я обнаружил и реализовал так, как посчитал правильным
Вот таких долбоебов в шею гоню нахуй сразу с работы, они очень дорого обходятся. Вместо того, чтобы сразу поставить в известность о проблеме, они там что-то хуем на клавиатуре настучат и еще носиком потом шмыгают - дескать, я художник, я так вижу. Убивал бы гадов.

Хотя скорее всего ты, конечно, ни хуя не обнаружил, а просто прочитал тяп-ляп и сделал тяп-ляп.
Аноним 29/05/17 Пнд 08:32:20  997808
>>996215
Он эволюционирует, а ты - нет.
Аноним 29/05/17 Пнд 08:45:04  997810
>>997807
Окей, вот у меня как раз была ситуация несколько дней назад: нужно было разработать достаточно сложный кусок по весьма расплывчатому тз. Клиент оффлайн был в течение недели. Что прикажешь делать, сидеть сложа ручки? А смысл? Придет, посмотрит, и либо внесет корректировки, либо нет.
Аноним 29/05/17 Пнд 09:08:37  997811
>>997810
>Что прикажешь делать
Завалить ебло.
Аноним 29/05/17 Пнд 09:12:00  997812
>>997811
>пук
Ясно.
Аноним 29/05/17 Пнд 09:21:00  997815
661.jpg (14Кб, 262x200)
>>997810
>по весьма расплывчатому тз
Проблема в том, что вместо того, чтобы нормально проанализировать ТЗ в момент вручения и тут же дать обратную реакцию, сел стучать хуем по клавиатуре и слишком поздно обнаружил эту самую расплывчатость.

>оффлайн был в течение недели
Что мешало позвонить?

>Что прикажешь делать, сидеть сложа ручки?
Поставить задачу на холд и делать другие, если в пункте 1 из вышеприведенных ты обосрался, а пункт 2 по каким-то невероятным причинам невозможно осуществить.
Аноним 29/05/17 Пнд 09:29:29  997817
>>997812
Оно еще и обосралось.
>>997815
Ты тоже нахуй иди.
Аноним 29/05/17 Пнд 09:53:30  997822
>>997490
>Проблема плохого проектирования выдается за проблему методологии.
Проблема плохого проектирования возникает из-за ебаного ООП, которое пихают абсолютно везде, где оно не нужно. Вместо того, чтобы проанализировать предметную область и выбрать правильный инструмент для решения конкретной задачи, архитекторы наверчивают объекты на объекты, ибо объекты сами не навертятся.
Аноним 29/05/17 Пнд 10:46:02  997844
>>997750
>Сидеть на дваче тоже, однако ж это тебе не мешает. Возможно, программирование - это попросту не твоё.

Пожалуй, сольюсь в диалоге и просто пошлю тебя нахуй с такими утверждениями.
Аноним 29/05/17 Пнд 10:55:14  997851
>>997822
Все время слышу эту мантру про "выбор правильного инструмента" и каждый раз проигрываю. Вот ты, например, расскажи случай из своей никчемной жизни, когда тебя заставили злые манагеры грызть объекты, а надо было что-то другое использовать. Ну же, удиви меня.
Аноним 29/05/17 Пнд 11:01:44  997852
>>997851
Это не программист должен выбирать, и не манагеры. А архитекторы, блять. Они должны довить на манагеров, а не наоборот. В моей никчемной работе в нашем маленьком стартапе, где мы сами себе архитекторы, я сам выбрал на чем писать бэкенд, хотя меня пытались заставить писать его на С++ (другие части проекта пишутся на нем, и была идея, чтобы библиотеки были у всех общими), но я всем пояснил, что это неправильно и почему это тупиковый путь.
Аноним 29/05/17 Пнд 11:08:22  997855
>>997852
Это ты выбрал платформу, а не методологию. На чем же ты пейсал свою часть на хаскеле, надеюсь?
Аноним 29/05/17 Пнд 11:09:44  997856
>>997855
На эрланге пишу.
Аноним 29/05/17 Пнд 11:16:20  997858
>>997856
А что за задача? Сетевой трафик, медиапотоки?
Аноним 29/05/17 Пнд 11:26:09  997859
>>997858
Потоки телеметрии.
Аноним 29/05/17 Пнд 12:45:54  997878
>>997859
Ну вот ты редчайший случай адеквата, значит. Значительно чаще корзинки жалуются, что им не дают шлепать круды на Кложе или на процедурках, в зависимости от полюса сдвига мозгов.
Аноним 29/05/17 Пнд 13:34:39  997893
>>997759
>А то для минимума усилий многовато букв генерируешь.
Ты видишь поблизости полицию?
Аноним 29/05/17 Пнд 13:41:02  997899
>>997878
>Ну вот ты редчайший случай адеквата, значит.
Нет.
Это репрезентативное большинство критики ООП.

>Значительно чаще корзинки жалуются
Это твои собственные фантазии и комплексы. Меньше в специальных олимпиадах участвуй.
Аноним 29/05/17 Пнд 13:47:20  997908
2345467866543.jpg (127Кб, 720x576)
>>997815
>Проблема в том, что вместо того, чтобы нормально проанализировать ТЗ в момент вручения и тут же дать обратную реакцию,
Проблема в том, что ты акцентируешь внимание на второстепенных вещах. Что есть признак шизы кстати.
Переводя обсуждение в плоскость личности собеседников.
Ну какая разница насколько там правильно составлена задачка. Ты еще в школьных учебниках начни выискивать противоречия и несоответствия "зачем мне кому-то отдавать мои яблоки?"
Аноним 29/05/17 Пнд 14:28:40  997940
>>997908
акцентируешь внимание на второстепенных вещах. Что есть признак шизы
пошутил про шизу?

по поводу тз. нельзя прочитать и сразу увидеть не соответсвие. нужно запомнить, подумать, долго это.
а вообще, можно без набрасывания прототипа, спроектировать? я всегда стучу по кнопкам. это как изучать, читаешь и делаешь задачки. протоип, это как черновик.
Аноним 29/05/17 Пнд 14:42:02  997950
>>997940
>пошутил про шизу?
Нет.
Это один из признаков шизоидного расстройства.

>по поводу тз. нельзя прочитать и сразу увидеть не соответсвие. нужно запомнить, подумать, долго это.
Да.
Вообще, каждый программист доложен быть полно ознакомлен с техническим заданием и предметной областью. Если речь идет о создании качественного продукта.
К сожалению, ткнз ентерпрайз делает все с точностью наоборот. Чтобы ознакомить программиста, нужно чтобы он был в состоянии понимать, а это противоречит использованию низкоквалифицированных кадров.

Так или иначе, у нас тут речь о задачке уровня 1 курса университета.


>а вообще, можно без набрасывания прототипа, спроектировать?
Можно.

>я всегда стучу по кнопкам. это как изучать, читаешь и делаешь задачки. протоип, это как черновик.
Это ткнз "быстрая разработка".

Как правило, когда речь идет о сириус бизнесе, программисту ненужно ничего набрасывать.
Все уже спроектировано.
У программиста в руках определенная часть проекта, для которой у него уже есть 100 раз проверенное временем решением.
Ctrl+C ctrl+V, немного правок, и все готово.
Аноним 29/05/17 Пнд 15:01:29  997964
>>997950
>Как правило, когда речь идет о сириус бизнесе, программисту ненужно ничего набрасывать.
Справедливо для стандартного крудошлепства.
Аноним 29/05/17 Пнд 17:19:30  998023
Почему вы еще не переходите на функциональное программирование? Это стильно, модно, молодежно.
Аноним 29/05/17 Пнд 17:35:22  998033
>>997802
>Я достаточно подробно расписал
Как шкальник придрался к деталям, не имеющим отношения к сути задачи.
Причем если подумать головой, то задание хоть и недостаточно формально описано, но понятно здоровому человеку.

Врочем, хуй знает, что полотнища говнокода дадут данному срачетреду.
Аноним 30/05/17 Втр 20:06:11  998761
1488533711657-0.png (735Кб, 2000x3000)
>>996732
Короче, рядом валялась линейка и я тоже решил измерить свой ооп-хуй: http://бр4.org/s/res/90.html#725
Аноним 30/05/17 Втр 20:40:23  998767
>>998761
>/s/res/90.html#725
Не знаю про твой гомокод на гомоязыке, но ссылки ты вставляешь через жопу.
Аноним 30/05/17 Втр 20:43:13  998769
>>998767
>бр4
Надо заменить.

Лол, а еше в последнем методе я обосрался аж два раза.
Аноним 30/05/17 Втр 21:32:17  998784
>>998761
Ссылку нормальную запили, я нихуя не понял, чего на что нужно заменить.
Аноним 30/05/17 Втр 22:48:10  998824
>>998769
Да там вообще все надо заменить. Мне пришлось по номеру треда и поста искать о чем ты.
Аноним 03/06/17 Суб 07:44:48  1000320
lsd[1].jpg (59Кб, 600x450)
Я был слеп но я прозрел. Есть лишь рекурсивная структура рантайма и контекст. Вся хуета с объектами это пляски вокруг переопределения контекста в хаосе пузырящейся памяти.

[Назад][Обновить тред][Вверх][Каталог] [Реквест разбана] [Подписаться на тред] [ ] 181 | 29 | 42
Назад Вверх Каталог Обновить

Топ тредов
Избранное