LINUX.ORG.RU

История изменений

Исправление 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 модулей дублей, внутри которых на всех уровнях функций внесены правки. И поддерживать дальше это уже невозможно без переписывания.

Это только фронт. А есть еще бэк… Не будем о грустном.