↓
 ↑
Регистрация
Имя/email

Пароль

 
Войти при помощи
Ластро
26 октября 2015
Aa Aa
#Цитаты #Айтишное
Динамическая типизация просто делает проверку на наличие ошибок более захватывающим.

Мисьё знает толк...
26 октября 2015
19 комментариев из 21
StragaSevera Онлайн
1. В серьезных проектах, будь язык хоть сто раз статическим, юнит- и интеграционные тесты все равно обязательны.
2. А коли мы уже пишем обстоятельные тесты, не проще при помощи них еще и сократить время разработки, перейдя на динамику?
StragaSevera Онлайн
> Хотя расчехляю редко, ибо там где нужна производительность(вот как сейчас мне для диплома нужно), я буду использовать С, а где не нужна - python, ибо батарейки есть на все случаи жизни.
А почему или-или? Или в питоне биндингов нет?)
StragaSevera Онлайн
> Даже для небольшого сайта с блогом, авторизацией и комментами я не вижу никакого смысла ни в сколь-нибудь сложной архитектуре, ни тем более в тестах.
/facepalm
Да-да-да. Лучше дрожать при каждом изменении о том, что ты что-то поломал, лучше вначале оверинжинирить над листом бумаги или городить акын-стайл код, вместо того, чтобы заюзать "рабочие леса" - тесты, которые, фактически, являются спецификацией...
StragaSevera Онлайн
Mikie
> Шта? Если для пяти файлов(index,admin,showpost,register) нужны такие усилия, то это и есть оверинжиниринг.
Какие "такие" усилия-то? Усилия написать за пять минут простую спецификацию, которая, внезапно, оказывается тестом и упрощает написание?

> И надо быть реалистом и не фантазировать, что "я буду в этот мой сайт вносить новые фичи и он станет популярным, и нужно пэтому нужно будет существенно обогащать код фичами, а это без <whatever> невозможно..."
Ну, если ты не планируешь развивать свой сайт, то, может быть, просто накатить Wordpress и не париться?
StragaSevera Онлайн
> Вот не понимаю, почему бы просто не писать код?
Хочешь, я покажу тебе свой первый относительно большой проект (ремейк игры Lines на Delphi), написанный в то время, когда я считал, что нужно "просто писать код"? С кодом спагетти-стайл, кодом в обработчиках кнопок, кодом везде? =-)

> Если только ты не решил на примере сайта получше разобраться с %langname%.
Угу. А когда внезапно обнаружится, что твой сервер стал чьим-то шеллом, или что все посты исчезли из БД, а сайт дефейснут - то ты потратишь куда больше усилий, чем пятиминутная спецификация, сокращающая само написание кода...
StragaSevera Онлайн
Mikie
> Именно это означает "просто писать код".
Очень удобное определение, чо.
Если определять это так, то я настаиваю на включение в пункт "best-practices" написание тестовых спецификаций, ускоряющих написание кода. И тогда - да, я агитирую за "просто писать код".
StragaSevera Онлайн
Mikie
> А наговнокодить и с тестами можно, просто говно будет не сразу бросаться в глаза.
Наговнокодить можно с чем угодно. Тесты упрощают рефакторинг говнокода и уменьшают степень его говнистости - в среднем.
StragaSevera Онлайн
Mikie
Э-м-м. Нет, я тоже без них обошелся, ибо считал, что они не нужны. И?
Например, можно написать фанфик, обходясь без буквы "И", а потом ходить гордым за это.
StragaSevera Онлайн
Mikie
Нет, это я не понимаю, что ТЫ хочешь сказать.
Мой аргумент: "Вполне можно написать нормальную программу, не соблюдая гайдлайны, не тестируя, проводя разработку методом акынов (что вижу, то пою^Wпишу) - но это не значит, что так надо делать".
Твой аргумент: "Но ведь можно написать нормальную программу, не соблюдая гайдлайны, не тестируя и проводя разработку методом акынов!!!111".
Твой аргумент входит в мой аргумент, не?
StragaSevera Онлайн
Mikie
О. Мы наконец-то начали рассуждать статистически? Это прорыв, лол.

> Для деятельности, которую можно назвать "говнокодить" я имеют слово "говнокодить".
Проблема в том, что словом "говнокодить" обозначается не разработка, имеющая определенные черты, а разработка, которая тебе не нравится. Именно поэтому слово "говнокодить" бессмысленно.

> Нет, твой аргумент - "Вполне можно написать программу, не тестируя, проводя разработку методом акынов (что вижу, то пою^Wпишу) - но получится скорее всего говно"(см. свой коммент про дефейс и лапшекод)
Ложь и передергивание.
Мой аргумент - "Вполне можно написать нормальную программу, не соблюдая гайдлайны, не тестируя, проводя разработку методом акынов - но это не значит, что так надо делать, потому что вероятность совершить серьезную ошибку или запутать код до полной неподдерживаемости повышается".
Обрати внимание на разницу между "но получится скорее всего говно" и "потому что вероятность совершить серьезную ошибку или запутать код до полной неподдерживаемости повышается". Я разговариваю на уровне статистики - малые затраты (пятиминутный acceptance-тест) могут избавить от серьезных проблем. А могут и не избавить. А могут и навлечь эти проблемы. Но в бОльшей части случаев - избавят.
Действительно, можно разрабатывать без тестирования. Точно так же можно разрабатывать, не используя рефакторинг, или не расставлять отступы в коде, или писать в стиле акына. И в некоторых случаях это не повредит или даже поможет. Но в бОльшей части случаев - повредит.
Тестирование органично вплетается в workflow разработки. Оно помогает четче понимать требования к своему коду, меньше тратить время на ручную отладку и частые проверки вроде: "Не сломал ли я случайно Х?". Оно дает уверенность в себе. Тесты выступают в некотором роде как документация твоей программы.
В некоторых, специальных случаях тесты действительно нанесут вред или не принесут пользы. То же относится и к расставлению отступов, рефакторингу, слабой связности или войне с лапшекодом. То же относится к пристегиванию ремнем в автомобиле или к оглядыванию при переходе через дорогу. Но это не значит, что этим не нужно пользоваться.
Показать полностью
StragaSevera Онлайн
> Важное уточнение, если ты не следишь за контекстом, то напомню: речь идет о домашних поделках, не крупнее сайтика из пятка страниц.
Я за контекстом слежу, и в контексте этого не было, а было лишь в примере.
И, да. Даже сайтик из пяти страниц можно сделать на пять секунд быстрее, написав в начале тест. Который поможет тебе сразу понять, какие css-id ты расставишь на сайте или как назовешь свой контроллер.
Нет, я не отрицаю, что бывают специальные случаи, когда. Я лишь настаиваю, что в таких случаях нужно очень хорошо понимать, что ты делаешь, а не просто отмахиваться: "бесполезная херня".
StragaSevera Онлайн
> У твоего подъезда в пяти метрах стоит ларек(дорогу переходить не надо, если это важно), в котором ты можешь купить хлеб. Сейчас зима, минус десять. Тебе понадобилось купить хлеб, ты не одеваясь(поленился) спустился, купил - юркнул обратно в подъезд. Твоё время пребывания на улице не превысило тридцати секунд.
Можно не одеваться тепло, если ситуация такая. Если тебе нужно совершить более длительную прогулку, скажем через дорогу, в ближайший супермаркет, то тебе лучше одеться потеплее.

Есличо, ты сделал прекрасный пример моей позиции.
Да, МОЖНО не одеваться, если ты будешь тридцать секунд на улице. И шанс того, что ты от этого простынешь, будет мизерным. Но он будет, и ты мог его устранить, одевшись.
Да, МОЖНО не оглядываться по сторонам, если ты переходишь тысячу раз перейденную улицу, на которой дай бог раз в полчаса появится машина. Но ты можешь устранить мизерный шанс быть сбитым, оглянувшись.
Да, МОЖНО не пристегиваться, если ты едешь через три квартала. Но ты можешь уменьшить среднюю ожидаемую травму от аварии, пристегнувшись.
Главное при всем при этом - отдавать себе отчет. "Да, я понимаю, что могу простыть, и принимаю этот риск. Да, я понимаю, что могу быть сбитым, и принимаю этот риск. Да, я понимаю, что могу получить сервер в ботнете, и принимаю этот риск."
А не прятаться за мысли вроде: "Ой, да кому этот сайт нужен? Ой, да в кого я врежусь здесь?".
Показать полностью
StragaSevera Онлайн
> Ты не идешь на него. В это суть моей аналогии. Риска НЕТ. Вероятность заболеть от этого настолько мала, что в любом практическом применении её следует класть равной нулю.
Ложь, ибо опровергается одним примером, который у меня был.
Следовательно, ты передергиваешь.
StragaSevera Онлайн
> Во-первых, ты абсолютно точно не знаешь, заболел бы ли ты, если бы не оказался на тридцать секунд на улице в минус десять.
Прекрасно, прекрасно.
А если я переходил дорогу, по которой в средем едет одна машина в полчаса, не оглянулся и оказался сбит - я не могу быть уверен, что, если бы я оглянулся, то не оказался бы сбит тоже. Ачо, может, там пьяный водитель на тротуар бы выехал! И вообще, невозможно установить вероятности ничего, и вообще, мы живем в матрице!
tl;dr
но нафига тестить простые вещи?
StragaSevera Онлайн
Mikie
Мне кажется, что вопрос про "унылейший троллинг" нужно задавать мне, а не тебе.
Да, я действительно не различаю эти ситуации. Видимо, потому, что стою на устаревших позициях вроде "где-то там существует реальность, и мы можем прикидывать вероятности в ней".
Итак, если предположить, что ты не троллишь, а действительно не понимаешь моей позиции, попробую переформулировать ее еще раз:

"Существует опасность Х.
Существует способ уменьшить ее опасность Y, имеющий некоторые накладные расходы.
Существуют ситуации, когда опасность Х так мала, что ее риск перевешивается в глазах выбирающего агента нежеланием платить накладные расходы Y.
В любой ситуации, когда накладные расходы имеют хоть немного меньший субъективный вес, чем риск от опасности, нужно применять способ Y, а не пытаться убедить себя в чем-то, рационализируя словами вроде: "Ой, да кто мой сайт будет взламывать? Ой, да не простыну я от тридцати секунд на морозе!".
В случае, если после анализа ситуации ты понимаешь, что накладные расходы Y имеют больший вес, чем риск Х, следует честно себе признаться в этом: "Да, я понимаю, что сайт могут взломать, если я его не протестирую, но принимаю этот риск", не стараясь рационализировать для себя свое решение, убеждая себя в том, что накладные расходы больше, чем тебе кажется, или риск меньше, чем тебе кажется.
Рационализация - неправильный подход.
Рационализация через позицию "мы не можем ничего измерить или узнать точно, следовательно, можно делать что угодно" - неправильный подход.

Накладные расходы на простое тестирование очень малы.
Существует очень мало ситуаций, в которых они будут иметь бОльший вес, чем риск непротестированного приложения.
Одна из таких ситуаций - написание программы на языке программирования, в котором нет удобных библиотек для автоматического тестирования.
Сайты пишутся на языках, для которых есть удобные библиотеки для автоматического тестирования.
Тестирование имеет бонусы и помимо уменьшения угрозы Х.
Следовательно, я не представляю, в какой ситуации при написании кода сайта с нуля на языке программирования (а не на языке разметки) накладные расходы от тестирования перевесят помощь от тестирования плюс уменьшение угрозы."
Показать полностью
StragaSevera Онлайн
Sore wa himitsu desu
Потому что тестить простые вещи просто и быстро, и это помогает быстрее написать простые вещи.
Ластро
O_o ну и наворотили вы.

StragaSevera моя позиция такая. Покрывать тестами ВСЁ излишне. Тестировать каждую мелочь? Боже упаси, с проверкой всёких мелочей и тривиальностей вполне справится система типов. Отказываться от них совсем, я что дурной? Раньше я часто запускал функции в интерпретаторе и смотрел результат, так как всё чистое то я их отлаживал и шёл дальше, мир, дружба, пони. Потом мне с одной стороны стало влом делать это ручками, а с друго в интерпретаторе несколько потоков руками не сильно и позапускаешь(хотя можно, и он даже выдюжит, но напряжно), так в мой код проникли тесты, но их немного и назвать их модульными у меня лично рука не подымается, они скорее интеграционные.

Позиции "я всё равно тестирую, зачем мне статика?" и "у меня крутая система типов, зачем мне тесты?" мне кажутся одинаково глупыми. Это два РАЗНЫХ метода поиска ошибок и они находят РАЗНЫЕ КЛАССЫ ошибок, предпочитаю их совмещать, не переходя крайности, язык программирования это не теоремпрувер(например идрис, агда), а тотальное тестирование напрягает необходимостью поддерживать не только код, но и тесты(и в особо задротских случаях тесты тестов(переходить в крайности так уж до конца)).
Показать полностью
StragaSevera Онлайн
Al Lastor
Ответил в параллельном треде.
ПОИСК
ФАНФИКОВ











Закрыть
Закрыть
Закрыть