Arrow Anti-Pattern стал попадаться слишком часто
От: greenpci  
Дата: 05.04.16 07:19
Оценка: 5 (1) :))) :)
Последнее время часто вижу такой код и каждый раз пропадает мотивация менять мир к лучшему.

Re: Arrow Anti-Pattern стал попадаться слишком часто
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.04.16 07:23
Оценка: 5 (1) :))
Здравствуйте, greenpci, Вы писали:

G>Последнее время часто вижу такой код и каждый раз пропадает мотивация менять мир к лучшему.


Тебе надо переходить в мир Go. Там у тебя будет if/return, if/return и т.д. 100500 раз

Но если серьезно, подобная хрень характерна для продуктовой разработки и единственное что можно сделать – ловить её на этапе ревью.
Re[2]: Arrow Anti-Pattern стал попадаться слишком часто
От: ry Россия  
Дата: 05.04.16 07:42
Оценка:
Здравствуйте, kaa.python, Вы писали:

G>>Последнее время часто вижу такой код и каждый раз пропадает мотивация менять мир к лучшему.


KP>Но если серьезно, подобная хрень характерна для продуктовой разработки и единственное что можно сделать – ловить её на этапе ревью.

Такая хрень не должна доходить до ревью. Оная легко ловится статическими анализаторами кода, через которые разработчик должен пропустить свой код и только после этого отправляться на ревью.
Re[3]: Arrow Anti-Pattern стал попадаться слишком часто
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.04.16 07:47
Оценка: +10
Здравствуйте, ry, Вы писали:

ry>Такая хрень не должна доходить до ревью. Оная легко ловится статическими анализаторами кода, через которые разработчик должен пропустить свой код и только после этого отправляться на ревью.


Разработчик много что должен, но реальный мир, очень часто, отличен от всех этих "должен/должно". Я не знаю, в каких тебе компаниях довелось работать, но из моего опыта, пример выше, даже на понятие "злобная хрень" не тянет. Так, мелкая гадость
Re[4]: Arrow Anti-Pattern стал попадаться слишком часто
От: Tom Россия http://www.RSDN.ru
Дата: 05.04.16 08:07
Оценка: +4
Здравствуйте, kaa.python, Вы писали:

KP>Здравствуйте, ry, Вы писали:


ry>>Такая хрень не должна доходить до ревью. Оная легко ловится статическими анализаторами кода, через которые разработчик должен пропустить свой код и только после этого отправляться на ревью.


KP>Разработчик много что должен, но реальный мир, очень часто, отличен от всех этих "должен/должно". Я не знаю, в каких тебе компаниях довелось работать, но из моего опыта, пример выше, даже на понятие "злобная хрень" не тянет. Так, мелкая гадость


Интересно как вы перепишете эту хрень правильно
Народная мудрось
всем все никому ничего(с).
Re[5]: Arrow Anti-Pattern стал попадаться слишком часто
От: kaa.python Ниоткуда РСДН профессионально мёртв и завален ватой.
Дата: 05.04.16 08:17
Оценка: +3
Здравствуйте, Tom, Вы писали:

Tom>Интересно как вы перепишете эту хрень правильно


Группировка по типам проверки с преобразованием проверок в плоское представление. Псевдокод:

...
if ( check_name(name) && check_password(password) )
    create_user()
...

fn check_name(name) {
    if empty name
        return "Empty Username"
    if ....
}
Re[6]: Arrow Anti-Pattern стал попадаться слишком часто
От: Sammo Россия  
Дата: 05.04.16 08:43
Оценка: +1
Причем сразу в сообщение собрать претензии и по пользователю и по паролю.
Re[5]: Arrow Anti-Pattern стал попадаться слишком часто
От: Kernan Ниоткуда https://rsdn.ru/forum/flame.politics/
Дата: 05.04.16 08:52
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Интересно как вы перепишете эту хрень правильно

[philosophical_raptor_mode]
А что если все проверки загнать в один единсвенный regexp?
А можно сделать проверяльщик на основе FSM?
[/philosophical_raptor_mode]
Sic luceat lux!
Re[4]: Arrow Anti-Pattern стал попадаться слишком часто
От: ry Россия  
Дата: 05.04.16 12:17
Оценка:
Здравствуйте, kaa.python, Вы писали:

ry>>Такая хрень не должна доходить до ревью. Оная легко ловится статическими анализаторами кода, через которые разработчик должен пропустить свой код и только после этого отправляться на ревью.


KP>Разработчик много что должен, но реальный мир, очень часто, отличен от всех этих "должен/должно".

А что делать. Работа такая.
KP>Я не знаю, в каких тебе компаниях довелось работать,
В разных. В компании с СММ5 — самой первой получившей этот уровень в России — было строго. Был в компании, где сам строил процессы. Работал в компании без установленного процесса ревью. И сейчас СММI — зависит от установленного процесса на проекте, вот подталкиваю проекты к установке "правильного" процесса и, соответственно, к более жёсткому следованию ему.

KP>но из моего опыта, пример выше, даже на понятие "злобная хрень" не тянет. Так, мелкая гадость

Да понятно, только от этого он не перестаёт быть хренью, которую поддерживать охренеешь.
Re[5]: Arrow Anti-Pattern стал попадаться слишком часто
От: mgu  
Дата: 05.04.16 14:24
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>Интересно как вы перепишете эту хрень правильно


(Псевдокод)

if not <condition1>
  return "<error message1>";
if not <condition2>
  return "<error message2>";
...
if not <conditionN>
  return "<error messageN>";

<processing>

return "";
Re[7]: Arrow Anti-Pattern стал попадаться слишком часто
От: MozgC США http://nightcoder.livejournal.com
Дата: 05.04.16 14:33
Оценка: +6
Здравствуйте, Sammo, Вы писали:

S>Причем сразу в сообщение собрать претензии и по пользователю и по паролю.


+1.

Ещё бесит такое: Регистрируюсь на каком-нить простом сайте, ввожу свой простой пароль для таких случаев, мне пишут — ваш пароль должен быть не менее 8 символов. Ок, удлиняю, submit. Пишут: ваш пароль должен содержать хотя бы одну цифру. Ок, добавляю цифры. Submit. Пишут: ваш пароль должен содержать хотя бы один из следующих символов (там всякие восклицательные знаки т.д.). Ненависть.
Re[8]: Arrow Anti-Pattern стал попадаться слишком часто
От: mgu  
Дата: 05.04.16 16:20
Оценка: +1
Здравствуйте, MozgC, Вы писали:

MC>Ещё бесит такое: Регистрируюсь на каком-нить простом сайте, ввожу свой простой пароль для таких случаев, мне пишут — ваш пароль должен быть не менее 8 символов. Ок, удлиняю, submit. Пишут: ваш пароль должен содержать хотя бы одну цифру. Ок, добавляю цифры. Submit. Пишут: ваш пароль должен содержать хотя бы один из следующих символов (там всякие восклицательные знаки т.д.). Ненависть.


Да ладно, вот паттерн "несостоятельная говноформа" круче: заполняешь все поля, потом прилетает ответ: "поле N должно содержать Х", обновляется страница, все поля пустые, и приходится их заново заполнять!

В связи с эпидемией говнофреймворков появился новый подход: сообщение возвращается в виде выпрыгивающего окошка, закрываем его, все поля заполнены, вот только курсор не работает.
Re: Arrow Anti-Pattern стал попадаться слишком часто
От: __kot2  
Дата: 05.04.16 19:50
Оценка: :)
а ты думаешь по какой причине сейчас двухпробельные отступы набирают такую популярность?
Re[5]: Arrow Anti-Pattern стал попадаться слишком часто
От: __kot2  
Дата: 05.04.16 19:53
Оценка: 2 (2) +1
Здравствуйте, Tom, Вы писали:
Tom>Интересно как вы перепишете эту хрень правильно
правильный вопрос "а как вы будете эту хрень тестировать"
как только поймете, так сразу перепишете правильно
соб-но в этом и смысл TDD — заставлять говнокодеров использовать собственный код
Re: да ладно
От: bazis1 Канада  
Дата: 05.04.16 23:49
Оценка: +1
Здравствуйте, greenpci, Вы писали:

G>Последнее время часто вижу такой код и каждый раз пропадает мотивация менять мир к лучшему.

G>Image: haduuken.jpg
Все разговоры про хороший и плохой код не имеют никакого смысла, если не понятно:
1) Насколько часто код планируется менять
2) Насколько он критичен по надежности
3) Насколько он критичен по производительности

Может это прототип, цель которого быстро понять, будет ли спрос на продукт.
Или он был написан в строгом соответствии с ядреной спецификацией, которую менять в 10 раз сложнее чем код, и главная задача — сверять код со спекой.
Re[5]: Arrow Anti-Pattern стал попадаться слишком часто
От: SkyDance Земля  
Дата: 06.04.16 00:02
Оценка:
Tom>Интересно как вы перепишете эту хрень правильно

Тут-то как раз никакой магии: это уже обсосано тысячу раз. Подход с array of validators работает прекрасно. Можно взглянуть, скажем, на реализацию 100500 проверок в реализации SSL на Java.
Re[2]: Arrow Anti-Pattern стал попадаться слишком часто
От: greenpci  
Дата: 06.04.16 03:56
Оценка: :)
Здравствуйте, kaa.python, Вы писали:

KP>Но если серьезно, подобная хрень характерна для продуктовой разработки и единственное что можно сделать – ловить её на этапе ревью.


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

Самый вопиющий случай, с которым я имел дело, это реализация рекурсии с помощью пяти вложенных циклов. Конечно она не работала при уровне вложенности более пяти. Примерно такой подход:

for(int i = 0; i < 10; i++)
{
    if(docs[i].IsDocument())
    {
        printf("Doc %s\n", docs[i].Name);
    }
    else if(docs[i].IsFolder())
    {
        Document *docs1 = docs[i].Children();

        for(int i = 0; i < 10; i++)
        {
            if(docs1[i].IsDocument())
            {
                printf("Doc %s\n", docs1[i].Name);
            }
            else if(docs1[i].IsFolder())
            {
                Document *docs2 = docs[i].Children();
        //... и так дальше от docs2 до docs5
//Кен из Street Fighter'а  
            }
        }
    }
}


Далее все это обросло подробностями, добавились новые фильтры на документы и каждый из пяти циклов и условников стал больше. Все это выросло в большую говнокодную стрелу.
Re[2]: Arrow Anti-Pattern стал попадаться слишком часто
От: greenpci  
Дата: 06.04.16 04:00
Оценка: :)
Здравствуйте, __kot2, Вы писали:

__>а ты думаешь по какой причине сейчас двухпробельные отступы набирают такую популярность?


А если писать без отступов, так вообще никто не заметит. Наверное, следующий популярный ЯП будет без отступов.
Re[3]: Arrow Anti-Pattern стал попадаться слишком часто
От: T4r4sB Россия  
Дата: 06.04.16 07:49
Оценка:
Здравствуйте, greenpci, Вы писали:

G>А если писать без отступов, так вообще никто не заметит. Наверное, следующий популярный ЯП будет без отступов.


Пока такое только в асме канает. Хм, как это можно ещё обыграть?
Re[8]: Arrow Anti-Pattern стал попадаться слишком часто
От: _NN_ www.nemerleweb.com
Дата: 14.04.16 11:22
Оценка:
Здравствуйте, MozgC, Вы писали:

MC>Здравствуйте, Sammo, Вы писали:

s/2014/01/crea
S>>Причем сразу в сообщение собрать претензии и по пользователю и по паролю.

MC>+1.


MC>Ещё бесит такое: Регистрируюсь на каком-нить простом сайте, ввожу свой простой пароль для таких случаев, мне пишут — ваш пароль должен быть не менее 8 символов. Ок, удлиняю, submit. Пишут: ваш пароль должен содержать хотя бы одну цифру. Ок, добавляю цифры. Submit. Пишут: ваш пароль должен содержать хотя бы один из следующих символов (там всякие восклицательные знаки т.д.). Ненависть.

В конце должно выдать, что пароль уже используется

http://rsdn.nemerleweb.com
http://nemerleweb.com
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.