LINUX.ORG.RU
ФорумTalks

Что лучше учить?

 ,


2

2

Паттерны проектирования с риском вывихнуть мозг от шаблонов абсратной фабрики синглтонов, или нормальную библиотеку например qt в которой уже все написано (гуи, сеть, СУБД и т.д.) и грубо говоря «можно петь не зная нот», как в караоке.

С чисто практической точки зрения без лишних холиваров типа о пользе высшего образования.

Перемещено leave из development



Последнее исправление: cetjs2 (всего исправлений: 1)

Ответ на: комментарий от byko3y

Да. Архитектура обычного приложения на Си идеальна по ISP.

А почему тогда на systemd наезжают за несоответствие ISP (слишком много разнородных функций в одной программе)? Он же на Си написан. Ещё бывают библиотеки, которые в одном модуле предлагают функции для работы с сетью, графикой и базами данных.

У данных нет причин изменяться и изменять, потому что они ничего не изменяют.

Я предполагаю, что в той цитате подразумевается изменение программистом. «module should have one, and only one, reason to be changed». А если у тебя в одной структуре данных поля от разных подсистем, то это нарушается.

monk ★★★★★
()
Ответ на: комментарий от Boogerman
  1. Жить хорошо. А хорошо жить ещё лучше.
  2. Кодить хорошо. А хорошо кодить ещё лучше.

Выбирай.

Я вообще думаю, что кодить нужно в принудительном порядке 2 года в жизни и всё. Типа службы в армии. Откодил своё и свободен. Можешь конечно по контракту остаться, если хочешь. Но на пенсию раньше – в 45 лет. И на шевроне эмблема Microsoft, аз-за-за.

kostyarin_ ★★
()
Ответ на: комментарий от monk

Ещё бывают библиотеки, которые в одном модуле предлагают функции для работы с сетью, графикой и базами данных

Это совсем не тру. Разве что это методы в классе, которые дёргают вышеобозначенные функции из соседних модулей. Иначе это плохо структурированное дерьмо, лапша на уровне дизайна проекта.

WitcherGeralt ★★
()
Ответ на: комментарий от WitcherGeralt

Это совсем не тру

Это был пример нарушения ISP вне ООП языков.

monk ★★★★★
()
Ответ на: комментарий от LongLiveUbuntu

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

doctorx ★★★★
()
Ответ на: комментарий от doctorx

Да, есть, ибо алгоритм - это абстракция, последовательность действий и воспроизвести ее можно на любом Тьюринг-полном ЯП. Знать их нужно хотя бы, чтобы правильно проектировать программы. Что до паттернов, то это частный случай тех же алгоритмов и структур данных и их изучение можно вполне уложить и в общий курс.

LongLiveUbuntu ★★★★★
()
Последнее исправление: LongLiveUbuntu (всего исправлений: 1)
Ответ на: комментарий от monk

А почему тогда на systemd наезжают за несоответствие ISP (слишком много разнородных функций в одной программе)?

Много кто много на что наезжает. Кому-то много, кому-то мало - это дело вкуса. А ISP не нужно.

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

И в чем проблема? Обычно такие функции требуют разных аргументов - какая разница тогда, засунуты ли они в один файл или разные?

«module should have one, and only one, reason to be changed»

Еще раз: это разговор о модулях с объектоподобными состояниями. В том же Си такой проблемы нет. Отвяжи состояние от модуля - у тебя исчезнут проблемы.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

Изменение схемы данных, спроектированной с нарушением SRP, не может теоретически порушить левую функциональность? Телл ми моар.

OCP. Нельзя менять чужой механизм. Сделал систему единой - меняй её полностью.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

А как же разграничение интерфейсов? Если у тебя там и шитье, и жатва, и игра на дуде, то клиент, которому нужно только играть на дуде, вынужден зависеть от кучи левой функциональности, которой он не пользуется. Явное нарушение ISP.

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

byko3y ★★★★
()
Ответ на: комментарий от byko3y

OCP. Нельзя менять чужой механизм

Случайно же. Дерьмо происходит. Особенно если принципиально не прислушиваться к тому, что говорят опытные деды с седыми яйцами %)

Nervous ★★★★★
()
Ответ на: комментарий от byko3y

Интерфейсы разграничивает, прежде всего, человек

Ну так да. Чтобы человеку было потом проще в этой куче добра разобраться — как её использовать, изменять и дорабатывать. Следование ISP в этом помогает. Сваливание всего в огромную кучу strongly coupled говна — наоборот.

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

OCP. Нельзя менять чужой механизм

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

А у меня вот случайно побились данные, полученные с сервера, потому что какой-то дятел плохо написал работу с указателями - и что? Всё по солиду ведь. При всем желании разделить систему на независимые модули, неизбежно возникает необходимость эту систему интегрировать. Мы приходим к тому, что нужен некий баланс, а SRP был призван побороть крайность в виде чрезмерного объединения сущностей в классы. Нет чрезмерного объединения - не нужно SRP. И таки простой Си естественным образом поощряет среднюю позицию, поскольку те же данные в структуре при желании можно разбить на отдельные сущности, чего, однако, не получится просто так сделать с классом, потому что к данным прибиты гвоздями конструкторы, геттеры-сеттеры, и прочий мусор.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

Чтобы человеку было потом проще в этой куче добра разобраться — как её использовать, изменять и дорабатывать. Следование ISP в этом помогает. Сваливание всего в огромную кучу strongly coupled говна — наоборот.

Точно так же ISP дает противоположный результат, противоположную крайность - нашинкованный в мелкую капусту код по 20-40 строчек в отдельном файле, где отдельный части одной функции разбросаны по разным классам и модулям.

byko3y ★★★★
()
Ответ на: комментарий от monk

Это какое?

Блокнот. Бумажный.

Ага, а потом кто-то будет сидеть и разгребать эти записи. Конечно, если они кому-то нужны. А если не нужны - зачем их было делать?

byko3y ★★★★
()
Ответ на: комментарий от monk

iOS и Android крайне неэффективно расходуют ресурсы мобильного устройства.

А что предлагаете?

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

byko3y ★★★★
()
Ответ на: комментарий от InterVi

Очередной балабол в треде? Про C#, Python, PHP, TypeScript не слышал? Это не весь список.

К C# применимо, потому что это и есть жава. К остальнывм SOLID не применим. Я здесь не беру во внимание поехавших, которые в питоне пишут на жаве, получают проблемы жавы, а потом их же и решают.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

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

А в Си у тебя будут функции, которые работали с этой структурой, и которые все надо переписать. Та же канитель, только в профиль.

monk ★★★★★
()
Ответ на: комментарий от byko3y

Ага, а потом кто-то будет сидеть и разгребать эти записи. Конечно, если они кому-то нужны. А если не нужны - зачем их было делать?

Делопроизводство и архивное дело придумали давно. Более того, когда занимаешься промышленной археологией (надо найти документацию на что-нибудь, внедрённое 20 лет назад), то часто выясняется, что после трёх смен систем электронного документооборота в адекватном состоянии только бумажные документы (электронные остались в виде 8-дюймовых лент и 5-дюймовых дискет, которые уже не читаются).

monk ★★★★★
()
Ответ на: комментарий от byko3y

ISP дает противоположный результат, противоположную крайность - нашинкованный в мелкую капусту код

Дверь, яйца, щемить.

Nervous ★★★★★
()
Ответ на: комментарий от byko3y

К остальнывм SOLID не применим

Не применим, не применим, ты только не нервничай. Успокойся. Скушай таблеточку %)

Nervous ★★★★★
()
Ответ на: комментарий от byko3y

Нет чрезмерного объединения - не нужно SRP.

У тебя телега едет впереди лошади. Все наоборот же — если следовать SRP, не будет чрезмерного объединения.

Можно, конечно, рассчитывать на то, что качественный код напишется как-нибудь сам по себе, случайно — но это малость наивновато, тебе так не кажется? %)

SOLID нужен не потому, что Мартин с Беком так скозали, а потому, что он воплощает определенные принципы, позволяющие создавать качественный код. Независимо от языка и парадигмы.

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

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 2)
Ответ на: комментарий от byko3y

В твоём манямирке так. А в нормальном проде это основа, без которой никак. ISP используется реже, конкретно в питоне, из-за отсутствия интерфейсов. Остальное держится на соглашениях (полагаю, докапываешься до изменяемости всего и вся, ну так и в Java-подобных всё можно изменить магией байткода). На пыхе и TS уже тонны промышленного кода, разложенного согласно лучшим практикам, посмотри хоть на большие фреймворки. Будешь с факты отрицать? Спорить с балаболом - себе дороже, не отвечай.

InterVi ★★★★★
()
Последнее исправление: InterVi (всего исправлений: 1)
Ответ на: комментарий от monk

Более того, когда занимаешься промышленной археологией (надо найти документацию на что-нибудь, внедрённое 20 лет назад), то часто выясняется, что после трёх смен систем электронного документооборота в адекватном состоянии только бумажные документы (электронные остались в виде 8-дюймовых лент и 5-дюймовых дискет, которые уже не читаются).

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

byko3y ★★★★
()
Ответ на: комментарий от Nervous

ISP дает противоположный результат, противоположную крайность - нашинкованный в мелкую капусту код

Дверь, яйца, щемить.

Ну, а я о чем? Дай дураку солид - они и SOLID разобьет, и руки порежет. Тем не менее, принципы вроде «работает - не трогай» и «делай абстрактные интерфейсы там, где есть много разных и меняющихся реализаций» - это вполне годная штука.

byko3y ★★★★
()
Ответ на: комментарий от Nervous

Все наоборот же — если следовать SRP, не будет чрезмерного объединения.

У меня не просто так пердак горит, если по чесноку. У меня в проекте SOLID-поехавший, у которого самое прогрессивное достижение представляло собой файл на одну строчку. Ну типа разделил ответственность/интерфейс, ага. Никакой SRP не научит тебя хорошо писать код и правильно организовывать проект. SRP нужен был именно как реакция на ООП-франкенштейнов. Да, проблемы агрегации остаются и без ООП, но они намного менее серьезны и затмеваются другими косяками.

SOLID нужен не потому, что Мартин с Беком так скозали, а потому, что он воплощает определенные принципы, позволяющие создавать качественный код.

Так почему же люди по SOLID-у пишут говно? Хочется вспомнить что-то про заводы рабочим, фабрики крестьянам или «любите врагов ваших, делайте добро тем, кто ненавидит вас, благословляйте проклинающих вас и молитесь за тех, кто оскорбляет вас». Кто самые озабоченные? Монахи в храмах. Кто самые бездарные кодеры? Те, кому нужно постоянно сверяться с какими-то принципами правильного кодерства.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

У меня в проекте SOLID-поехавший

Сочувствую.

почему же люди по SOLID-у пишут говно

Потому что не понимают, зачем он нужен, вероятно. Может, практики еще маловато.

Nervous ★★★★★
()
Ответ на: комментарий от byko3y

Дай дураку солид - они и SOLID разобьет, и руки порежет.

То есть проблема не в SOLID все-таки.

Nervous ★★★★★
()
Ответ на: комментарий от byko3y

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

Вот это и есть правильный вариант работы. Есть первичный бумажный документ (с подписями и печатями) и есть электронная его версия, с которой удобно работать. И первичный документ можно хоть на коленке написать и голубиной почтой отправить.

И работает в любых условиях. Вчера 4 часа по всей Сибири у МТСа сотовые не работали (и местами Интернет и даже VPN внутри города). Хорошо, когда такое событие не прекращает всю работу организации.

monk ★★★★★
()
Ответ на: комментарий от byko3y

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

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

monk ★★★★★
()
Ответ на: комментарий от monk

Есть первичный бумажный документ (с подписями и печатями) и есть электронная его версия, с которой удобно работать.

Даже «первичные документы» нынче уже делают в виде шаблона на компе, который печатается, а от руки заполняется что-то вроде ФИО, дата, подпись.

Вчера 4 часа по всей Сибири у МТСа сотовые не работали (и местами Интернет и даже VPN внутри города). Хорошо, когда такое событие не прекращает всю работу организации.

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

byko3y ★★★★
()
Ответ на: комментарий от Nervous

почему же люди по SOLID-у пишут говно

Потому что не понимают, зачем он нужен, вероятно. Может, практики еще маловато.

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

byko3y ★★★★
()
Ответ на: комментарий от byko3y

когда ты ходишь, то не думаешь о технике ходьбы

Техник ходьбы может быть множество – на ногах, на руках, на четвереньках, даже ползком. То, что ты с детства ползаешь like a boss, не означает, что ползание – это оптимальный способ добраться до цели.

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Техник ходьбы может быть множество – на ногах, на руках, на четвереньках, даже ползком. То, что ты с детства ползаешь like a boss, не означает, что ползание – это оптимальный способ добраться до цели.

Конечно не значит. Но если ты читал про хождение на руках, а сам ползаешь на четвереньках, типа «тоже руки использую» не красит тебя как ходока.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Конечно не значит.

Значит, теоретические рекомендации типа «на ногах ходить в общем случае удобнее» имеют право на жизнь? %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Ответ на: комментарий от Nervous

Значит, теоретические рекомендации типа «на ногах ходить в общем случае удобнее» имеют право на жизнь?

Я еще не видел ни одного человека, который мог бы сказать что-то вроде «я, как дурашка, все малые годы на четвереньках пролазил. Но потом родители мне подсказали, что на двух ногах ходить удобно - и о чудо, это действительно удобнее. Теперь я несу это знание людям, которые продолжают жить в невежестве четверенек.».

Если ты не смог сам, подражая, ходить на ногах, то ты - калека или даун. К сожалению, таковы большинство кодеров.

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Если ты не смог сам, подражая, ходить на ногах, то ты - калека

Представь, что в твоем окружении все ходят на четвереньках. И где твое подражание теперь? %)

Nervous ★★★★★
()
Ответ на: комментарий от Nervous

Представь, что в твоем окружении все ходят на четвереньках. И где твое подражание теперь?

Детский сад? И что, много людей оттуда выходят без способности ходить?

byko3y ★★★★
()
Ответ на: комментарий от byko3y

Детский сад

Все ходят на четвереньках. Напряги воображение %)

Nervous ★★★★★
()
Последнее исправление: Nervous (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.