Size: a a a

Cicerone Chat (RUS)

2017 February 10

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
метод handleCommand - удалось прочесть раза с пятого)
источник

DC

Denis Chuvasov in Cicerone Chat (RUS)
Да запутанность это большой минус
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
не стоит сокращать код ухудшая читаемость
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
никому от этого профита нет
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Ребят, а у меня в голову такая мысль пришла.... А что если сделать кастомный роутер и там сделать методы наподобии:

navigateToMainScreen(MainScreenArgs args);
navigateToProjectsScreen(ProjectScreenArgs args);

и т. д., т.е. смысл в том чтобы сделать удобную сигнатуру вызова, чтобы передать туда параметры для конкретного экрана, а роутер же уже знает как открыть конкретный экран. Вместо того чтобы использовать navigateTo(ScreenName, params). Как Вам такой роутер? покритикуйте.
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Alexey Pushkarev
Ребят, а у меня в голову такая мысль пришла.... А что если сделать кастомный роутер и там сделать методы наподобии:

navigateToMainScreen(MainScreenArgs args);
navigateToProjectsScreen(ProjectScreenArgs args);

и т. д., т.е. смысл в том чтобы сделать удобную сигнатуру вызова, чтобы передать туда параметры для конкретного экрана, а роутер же уже знает как открыть конкретный экран. Вместо того чтобы использовать navigateTo(ScreenName, params). Как Вам такой роутер? покритикуйте.
Можно, но зачем? )
Это ж столько методов писать, а профит не очень то и большой как по-мне.

Плюс "найди 10 отличий":
navigateToSomeScreen(someScreenArgs)
navigateTo(someScreenName, someScreenArgs)

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

AP

Alexey Pushkarev in Cicerone Chat (RUS)
Vasili Chyrvon
Можно, но зачем? )
Это ж столько методов писать, а профит не очень то и большой как по-мне.

Плюс "найди 10 отличий":
navigateToSomeScreen(someScreenArgs)
navigateTo(someScreenName, someScreenArgs)

То есть все эти доп методы будут только ради того, чтобы вынести название экрана из метода.
профит будет только в том, что нельзя будет что угодно передать в качестве аргументов, как это сейчас можно сделать с navigateTo т.к. аргументы там Object. Хм...
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
А что за проблема с тем, что туда можно передать что угодно. Проверяй на входе, что это то что тебе надо. И ругайся если это не то что-то.
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Это вылезет в процессе разработки и проблем не будет.
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Это ж ты кидаешь туда аргументы, а не кто-то там.
источник

AP

Alexey Pushkarev in Cicerone Chat (RUS)
так-то да, видимо профита будет немного
источник

IK

Igor Komarov in Cicerone Chat (RUS)
Vasili Chyrvon
Можно, но зачем? )
Это ж столько методов писать, а профит не очень то и большой как по-мне.

Плюс "найди 10 отличий":
navigateToSomeScreen(someScreenArgs)
navigateTo(someScreenName, someScreenArgs)

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

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Igor Komarov
смотри проще, идет логическое разделение аргументов и рецепиента, что весьма правильно
Поясни.
источник

IK

Igor Komarov in Cicerone Chat (RUS)
А что пояснять то, идет разделение между аргументами, которые передаются рецепиенту, и идентификатором рецепиента
источник

IK

Igor Komarov in Cicerone Chat (RUS)
SRP жи
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
SRP тут вообще ни при чем.
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
В методе navigateTo(someScreenName, someScreenArgs) они не смешаны. Отдельно получатель и отдельно аргументы.
источник

KT

Konstantin Tskhovrebov in Cicerone Chat (RUS)
на данный момент есть несколько задуманных моментов:
1) все ключи экранов описываются в одном месте - это дает представление о карте прилодения.
2) Роутер в большинстве случаев трогать не надо

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

VC

Vasili Chyrvon in Cicerone Chat (RUS)
А вот если в роутер напихать методы типа navigateToSomeScreen, то принцип единой ответственности как раз будет нарушен.
источник

VC

Vasili Chyrvon in Cicerone Chat (RUS)
Потому что у рутера другая задача.
источник