|
|
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
На собеседовании спросили следующий вопрос: Есть метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вопрос звучал, как отрефакторить такой метод. На собеседовании я не сообразил, что от меня паттерн хотят услышать. Сейчас я думаю, что от меня хотели услышать паттерн "состояние". Правильно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 12:48 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Кто его знает что имел ввиду интервьювер. Это паттерн рефакторинга - замена условия полиморфизмом. Ограничен ли набор правильных ответов GoF - это вопрос открытый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 12:50 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90, Состояние, в принципе, подходит. Вопрос только в том почему SomeObject является внешним для this, реализующего doSomething(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 12:53 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
может нужно было увязать константы с соответсвующими методами? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 12:57 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczredwhite90, Состояние, в принципе, подходит. Вопрос только в том почему SomeObject является внешним для this, реализующего doSomething(). В оригинале это была строка, но как я заикнулся, что если строка, то можно в switch запихнуть мне сказали, что может быть и не строка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 13:04 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
rema174может нужно было увязать константы с соответсвующими методами? Не понял в чём идея. Даже не понял, что Ваша фраза значит. каким образом увязать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 13:13 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90Не понял в чём идея. Даже не понял, что Ваша фраза значит. каким образом увязать? Ну, он и имеет ввиду State Код: java 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 13:28 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
если предположить, что константы это String Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 13:35 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
rema174если предположить, что константы это String Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Как-то сложно) через рефлекшн. Хотя про стратегию. тоже версия есть... и про chain of responsibility ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 13:55 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
rema174, при переименовании метода будет ай-ай-ай ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 15:16 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90при переименовании метода будет ай-ай-ай С переименованием идея-то справится. Но при наличии Callable и лямбд такой код просто моветон. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 15:23 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90, по мне, так это паттерн "команда" в чистом виде. При чем тут "состояние" - непонятно. Вот примерно так: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 15:37 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
ivanra, Не-не-не. Команда это вообще не то. Она отвязывает получателя команды от отправляющего. Здесь либо состояние. Правда, не понятно почему оно передаётся из вне. Либо стратегия. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 15:49 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90, этот метод не является неправильным или некорректным с точки зрения Java. Нормальный себе такой метод. Правил языка не нарушает. Но есть некоторые векторы развития этого приложения если рассматривать его не в вакууме а в совокупности. Например - прогнозируется рост количества методов foo2, foo3, .... fooN с похожим паттерном сравнения - надо думать о RCWP или стратегиях. Прогнозируется добавление новых констант в количестве превашающем разумное число классов - надо думать о рефлексии. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:08 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
и скаждой новой версией код становится все жирнее ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:12 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Эта злая судьба - для всех проектов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:14 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczredwhite90при переименовании метода будет ай-ай-ай С переименованием идея-то справится. Но при наличии Callable и лямбд такой код просто моветон. В джава есть ещё какой-то Callable помимо многопточного? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:20 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowiczivanra, Не-не-не. Команда это вообще не то. Она отвязывает получателя команды от отправляющего. Здесь либо состояние. Правда, не понятно почему оно передаётся из вне. Либо стратегия. Точно, правильное название - "стратегия". В алгоритме написал одно, в названии другое :). Но поскольку в условиях задачи ничего не говорится о зависимости от внутреннего состояния, о все-таки это не "состояние" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 16:29 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
rema174если предположить, что константы это String А через Map на интерфейс не проще ли (Ну или Лямду). Хотя для трех элементов овчинка выделки не стоит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 17:26 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев А через Map на интерфейс не проще ли (Ну или Лямду). Хотя для трех элементов овчинка выделки не стоит. Виртуальный метод это лучший Map. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 17:27 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Вот еще прокси к самому себе городить. Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 18:13 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, А нет, Только сейчас прочел нужен matches, не equals ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 18:17 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев[src java] public static interface ThisRunnable { public void run(TestLambda th); } java.util.function.Function ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2015, 18:19 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, ну да. Но учитывая matches, Map не нужен. Все равно все перебирать и в определенном порядке массива хватит. Так что рефакторинг почти бессмыслен. Разве что ради динамики. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 09:15 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90На собеседовании спросили следующий вопрос: Есть метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вопрос звучал, как отрефакторить такой метод. rema174 - занесло.. создать интерфейс и классы Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. карту Код: java 1. 2. 3. 4. 5. и Код: java 1. 2. в патернах не селен как звать не знаю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 09:46 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38928164&tid=2125586]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
149ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 205ms |
| total: | 463ms |

| 0 / 0 |
