Как стать автором
Обновить

Ты — это то, как ты пишешь. Как расти через качество кода

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров12K
Всего голосов 27: ↑20 и ↓7+20
Комментарии12

Комментарии 12

Вы рассуждаете о качестве кода в общем, но все ваши примеры о конкретном языке. Притом ни указания на язык в тексте (кроме того, что Юрий Митус - фронтенд-разработчик), ни в тегах статьи нет.

Не надо так: проставьте, пожалуйста, релевантные теги и напишите хоть одно предложение о том, о каком языке пойдёт речь.

Я побуду занудой, но последний пример shuffle функции, является не валидным. На многих языках он не приведет к печальным последствиям, но на С++ похожий код может привести к крашу.

А все почему? Так-как нарушено правило: если a > b, то b < a. Ну и а == а, и транзитивность, и...

На всякий открыл какую-то документацию по JavaScript и нашел там целый список правил:

  • Stable: The comparator returns the same result with the same pair of input.

  • Reflexive: compareFn(a, a) === 0.

  • Anti-symmetric: compareFn(a, b) and compareFn(b, a) must both be 0 or have opposite signs.

  • Transitive: If compareFn(a, b) and compareFn(b, c) are both positive, zero, or negative, then compareFn(a, c) has the same positivity as the previous two.

JavaScript в общем не исключение из правил.

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

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

С учётом того, что шаффл делается одним проходом по списку, код вообще дно. Как и статья в целом. Хабр уже совсем не торт.

код вообще дно. Как и статья в целом

Это вы ещë, уважаемый, мальчиков с бэкграундом Сбера не собеседовали.

Я – собеседовал:) Выборка небольшая, но мне попадались очень неплохие ребята. Не надо всех под одну гребёнку мести, Сбер сколько лет пылесосит рынок.

Я так понимаю, у Сбера есть различные проекты в области IT, и на самые массовые, с точки зрения команд, они активно набирают джунов и студентов. По крайней мере, один мой знакомый "вкатившийся" коллега начинал со Сбера. И это начало, как я понял, было не слишком приятным и успешным с точки зрения опыта.

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

IsValidLogin

Не надо так писать: подсказок пользователю ноль. Не валидный и всё тут

Write ones, read many

Как минимум, код придется читать один раз на ревью. И потом при рефакторинге. И при блохоловстве.

У нас read/write в среднем 3, а не ваши 1.2 в статье

А как бы вы предложили назвать функцию? hasLoginOnlyLatterInLowerCaseWithUnderacoreAndThrowExceptionIfInvalid?

Дело не в названии

Эта функция не возвращает причину почему логин не валидный

Если хотите название то лучше разделить на несколько простых валидаторов без выброса исключений

bool IsAllLettersInLowerCase

bool что-то ещё

Или сделать общий валидатор, возвращающий строку или enum ошибки

string IsValidLogin

Мне понравилось, спасибо!

Вот только "С вероятностью в 20 % вы вернётесь к этому фрагменту и будете его дорабатывать" - а можно узнать как считалась вероятность? A то тут Мартин Фаулерс беспокоится, он то в статьях о рефакторинге совсем другие величины указал.

Уверен что если 10 произвольным программистам, показать одну произвольную кодовую базу , каждый скажет что там 90% надо переделать и только вот эти 10% хорошо написаны, и у каждого это будут свои 10%

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

Но есть характеристики которые можно измерить, и это не субъективные "читабельность" и "поддерживаемость" которые только падают из-за снижения порога входа в айти и новые менее умные люди хуже умеют в чтение и поддержку, а такие как время исполнения, количество слов (которые нужно напечатать и прочитать), вес файлов, количество потребляемой памяти , отказоустойчивость, итп

Я это всё к тому, что так или иначе, такое внимание к форме, негативно скажется на содержании, давайте сконцентрируемся на более важных аспектах разработки

Жаль, что мы так и не услышали начальника транспортного цеха правильное определение чистой функции. Не надо так делать.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий