|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Здравствуйте! Предлагаю задачу начинающим программистам (класса FizzBuzz). Для изучения какого-нибудь языка, я просматриваю (поверхностно конечно) полную документацию по нему. Взяв список функций PHP (файл functions.txt во вложении), формирую аналогичный файл (functions-2.txt), в котором все функции пронумерованы по алфавиту, методы классов не нумеруются. Делаю это с помощью следующего кода (Python). Код: python 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.
Данный код не отвечает никаким стандартам программирования (SOLID, Strategy Pattern, ETL-Extract,Transform, Load). Вся обработка вынесена в тело цикла. Я не знаю, как код переписать грамотно в функциональном или ООП-стиле, чтобы его можно было расширять и сопровождать дальше (тяжелое наследие опыта с PL/1, Fortran, FoxBase, FoxPro). Я думаю, навскидку, этот код надо разбить ,как минимум, на 3 короткие функции (или 3 метода одного класса). Ответ можно не обязательно на Python. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.07.2020, 22:30 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi, 1) начинающие программисты языка Python программируют исключительно на языке Python, и поэтому не создают тяжелых наследий типа PHP, PL1, FoxPro, you name it. (Меньше знаешь - крепче спишь.) 2) и для решения подобного типа задач используют метаданные и модули типа inspect, которые являются частью языка Python и мне почему-то кажется, что в PHP тоже должно быть нечто подобное... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 02:02 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
кстати, забыла! еще в Python есть авто-генераторы документации, как, например, sphinx и pydoc ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 02:29 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi Я не знаю, как код переписать грамотно в функциональном или ООП-стиле, чтобы его можно было расширять и сопровождать дальше (тяжелое наследие опыта с PL/1, Fortran, FoxBase, FoxPro). Я думаю, навскидку, этот код надо разбить ,как минимум, на 3 короткие функции (или 3 метода одного класса). А зачем? Цель какая? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 02:43 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Любой рефакторинг должен начинаться с покрытия кода тестами. В противном случае как мы узнаем что не сломали функционал в процессе изменений ? Автор у тебя есть тесты? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 07:48 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Спасибо за ответы! Для подобных задач буду применять паттерн State. А в PHP 5479 функций (включая классы). ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 12:24 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi А в PHP 5479 функций (включая классы). очень хорошо, теперь вам будет чем заняться. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 13:07 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
При чем здесь state? Автор сам уже все решил? Ну ладно. Зачем тогда топик поднимал? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 13:14 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Если не стёб, конечно, прро сопровождение и расширение. Для ООП можно всё в класс завернуть хотя бы. Правда класс без геттеров будет. Ну, если сразу не стоит задача искать по номеру/имени. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 14:20 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Не стеб и не троллинг. Я переписал через паттерн State. Состояние понадобилось, потому что я не нумерую методы внутри класса. Код: python 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.
На выходе имею шпаргалку вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 15:17 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
в контексте поставленной задачи (и в контексте ее решения) слышать такие слова как "быдлокод", "дизайн-паттерн", "стандарты программирования", "стиль" это очень смешно ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 18:32 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Самоуничижение никогда не способствовало решению вопроса. По крайней мере здесь. На скруле. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 18:43 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
mayton Самоуничижение никогда не способствовало решению вопроса. По крайней мере здесь. На скруле. что ты имеешь ввиду под самоуничижением? человек парсит PHP код с помощью Питона, и при этом жалуется на быдлокод? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.07.2020, 19:18 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Опубликованный "особым образом" заголовок настраивает читателя на определённое отношение к теме топика и к автору. Это просто проверено наблюдением. Вместо того чтобы назвать топик технически-нейтрально ("парсер"), автор добавил эмоциональный эпитет. И теперь вместе с этим эпитетом нам всем дальше жить. До конца этого топика. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.07.2020, 18:17 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi Не стеб и не троллинг. Я переписал через паттерн State. Состояние понадобилось, потому что я не нумерую методы внутри класса. Код: python 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.
На выходе имею шпаргалку вида: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21.
Это не является паттерном Состояние. По крайне мере в классической реализации. Просто потому что здесь не инкапсулированы классы в отдельные состояния. Для такой задачи, вероятно, лучше чем поделить на несколько функций ничего не надо. Или готовое найти. Эксперименты над таким куском кода не позволять архитектурные темы понять, так как они обычно на уровне выше, когда уже набор классов есть, или всё приложение рассматривается целостно. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 20:00 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi ...Данный код не отвечает никаким стандартам программирования (SOLID, Strategy Pattern, ETL-Extract,Transform, Load).... Стандартов программирования нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.07.2020, 20:07 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
ShSerge, Соглашусь. Весь код одинаковый. Главное иметь нормальный редактор, хрясь Код: php 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.
И вдруг откуда ни возьмись, схожий код по структуре. ... |
|||
:
Нравится:
Не нравится:
|
|||
29.08.2020, 01:54 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
Для такой простой задачи применять разные паттерны и рассуждать о стилях можно только в академических целях. Сферический конь в вакууме. ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 01:20 |
|
Быдлокод-1 (26 строк) и стандарты программирования
|
|||
---|---|---|---|
#18+
grasi, Зачем это, когда есть нормальный справочник на php.net? ... |
|||
:
Нравится:
Не нравится:
|
|||
31.08.2020, 05:51 |
|
|
start [/forum/topic.php?fid=16&msg=39993971&tid=1339746]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
4ms |
others: | 13ms |
total: | 187ms |
0 / 0 |