История изменений
Исправление wandrien, (текущая версия) :
Вы действительно считаете, что мусор tracker for tracker in trackers if
, который несколько раз повторяется в теле функции — подходит под название «прост и понятен»? Окей. Но я не буду в очередной раз повторять все аргументы из обсуждения, почему этот код плох, нечитабелен и приводит к ошибкам. Всё, что можно было на эту тему сказать, уже сказано.
Здесь нарушена идея о несмешении абстракций разного уровня, но если вы этого не видите… ну значит, не видите. Что я могу с этим сделать? Наверное, ничего.
Одна сущность, которая заменяет filter, map, lambda, find, select, detect и фиг знает что ещё.
Но в программировнии задача не в том, чтобы соревноваться, кто изобретёт самую мощную убервафлю, заменяющую собой все остальные вафли, а в том, чтобы составить корректный лексикон для описания проблемы и её решения на формальном языке. Здесь эта задача не решена.
А можно полтора раза короче, без фильтров и лямбд:
Я уже писал где-то выше: лучше кода из стартового примера может быть практически всё, что угодно. И старый добрый for in
в том числе.
А можно вынести все условия в отдельную функцию:
И так тоже можно.
Заменили 8 строк на 18 и они стали проще в чтении и поддержке? Странный у вас вкус.
Вы архитектуру приложения в строках кода измеряете?
Я вот как раз сейчас рефакторю портянку, в которой один и тот же код дублируется 6 раз. Ну как, код… модуль строк на 3000.
Это произошло потому, что кто-то экономил строчки, чтобы «8 строк не превратились в 18» и писал модуль одним сплошным полотном.
А потом, когда потребовалось сделать еще один модуль, который делает «почти то же самое, но чуть иначе», рефакторить было уже некогда… потому что мы на проде, и у нас горит задница, ну или я не знаю, почему. Как так вышло. Но понятно, что что-то пошло не так, и архитектура приложения оказалась не готова к такого рода вызовам. Как результат — 6 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.
Это только фронт. А есть еще бэк… Не будем о грустном.
Исправление wandrien, :
Вы действительно считаете, что мусор tracker for tracker in trackers if
, который несколько раз повторяется в теле функции — подходит под название «прост и понятен»? Окей. Но я не буду в очередной раз повторять все аргументы из обсуждения, почему этот код плох, нечитабелен и приводит к ошибкам. Всё, что можно было на эту тему сказать, уже сказано.
Здесь нарушена идея о несмешении абстракций разного уровня, но если вы этого не видите… ну значит, не видите. Что я могу с этим сделать? Наверное, ничего.
Одна сущность, которая заменяет filter, map, lambda, find, select, detect и фиг знает что ещё.
Но в программировнии задача не в том, чтобы соревноваться в том, кто изобретёт самую мощную убервафлю, заменяющую собой все остальные вафли, а в том, чтобы составить корректный лексикон для описания проблемы и её решения на формальном языке. Здесь эта задача не решена.
А можно полтора раза короче, без фильтров и лямбд:
Я уже писал где-то выше: лучше кода из стартового примера может быть практически всё, что угодно. И старый добрый for in
в том числе.
А можно вынести все условия в отдельную функцию:
И так тоже можно.
Заменили 8 строк на 18 и они стали проще в чтении и поддержке? Странный у вас вкус.
Вы архитектуру приложения в строках кода измеряете?
Я вот как раз сейчас рефакторю портянку, в которой один и тот же код дублируется 6 раз. Ну как, код… модуль строк на 3000.
Это произошло потому, что кто-то экономил строчки, чтобы «8 строк не превратились в 18» и писал модуль одним сплошным полотном.
А потом, когда потребовалось сделать еще один модуль, который делает «почти то же самое, но чуть иначе», рефакторить было уже некогда… потому что мы на проде, и у нас горит задница, ну или я не знаю, почему. Как так вышло. Но понятно, что что-то пошло не так, и архитектура приложения оказалась не готова к такого рода вызовам. Как результат — 6 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.
Это только фронт. А есть еще бэк… Не будем о грустном.
Исправление wandrien, :
Вы действительно считаете, что мусор tracker for tracker in trackers if
, который несколько раз повторяется в теле функции — подходит под название «прост и понятен»? Окей. Но я не буду в очередной раз повторять все аргументы из обсуждения, почему этот код плох, нечитабелен и приводит к ошибкам. Всё, что можно было на эту тему сказать, уже сказано.
Здесь нарушена идея о несмешении абстракций разного уровня, но если вы этого не видите… ну значит, не видите. Что я могу с этим сделать? Наверное, ничего.
Одна сущность, которая заменяет filter, map, lambda, find, select, detect и фиг знает что ещё.
Но в программировнии задача не в том, чтобы соревноваться в том, кто изобретёт самую мощную убервафлю, заменяющую собой все остальные вафли, а в том, чтобы составить корректный лексикон для описания проблемы и её решения на формальном языке. Здесь эта задача не решена.
А можно полтора раза короче, без фильтров и лямбд:
Я уже писал где-то выше: лучше кода из стартового примера может быть практически всё, что угодно. И старый добрый for in
в том числе.
А можно вынести все условия в отдельную функцию:
И так тоже можно.
Заменили 8 строк на 18 и они стали проще в чтении и поддержке? Странный у вас вкус.
Вы архитектуру приложения в строках кода измеряете?
Я вот как раз сейчас рефакторю портянку, в которой один и тот же код дублируется 16 раз. Ну как, код… модуль строк на 3000.
Это произошло потому, что кто-то экономил строчки, чтобы «8 строк не превратились в 18» и писал модуль одним сплошным полотном.
А потом, когда потребовалось сделать еще один модуль, который делает «почти то же самое, но чуть иначе», рефакторить было уже некогда… потому что мы на проде, и у нас горит задница, ну или я не знаю, почему. Как так вышло. Но понятно, что что-то пошло не так, и архитектура приложения оказалась не готова к такого рода вызовам. Как результат — 6 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.
Это только фронт. А есть еще бэк… Не будем о грустном.
Исправление wandrien, :
Вы действительно считаете, что мусор tracker for tracker in trackers if
, который несколько раз повторяется в теле функции — подходит под название «прост и понятен»? Окей. Но я не буду в очередной раз повторять все аргументы из обсуждения, почему этот код плох, нечитабелен и приводит к ошибкам. Всё, что можно было на эту тему сказать, уже сказано.
Здесь нарушена идея о несмешении абстракций разного уровня, но если вы этого не видите… ну значит, не видите. Что я могу с этим сделать? Наверное, ничего.
Одна сущность, которая заменяет filter, map, lambda, find, select, detect и фиг знает что ещё.
Но в программировнии задача не в том, чтобы соревноваться в том, кто изобретёт самую мощную убервафлю, заменяющую собой все остальные вафли, а в том, чтобы составить корректный лексикон для описания проблемы и её решения на формальном языке. Здесь эта задача не решена.
А можно полтора раза короче, без фильтров и лямбд:
Я уже писал где-то выше: лучше кода из статового примера может быть практически всё, что угодно. И старый добрый for in
в том числе.
А можно вынести все условия в отдельную функцию:
И так тоже можно.
Заменили 8 строк на 18 и они стали проще в чтении и поддержке? Странный у вас вкус.
Вы архитектуру приложения в строках кода измеряете?
Я вот как раз сейчас рефакторю портянку, в которой один и тот же код дублируется 16 раз. Ну как, код… модуль строк на 3000.
Это произошло потому, что кто-то экономил строчки, чтобы «8 строк не превратились в 18» и писал модуль одним сплошным полотном.
А потом, когда потребовалось сделать еще один модуль, который делает «почти то же самое, но чуть иначе», рефакторить было уже некогда… потому что мы на проде, и у нас горит задница, ну или я не знаю, почему. Как так вышло. Но понятно, что что-то пошло не так, и архитектура приложения оказалась не готова к такого рода вызовам. Как результат — 6 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.
Это только фронт. А есть еще бэк… Не будем о грустном.
Исходная версия wandrien, :
Вы действительно считаете, что мусор tracker for tracker in trackers if
, который несколько раз повторяется в теле функции — подходит под название «прост и понятен»? Окей. Но я не буду в очередной раз повторять все аргументы из обсуждения, почему этот код плох, нечитабелен и приводит к ошибкам. Всё, что можно было на эту тему сказать, уже сказано.
Здесь нарушена идея о несмешении абстракций разного уровня, но если вы этого не видите… ну значит, не видите. Что я могу с этим сделать? Наверное, ничего.
Одна сущность, которая заменяет filter, map, lambda, find, select, detect и фиг знает что ещё.
Но в программировнии задача не в том, чтобы соревноваться в том, кто изобретёт самую мощную убервафлю, заменяющую собой все остальные вафли, а в том, чтобы составить корректный лексикон для описания задачи и её решения на формальном языке. Здесь эта задача не решена.
А можно полтора раза короче, без фильтров и лямбд:
Я уже писал где-то выше: лучше кода из статового примера может быть практически всё, что угодно. И старый добрый for in
в том числе.
А можно вынести все условия в отдельную функцию:
И так тоже можно.
Заменили 8 строк на 18 и они стали проще в чтении и поддержке? Странный у вас вкус.
Вы архитектуру приложения в строках кода измеряете?
Я вот как раз сейчас рефакторю портянку, в которой один и тот же код дублируется 16 раз. Ну как, код… модуль строк на 3000.
Это произошло потому, что кто-то экономил строчки, чтобы «8 строк не превратились в 18» и писал модуль одним сплошным полотном.
А потом, когда потребовалось сделать еще один модуль, который делает «почти то же самое, но чуть иначе», рефакторить было уже некогда… потому что мы на проде, и у нас горит задница, ну или я не знаю, почему. Как так вышло. Но понятно, что что-то пошло не так, и архитектура приложения оказалась не готова к такого рода вызовам. Как результат — 6 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.
Это только фронт. А есть еще бэк… Не будем о грустном.