А вот теперь пример безумия
В мире жабы(в смысле языка програмирования) есть какая-то тонкая шиза, которая порождает миллиарды фреймворков.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?
Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.
По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.
Вот пример про логгирование. Ну блин, как можно столько наворотить на пустом месте?
Самая хохма там - это то, что некоторые упоминают использование логгеров через дополнительный уровень абстракции. Мне иногда для вывода в текстовый лог и на экран юзеру приходится делать обвязку, дословно дублирующую интерфейс логгера, и меня это напрягает, потому что это натурально тупая копипаста. А народ такое массово использует и не парится.
По-моему, избавление от шизы надо начать с сжигания GoF и фаулера на костре из их книжек. А затем внедрять в мейнстримные языки всякую функциональщину, вроде функций высшего порядка, каррирования и вывода типов, после чего половина врапперов, фасадов и прочего копипастного мрака становится не нужна.
no subject
no subject
no subject
no subject
Паттерны проектирования, всё такое.
no subject
На пару с Мартином Фаулером это корень
злавсех паттернов, слоев абстракции, фасадов, проксей, врапперов и прочих вещей, которые из проектов делают гирлянды мелких копипастных классов.(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Но когда проектировщик думает, что задачу надо декомпозировать на паттерны GoF - все, приплыли.
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
на костре надо сжигать тех, кто не умеет правильно и к месту эти самые абстракции выделять.
а также тех, кто создаёт языки не позволяющие нормально абстракциями пользоваться...
no subject
Вы, дотнетчики, просто привыкли, что существует Одно Решение от Единственного Источника. И что этот источник на вас плюёт, не желая расширять библиотеки. Ваш log4net не вошёл ведь в стандарт? А у явистов в какой-то форме пошёл.
Фреймворков логгирования не миллион, а три. Ну четыре.
Хотя да, я во многих проектах видел свои обёртки, но они всегда имели свои особенности.
no subject
По-моему, очевидно, что у правильно поставленной задачи не может быть четыре отличающихся правильных решения, а только одно. Четыре решения означают или неправильную постановку задачи, или частные случаи одного правильного решения.
no subject
Нет, неочевидно.
Не хотят люди зачем-то в одной ОС сидеть. Хотят разных ОС.
> проще ж пропихнуть ее в один фреймворк и оно появится у всех
Я эту мысль не понимаю. Если мне (1%) хочется логгировать контекст пользователя, другому (1%) слой кода, а третьему (тоже 1%) описанный в доке "класс сообщения", то никто никуда не пихает, а пишут свои обёртки.
> у правильно поставленной задачи не может быть четыре отличающихся правильных решения
Задач, если Вы не заметили, штук 20. Разных. Почитайте про стоки логов, форматтеры, конфигураторы (особенно NDC), анализаторы, аудит, про адаптивное исправление. Идей много.
И довольно наивно слушать, что существует некий супермозг, который "правильно поставит задачу" на всю историю сразу. Логгинг вообще-то не считался стандартной задачей, скажем с Си нету такого в stdlib. Люди начали писать для себя, другим понравилось, вот и появилась тема.
(no subject)
(no subject)
no subject
Любой код, используемый повторно, имеет эту клятую проблему.
Интеграция библиотеки заставляет предполагать о идиомах и парадишмах приложения, которое использует эту библиотеку.
Потому не может существовать "единственного решения" даже в (прости хосподи) визуал байсике.
no subject
"А теперь смотрите, как мы легко и удобно можем сохранить значение типа int в файл: [простыня на три страницы шизобреда]." - это вот у них норма жизни. Я ни разу не утрирую :(
no subject
Впрочем, надеюсь, с уходом на C# мне полегчает...
no subject
no subject
(no subject)
(no subject)
no subject
И непонятно, зачем Вы зациклились на функциональщине. Это далеко не серебряная пуля, у неё есть свои проблемы, свои классы ошибок. Самое смешное, что на Западе её пиарят как средство для облегчения multicore, а в русской тусовке -- что Там Вся Правда.
no subject
Я когда читаю фаулера, макконнела и прочих - там же половина советов сводится к "имитируйте функциональное программирование на императивных языках" :)
no subject
- Таких цитат там нету
- Если Вы думаете, что они Неявно Намекают, то... авторство этой идеи, боюсь, не их.
Хотелось бы пример, каким образом ActiveRecord vs Table Data Gateway имеет отношение к "функциональщине".
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
(no subject)
no subject
no subject
Хуже всего, когда из такого языка приходится взаимодействовать с низким уровнем, вроде дров железа или там звуковой подсистемой - я сейчас уже полдня ловлю ошибку нарушения защиты памяти в таком коде, будь он неладен.
(no subject)
(no subject)
(no subject)
no subject
и очень хорошо сделанные :)
(no subject)
(no subject)
(no subject)
(no subject)