|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
||||||
TDD: а ведь я не знаю типов возвращаемых функциями/методами данных10.04.2016, 13:58. Показов 1874. Ответов 31
Метки нет (Все метки)
Читаю книгу Test-Driven Development with Python by Harry Percival. Она на примере использования фреймворка Django.
Там все построено примерно вот в таком ключе: а давайте напишем вот такой тест.
Вот давайте представим, что мы видим все эти объекты в первый раз. Это модель. И для меня - лично - она очень реальна. Ибо я постоянно сталкиваюсь с незнакомыми объектами. Вот откуда я должен знать, что у объекта response есть свойство content? Какого оно типа? При программировании я обычно ставлю точку останова и смотрю, что прилетело. И от этого пляшу. Я и тут - в тесте - могу поставить точку останова и посмотреть, что прилетело. А по-другому я не могу. Теоретически можно рыть документацию. Но это не всегда помогает и насколько это трудоемко. Можно рыть код фреймворка - но тоже спорный момент. Точка останова гораздо быстрее дает возможность сориентироваться на местности. Я никогда не видел TDD в реальной жизни. Все знакомые программисты не то что TDD, они и просто тесты-то не пишут. По телевизору смотришь: мужик выступает и говорит, а я, говорит, не пользуюсь отладчиком. А зачем, говорит, у меня все в тестах. Да, это что же такое. Либо это позерство, либо он пишет совсем простые вещи (что маловероятно в современных условиях). Вы мне скажите, правильно ли я понимаю, что надо к тестам относиться попроще? Т.е. привык ставить точку останова и смотреть, что прилетело, так и делай при написании тестов. А если не можешь написать тест наперед, извините, придется в данном конкретном случае отказаться от TDD, написать продуктивный код и потом покрыть его тестами. Был бы рад услышать ваше мнение на этот счет.
0
|
||||||
| 10.04.2016, 13:58 | |
|
Ответы с готовыми решениями:
31
Увеличить размер возвращаемых данных Неизвестный тип возвращаемых данных |
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 13.04.2016, 12:27 [ТС] | |
|
Я вижу рацоинальное зерно. Но не согласен про невозможность использования тестов. Вот книжку прохожу по тестированию - ничего пока про SOLID не нашел. Я пока не вижу связи.
Я всецело за культуру программирования. Но надо постепенно. Я пока изучил фреймворк до какого-то уровня. сейчас добью книжку по тестам, и все: на боевой проект. А солидом можно попозже заняться, я думаю. А пока из культуры программирования в голове только: 1) Разбивать на логические кусочки, т.е. не городить огромных кусков кода. Если что-то огромное, значит, надо раздробить. 2) Классы имеют специализацию. Универсальных классов не надо. 3) DRY, и не хардкодить. 4) Стараться придерживаться конвенции по стилю программирования. Сюда же входит именование. 5) По возможности применять паттерны. 6) Ну, а дальше что-то из клиент-серверного. Как можно меньше запросов к серверу. Лучше за запросить за раз побольше, чем два раза запрашивать. Запрос медленый. И как можно меньше запросов к БД, ибо это самое медленное звено. SOLID - ну, я бы попробовал. Но нужна нормальная книжка с упражнениями и примерами. И на подходящем ЯП.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,047
|
|
| 13.04.2016, 12:36 | |
|
Kifsif, ты уже на верном пути. Конкретных упражнений по SOLID ты не найдёшь, ибо это просто набор принципов, которых следует придерживаться.
Пункт №2 - один из принципов SOLID. Вот нарыл более вменяемое разъяснение. Оно с примера на C#, но, думаю, тебе будет понятно.
0
|
|
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 13.04.2016, 12:43 [ТС] | |
|
SOLID пока не впечатляет что-то.
А вот с TDD у меня проблема такая. Если есть заготовки, то я их что же выбросить должен? Ну, надо же пилить от зародыша самого и покрывать все тестами. Хорошо если библиотечка у тебя уже готова, и можно ее просто подключить. А так-то кирпичики - обычная практика. Сохраняешь хорошие примеры себе для будущего использования. Это что же отказаться? Странно.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,047
|
|
| 13.04.2016, 12:46 | |
|
Ничего не понял. Что и зачем нужно выкидывать?
0
|
|
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 13.04.2016, 12:53 [ТС] | |
|
Есть готовые кусочки кода. Которые ты хозяйственно для себя сохранил. Ну, они где-то есть: либо ты знаешь, как их из готового проекта достать, либо просто в текстовом файлике они лежат. Либо ты их нашел на крутом сайте. В общем, готовый небольшой блочок кода для выполнения конкретной задачи.
Так вот, по TDD ты так делать не должен. Т.е. нельзя взять и вставить сразу кусок. Надо написать одну строчку, добиться предсказуемого падения теста, Потом дописать одно слово и ждать другого предсказуемого падения. И т.п. А вот взять и кусок вставить, даже если он тебе нравится - это противоречит принципам TDD. И как-то от кирпичиков отказываться не хочется.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,047
|
|
| 13.04.2016, 13:01 | |
|
Kifsif, это именно то, от чего я тебя пытался предостеречь - тупой формализм вместо того, чтобы взять и сделать, возникают какие-то надуманные проблемы.
Такая последовательно действий TDD диктуется только для одной цели - заставить тебя написать тестопригодный код (если ты код ещё не написан). Если код уже есть, то у тебя три варианта: 1) Не греть голову и использовать то, что уже есть (предпочтительно); 2) Переделать этот код, чтобы он стал тестопригодным; 3) Переделать этот код, чтобы он стал тестопригодным и покрыть его тестами;
0
|
|
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 13.04.2016, 13:03 [ТС] | |
|
У меня пока нет опыта. Я бы сказал, что третий вариант предпочтительнее.
0
|
|
|
14784 / 9558 / 1366
Регистрация: 21.01.2016
Сообщений: 36,047
|
|
| 13.04.2016, 13:11 | |
|
В любом случае ничего выкидывать не нужно)
0
|
|
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|||||
| 13.04.2016, 17:42 | |||||
|
0
|
|||||
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
||
| 13.04.2016, 18:12 [ТС] | ||
|
Как ты возьмешься за новый проект? С нуля или все-таки будешь допиливать имеющийся код?
0
|
||
|
Игогошка!
1801 / 708 / 44
Регистрация: 19.08.2012
Сообщений: 1,367
|
|
| 13.04.2016, 18:27 | |
|
0
|
|
|
145 / 113 / 31
Регистрация: 12.06.2011
Сообщений: 1,246
|
|
| 13.04.2016, 18:29 [ТС] | |
|
Спасибо. В общем, опыт нужен.
0
|
|
| 13.04.2016, 18:29 | |
|
Копирование возвращаемых данных по адресу подскажите Функция с разным типом возвращаемых данных
Почему разный тип возвращаемых данных при использовании await? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Nekobox - outbounds[0].transport: unknown transport type: raw
damix 01.10.2026
Фикс ошибки
Правым кликом по серверу -> отладочная информация -> edit
Заменить "net": "raw", на "net": "tcp",
Нажать кнопку reload.
|
Программный домашний кинотеатр
russiannick 27.09.2026
Сподобился на программный домашний кинотеатр. В качестве ЯВУ по традиции выбрал js.
В помощники взял Яндекс-Алису.
Было создано три зала на разные интересы.
исторические и ретро
сериал Хичкок. . .
|
Беседа с ИИ о программистах, недопускающих к созданию и правке кода генеративные ИИ и причины этого
zorxor 21.09.2026
Раньше я радовался или получал некоторые эмоции, пусть небольшие, но всё же, от самого процесса написания кода, рекомпиляции и запуска, видя постепенное развитие программы и прочее. А теперь лень. . .
|
Мобильное приложение ColorStep
pavlinmavlin 17.09.2026
Реализовал приложение Красный, Зеленый, Синий в Unity3d + c#.
Название изменил на ColorStep.
Приложение прошло модерацию и теперь доступно для скачивания. Делал его сам, шаг за шагом — и вот,. . .
|
|
Запрет дублирования строк в табличной части
Maks 13.09.2026
Реализация из решения ниже выполнена на нетиповом справочнике "Нормы ТО" с табличной часть "Виды ТО", разработанного в КА2, со следующими реквизитами:
- ВидТО (СправочникСсылка. ВидыТО);
- ВидГСМ. . .
|
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Jin X 06.09.2026
Скрипты Tampermonkey для CyberForum, ChatGPT, Claude и пр.
Работая с форумом и нейросетями в браузере часто хочется что-то подкорректировать или добавить какого-то функционала.
Ниже прикреплён. . .
|
Программа опроса у.з. расходомера SLS-720F
Argus19 02.09.2026
Программа опроса у. з. расходомера SLS-720F
Программа опрашивает один раз в минуту три ультразвуковых расходомера SLS-720F через интерфейс RS-485 по протоколу Modbus RTU.
Опрашиваются регистры. . .
|
Hyper-V: Компьютер должен поддерживать доверенный платформенный модуль 2.0.
Maks 31.08.2026
При установке Windows 11 на виртуальную машину Hyper-V 2-го поколения вылезла такая ошибка:
Решение: в параметрах виртуальной машины, в разделе "Безопасность" (Security) активировать флаг. . .
|