@proRuby

Страница 782 из 1594
Dmitriy
02.10.2017
15:17:54
А ну если так, Но тогда очень много методов будет же

Или это ничего страшного?

Anton
02.10.2017
15:18:33
ну

Oleg
02.10.2017
15:18:39
Где-то я видел правило что метод должен быть не более 7 строк

Google
Anton
02.10.2017
15:18:41
можно не только по методам разделять

но и по классам

Gleb
02.10.2017
15:19:50
было время, когда действовало правило "метод должен помещаться в один экран"

Dmitriy
02.10.2017
15:23:44
Ладно, буду придерживаться этому правилу

Alex
02.10.2017
15:27:26
А ну если так, Но тогда очень много методов будет же
много легкочитаемых методов лучше чем мало плохочитаемых - для этого правило и придумали

Alex
02.10.2017
15:27:50
а не класс на 100 однострочных методов

Oleg
02.10.2017
15:28:19
Есть книга "Чистый код", вот там во главу угла поставлено это всё. И там ещё про компромисы когда излишние ограничения могут навредить и тп.

И как когда и как поступать

С примерами

Правда на Java

Но там не про язык, так что понятно

Google
Alex
02.10.2017
15:28:58
Alex
02.10.2017
15:29:11
а что в этом плохого?
бегать по всему классу чтобы понять его работу нахер надо

Oleg
02.10.2017
15:29:18
+

Alex
02.10.2017
15:29:54
мне особенно "нравятся" классы типа def call set_post process_form update_data end

Anton
02.10.2017
15:30:43
Alex
02.10.2017
15:30:53
вполне норм, что не нравится?
потому что бегаешь по методам как дурак

а особо умные там сайдэффекты создают

Alex
02.10.2017
15:31:17
основная бизнеслогика должна проходить в главном методе, с методами хелперами.

Alex
02.10.2017
15:31:36
звучит как фигня
то что я выше скинул фигня

Oleg
02.10.2017
15:31:36
Тут всё зависит от того а что в этих методах

Nikita
02.10.2017
15:31:38
def main

Anton
02.10.2017
15:31:38
у меня основная логика разделена на 5 классов и методов 10 наверно

def main
именно!

Alex
02.10.2017
15:32:01
Anton
02.10.2017
15:32:05
то что я выше скинул фигня
там у тебя должен быть последовательный и инкапсулированный флоу

Alex
02.10.2017
15:32:05
именно!
что именно? def main юзает классы, все просто

Fedor
02.10.2017
15:32:09
тоесть def call #300 строк одного метода #200 строк другого метода #еще 150 строк кучки мелких вспомогательных методов end выглядит круче?

Google
Oleg
02.10.2017
15:32:34
То есть смысл то в том что есть метод, который делает то как назван, есть 3 метода-шага, которые делают по частям это единое целое, при этом внутри уже низкоуровневая бизнес-логика с вычислениями.

Alex
02.10.2017
15:32:37
даже 50 не наберется. Если наберется то стоит подумать о других классах.

Oleg
02.10.2017
15:33:13
Идеально когда шаги могут быть переиспользованы

Alexey
02.10.2017
15:33:26
https://robots.thoughtbot.com/sandi-metz-rules-for-developers

Oleg
02.10.2017
15:33:29
И переиспользуются

Alexey
02.10.2017
15:33:36
идеальные правила

Alex
02.10.2017
15:34:08
> Methods can be no longer than five lines of code. Фигня

Oleg
02.10.2017
15:34:13
Есть более жесткие с 3мя аргументами

Alexey
02.10.2017
15:34:14
нет

Anton
02.10.2017
15:34:15
идеальные правила
докажи мне, что у тебя нет методов длинее 5 строк ?

Alex
02.10.2017
15:34:16
да

Alexey
02.10.2017
15:34:23
это делает все понятным

Alex
02.10.2017
15:34:30
это делает все запутанным наоборот

Alexey
02.10.2017
15:34:30
и заставляет тебя думать над названиями

Alex
02.10.2017
15:34:40
нет это заставляет тебя без причины плодить методы

Oleg
02.10.2017
15:34:40
А вот 5 строк мало, 7 норм. Но вы уже ощищаете это?! Дух холивара за лимиты правил!

Alex
02.10.2017
15:34:44
а потом бегать как дурак.

строк 15 норм, у меня там банально хэшик может собираться

Oleg
02.10.2017
15:35:23
Хеш, кстати, можно за одну строку считать, если там нет вычислений сложных внутри прям

Alex
02.10.2017
15:35:39
Хеш, кстати, можно за одну строку считать, если там нет вычислений сложных внутри прям
ну да, бегай по 100 методам разбирайся какая конечная форма у хэша будет

Google
Oleg
02.10.2017
15:35:53
Ну вот, собственно компромисы

Это очень тонкое искусство конечно - писать хороший код

Alexey
02.10.2017
15:36:08
@davydovanton только если совсем никак не разделить)

Oleg
02.10.2017
15:36:20
Где не 100500 строк и не 100500 вложенностей, но и не 100500 методов

Alex
02.10.2017
15:36:22
Это очень тонкое искусство конечно - писать хороший код
тонкое искуство это найти золотую середину.

Anton
02.10.2017
15:36:30
самое тупое, что я могу примеров 20 с головы назвать, когда не разделить

Oleg
02.10.2017
15:36:31
И я об этом

самое тупое, что я могу примеров 20 с головы назвать, когда не разделить
У меня такой алгоритм был, где куча матана и нельзя было просто так взять и адекватно порезать без боли и 100500 аргументов

Anton
02.10.2017
15:37:53
это уже 6 строк

Admin
ERROR: S client not available

Oleg
02.10.2017
15:38:50
Вот, поэтому по мне так 5 мало

А так да, по факту 15 вполне себе ок

Но главное чтобы они делали одно действие, заданное именем

No
02.10.2017
15:40:18
5 строк лимит на метод?

шта?

Oleg
02.10.2017
15:40:20
Ну, за исключением извращенских методов с названием doProcess и тп, особенно когда вообще не ясно что за процесс то

No
02.10.2017
15:40:30
я очень критичен к длине своих методов, но даже для меня это слишком

Oleg
02.10.2017
15:40:32
шта?
Есть такие, да

No
02.10.2017
15:40:33
10-15 самое то

Google
Alex
02.10.2017
15:40:46
15 оптимально

иногда больше если метод хорошо читается.

Oleg
02.10.2017
15:40:56
Есть компании где программистам платили за количество методов.... ну вы поняли....

Alex
02.10.2017
15:41:06
KPI вообще ерунда.

считать сколько дохода принес погромист - ооооч сложно

No
02.10.2017
15:41:29
а какой профит от 5 строк? как аргументируется?

ибо в куче случае ты даже не сможешь придумать нормальное название метода, чтобы вынести

если у тебя допустим 7 строк вместо 5

Oleg
02.10.2017
15:42:21
Аргументируется мол абстракция простая выходит и быстро понимаешь

Ну, вот так вот считают авторы правил

No
02.10.2017
15:42:37
а называть методы в стиле do_one_and_do_two_if_conditions_true

это уже маразм, имхо

он любит давать дельные советы, но не говорить о том, что это рекомендации, а не железное правило

и после программисты зарабатывают невроз от того, что не могут писать как дядя Боб

Alex
02.10.2017
15:44:49
а дядя боб смееца.

No
02.10.2017
15:45:06
я серьёзно, убил себе когда-то кучу нервов, разнося неразносимое

по советам дяди Боба, когда методы были слишком длиными, чтобы пройти его правила

Alexey
02.10.2017
15:45:49
да банальнее пример if interactor.success? flash[:status] = 'cool' redirect_to ... else render ... end
Плохой пример if interactor.success? redirect_to ..., flash: { status: 'cool' } else render ... end

Alex
02.10.2017
15:46:18
Плохой пример if interactor.success? redirect_to ..., flash: { status: 'cool' } else render ... end
реальный метод редиректа вылетит на две строки

No
02.10.2017
15:46:31
Плохой пример if interactor.success? redirect_to ..., flash: { status: 'cool' } else render ... end
этот пример похуже, всё-таки установка flash на отдельной строке очевиднее будет

сразу перед глазами, как отдельное действие

а не как часть редиректа

Страница 782 из 1594