|
|
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#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 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
silvan, Код: java 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 09:47 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев, Даже скорее Consumer. Чтобы написать простенький еще один калькулятор Код: 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. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 10:00 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
redwhite90На собеседовании спросили следующий вопрос: Есть метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Вопрос звучал, как отрефакторить такой метод.Незачем его рефакторить. P.S. Вся последующая дискуссия это доказывает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 11:46 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
For All, В общем то да, но если часто надо менять набор констант или, например, встала задача подгружать его из базы, то логично сделать связанные массивы констант и методов. Быстрее работать не будет, но поведение управляться будет легче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 12:13 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
For All Вопрос звучал, как отрефакторить такой метод.Незачем его рефакторить. P.S. Вся последующая дискуссия это доказывает[/quot] Правильно! Порвать шаблон интервьюеру и работа в кармане. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 12:15 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Если только именно это и не хотели услышать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 12:17 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Интервьюер как отрефакторить такой метод? Я тут с мужиками на sql.ru посоветовался, все в один голос твердят, что главная заповедь программиста - НЕ ТРОЖЬ ЧТО И ТАК РАБОТАЕТ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 12:20 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
настоящий программер, читай - ленивый программер, оставит как есть ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 13:03 |
|
||
|
Какой паттерн использовать чтоб заменить многочисленные ифы?
|
|||
|---|---|---|---|
|
#18+
Я рефакторю обычно то что covered by unit-tests. Или после своего рефакторинга пересылаю ревизию коллегам и прошу тщательно просмотреть. За рефакторинг "просто так" или "по приколу" нужно бить по рукам. Дефекты которые возникают после таких внезапных налётов "теоретиков" и любителей Фаулера, трудноуловимы и будучи на виду остаются "невидимками". Такой-себе эффект замыливания глаза. Вы никогда и нигде не подумаете что баг возник вследствие ваших улучшений. Будете упорно искать в других местах. Селяви. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2015, 13:09 |
|
||
|
|

start [/forum/topic.php?all=1&fid=59&tid=2125586]: |
0ms |
get settings: |
6ms |
get forum list: |
18ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
163ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
85ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 503ms |

| 0 / 0 |
