metaclass: (Default)
[personal profile] metaclass
По мотивам предыдущего поста про taucraft: решарпер там или не решарпер, но Test-Driven-Development штука (вроде бы) объективно полезная.

При этом я почти уверен, что я TDD не использую, т.к. уже 15 лет занимаюсь всякой хренью в экстренном темпе, тесты у меня все заключаются в "проверить 10 раз чтобы миграция 30 Гб БД прошла успешно" и "отчетность видна от имени пользователя, который ей будет пользоваться".

Правильность же реализации/рефакторинга/замены всего с нуля проверяется за счет двойной записи бухгалтерии, наличия нескольких путей расчета одной и той же цифры и статических гарантий (т.е., например, я никогда не стану делать отчет отдельными запросами по списку аналитических кодов, если его можно сделать одним select/group by, при этом в него нужная аналитика попадет гарантированно). Плюс функциональщина, статические типы, кодогенерация - ну невозможно ошибится в коде, если у тебя источник информации для кода всегда один. А ошибки вида "не так спроектировали" - тестами не лечатся.

Еще я не использую разного рода современные инструменты, версии студии меняю через 2-3 года после их выхода, склонен использовать самодельные компоненты вместо готовых и вообще страдаю ретроградством.

Проблема в том, что у меня совершенно нет критериев оценки, где я прав и пропускаю ненужные buzz-words мимо ушей, а где не прав, и упускаю полезные инструменты. Потому что на всех работах инструменты/платформы/методики работы выбираю я и обсудить этот выбор на адекватном уровне не с кем.
Раньше хотя бы был вменяемый критерий "успеем проект сдать вовремя или не сделаем вообще", а сейчас и он смысл потерял - это вообще перестало зависеть от используемых технологий, а стало зависеть от наличия бабла у клиентов и правильной организации труда.

Т.е. та же проблема, что в любых НИИГиТ - сидит 50летний мега-гуру, всю жизнь варившийся в собственном соку, который уже не в состоянии различить, где бессмысленная гонка за новизной или просто неподходящая технология, а где реально нужно отрывать жопу от стула и менять себе мозг.

Date: 2012-09-26 12:23 pm (UTC)
From: [identity profile] miserakl.livejournal.com
Не, я имел в виду: какие тесты (в олдовом смысле, без пруфов) были заменены?

Date: 2012-09-26 12:57 pm (UTC)
From: [identity profile] nivanych.livejournal.com
В первую очередь, которые было запросто доказать...
Но как эту закономерность выразить, не влезая в специфику, я не знаю...
Ну, естественно, что начинали без маньячения, без желания доказать всё-всё и больше никак.
В первую очередь, что было попроще, и постепенно, всё больше доказательств стало получаться записать относительно сходу.
Ну и, понятное дело, что доказательство, это тоже код на функциональном языке.
И его тоже можно (и нужно!) делать модульным.

Date: 2012-09-26 01:08 pm (UTC)
From: [identity profile] miserakl.livejournal.com
Не обязательно закономерность, хотя бы примеры :)

Date: 2012-09-26 01:20 pm (UTC)
From: [identity profile] nivanych.livejournal.com
"Будет ли f x всегда размера не более столько-то", например.

Date: 2012-10-11 12:43 am (UTC)
From: [identity profile] perepertoz.livejournal.com
ну например вместо череды
TEST_NOTNULL(f(a1)) для граничного а1
...
TEST_NOTNULL(f(an)) для граничного an
что-типа
PROVE_NOTNULL(f(x)) для любого х из области определения f
(ваш КО)
Edited Date: 2012-10-11 12:44 am (UTC)

Date: 2012-10-12 12:53 pm (UTC)
From: [identity profile] miserakl.livejournal.com
NOTNULL проверяется системой типов.

Date: 2012-10-12 01:40 pm (UTC)
From: [identity profile] perepertoz.livejournal.com
идею, я думаю вы всё-таки поняли :)

Date: 2012-10-12 01:57 pm (UTC)
From: [identity profile] miserakl.livejournal.com
Talk is cheap, show me the code.

Date: 2012-10-12 02:28 pm (UTC)
From: [identity profile] perepertoz.livejournal.com
увы, я только учусь, еще не волшебник Ж)
Edited Date: 2012-10-12 02:29 pm (UTC)

Date: 2012-10-12 02:55 pm (UTC)
From: [identity profile] miserakl.livejournal.com
Учитесь — то есть всё-таки собираетесь использовать доказательства на практике?

Date: 2012-10-12 05:17 pm (UTC)
From: [identity profile] perepertoz.livejournal.com
разумеется да.

Date: 2012-10-13 12:21 pm (UTC)
From: [identity profile] miserakl.livejournal.com
А не расскажете подробней? Для какого проекта, на каком языке, какими инструментами, есть ли уже примеры..?

Date: 2012-09-26 03:11 pm (UTC)
From: [identity profile] madf.livejournal.com
> Ну и, понятное дело, что доказательство, это тоже код на функциональном языке.
> И его тоже можно (и нужно!) делать модульным.
Возникает резонный вопрос: надо ли тестировать код доказательства? Или доказывать корректность доказательства? :)
А если серьезно - очень хотелось бы увидеть примеров в коде. Как тесты заменяются доказательствами. Пусть даже даже примеры будут синтетическими.

Date: 2012-09-26 03:45 pm (UTC)
From: [identity profile] nivanych.livejournal.com
> надо ли тестировать код доказательства?

Да, вопрос вполне резонный. Мы пока этого почти не делали.
А при чём-то очень большом, может быть, что и потребуется.
И долго спорили, можно ли сделать пирамиду таких доказательств (то есть, чтобы спецификация на спецификацию была короче спецификации)...

> Как тесты заменяются доказательствами.
> Пусть даже даже примеры будут синтетическими.

Нублин, ребята — осваивайте да сами смотрите...
Либо какие-то из открытых проектов можно посмотреть.

Date: 2012-10-11 12:57 am (UTC)
From: [identity profile] perepertoz.livejournal.com
>можно ли сделать пирамиду таких доказательств (то есть, чтобы спецификация на спецификацию была короче спецификации)...
берите пример с Вирта ;)

Date: 2012-10-11 04:32 am (UTC)
From: [identity profile] nivanych.livejournal.com
В смысле, слишком не париться спецификациями?

Date: 2012-10-11 04:36 am (UTC)
From: [identity profile] perepertoz.livejournal.com
насчёт "не париться" - не знаю
а вот чтобы от года к году они были всё короче и короче - это он даёт хорошие примеры :)

Date: 2012-10-11 04:45 am (UTC)
From: [identity profile] nivanych.livejournal.com
Мягко говоря, это неприменимо на практике.
Вот если бы от дня к дню — тогда было бы хорошо.

Date: 2012-10-11 08:06 am (UTC)
From: [identity profile] perepertoz.livejournal.com
ну... 50 Виртов и тогда хоть каждую неделю :DDD

Date: 2012-10-11 03:15 pm (UTC)
From: [identity profile] nivanych.livejournal.com
9 женщин за один месяц, да ;-)
Но доля правды в этом есть — надо таки стремиться к бОльшей технологичности этого процесса.

Date: 2012-10-11 07:13 pm (UTC)
From: [identity profile] berezovsky.livejournal.com
какого процесса? O_O

Date: 2012-10-12 03:46 am (UTC)
From: [identity profile] nivanych.livejournal.com
Создания спецификаций.
А вы про что подумали?

Date: 2012-10-12 04:16 am (UTC)
From: [identity profile] berezovsky.livejournal.com
прасто я запутался

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Oct. 8th, 2025 05:23 am
Powered by Dreamwidth Studios