Войти
ФлеймФорумПрограммирование

Выполнение действия перед выходом из функции (без всяких goto) (6 стр)

Страницы: 1 2 3 4 5 6 7 Следующая »
#75
13:20, 12 мая 2019

Suslik

> если в программе есть функции из более чем 5 строчек
Тут надо сразу приводить, например, что-нибудь из твоих экспериментов с SoA :)


#76
13:20, 12 мая 2019

Ну или какой-нибудь урок по Вулкану.

#77
13:30, 12 мая 2019

Ghost2
> Ну или какой-нибудь урок по Вулкану
уроки по вулкану — это вообще ад и содомия, они все структурированны ужасно. но замечание на самом деле правильное — это значит, что у api с настолько массивным интерфейсом вообще не может быть оптимально структурированного кода. а свой код более чем двухлетней давности мне всегда читать страшно, тут ты америку не открыл.

#78
13:38, 12 мая 2019

> если в программе есть функции из более чем 5 строчек
Встречная мудрость: если в программе есть функции, которые не являются частью публичного интерфейса и вызываются из не более чем одного места, то это говнокод. Без всяких "но", "зато" и "да нихрена".

#79
(Правка: 20:02) 19:54, 12 мая 2019

Sbtrn. Devil
> Встречная мудрость: если в программе есть функции, которые не являются частью
> публичного интерфейса и вызываются из не более чем одного места, то это
> говнокод.
+
Ivashka
> Но за то у такого кода большая производительность
наверное из-за кучи лишних копирований переменных в регистры и call-ов функций... что-то ты белены объелся Ивашка :)

#80
21:29, 12 мая 2019

Ну, что же? Отрадно.
Теперь мы знаем: 5 строк для ГД мало, а 8, как мы видели ранее, уже слишком много. Т.е. 6-7 - Ок!

#81
(Правка: 10:16) 10:16, 13 мая 2019

У меня подход попроще. Функция должна делать то, что написано в ее названии. А названия функций не должны быть слишком длинные. А сколько строчек в функции - все равно. Главное что бы отформатировано было и логические куски разделены пустой строкой. Тогда с читабельностью и фрагментированостью проблем нет.

#82
10:19, 13 мая 2019

oxotnik
> У меня подход попроще.
А Лев Толстой, дебил, не знал!

#83
10:54, 13 мая 2019

Suslik

> свой код более чем двухлетней давности
Дело не в коде, а в количестве оптимизаций в том коде. Я про порт Зевса, если что.

#84
11:08, 13 мая 2019

Suslik
> так как он работал лидом уже не в одной ААА конторе
То есть сам не писал?

#85
11:25, 13 мая 2019

Suslik
Предположим, мы имеем некую идеальную программу, где идеальная архитектура и все функции строго меньше 5 строчек (кстати, почему, не 4, 6, 1?). Допустим, нам нужно добавить какой-то функционал и мы нашли место, куда нам надо вставить 1 строчку, но функция уже 5 строк. Нам необходимо разбить ее на несколько функций, чтобы не сломать идеальность?
Я, конечно, в лидах не ходил, но какой-то опыт имею. И по моему опыту функции разрастаются именно из-за того, что туда со временем добавляют новый код разные люди и ленятся отрефакторить и разбить на составные части, мотивируя тем, что "а до меня так и было, я тут только немножко добавил".

#86
11:40, 13 мая 2019

PANDA
> Допустим, нам нужно добавить какой-то функционал и мы нашли место, куда нам
> надо вставить 1 строчку, но функция уже 5 строк.
Быдлокодер детектед.

#87
(Правка: 11:45) 11:44, 13 мая 2019

PANDA
> Нам необходимо разбить ее на несколько функций, чтобы не сломать идеальность?
  Подобные правила обычно предусматривают, что какой-то процент кода не будет под них подпадать. Это так же, как с тестами: в идеале покрытие кода должно составлять 100%, но на практике этого никогда не добиться (во первых не всегда понятно что считать кодом, а во вторых когда считать функцию с бесконечным количеством вариантов входных параметров полностью протестированной). Но вообще в SOLID есть принцип открытости/закрытости, который говорит, что когда в код нужно добавить что-то, то лучше расширить функционал с помощью новых классов, чем с помощью изменений в уже существующем коде, который где-то используется.

> И по моему опыту функции разрастаются именно из-за того, что туда со временем
> добавляют новый код разные люди и ленятся отрефакторить и разбить на составные
> части, мотивируя тем, что "а до меня так и было, я тут только немножко добавил".
  Вот OCP как раз про это.

#88
0:17, 14 мая 2019

1 frag / 2 deaths
> То есть сам не писал?
Ходил с плёткой и подбадривал индусов, которые выдавали недостаточный клик-рейт.

PANDA
> И по моему опыту функции разрастаются именно из-за того, что туда со временем
> добавляют новый код разные люди и ленятся отрефакторить и разбить на составные
> части, мотивируя тем, что "а до меня так и было, я тут только немножко
> добавил".
И чаще всего правильно делают. Потому что, если надо срочно откатывать одиночное изменение из-за внезапного кабздеца, а поверх него уже накопилось несколько других, которые нужно сохранить, или нужно интегрировать понаписанное в соседний коделайн, то любителей отрефакторить до неузнаваемости (для диффа) очень быстро захочется бить ногами.

#89
(Правка: 4:37) 4:35, 14 мая 2019

Sbtrn. Devil
> Потому что, если надо срочно откатывать одиночное изменение из-за внезапного кабздеца,
> а поверх него уже накопилось несколько других, которые нужно сохранить,
> или нужно интегрировать понаписанное в соседний коделайн,
> то любителей отрефакторить до неузнаваемости (для диффа) очень быстро захочется бить ногами.
Всё-таки лучше добавить новую функцию: и дифф дружелюбно, и гарантирует обратную совместимость.

И такая хорошая денежка в копилку технического долга.
Которым потом должны как раз Лиды и заниматся. Но тим лиды, по определению раздолбаи, и этого делать не будут.
(оставляя растущий техдолг, набивать шишки подростающим на их смену лидам)

Страницы: 1 2 3 4 5 6 7 Следующая »
ФлеймФорумПрограммирование