Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Почему так не любят Delphi? 
:(
    Опции темы
Zloxa
Дата 25.4.2013, 10:31 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



На тему юнит тестов у меня оформилась еще одна мысль. Прошу покритиковать.

Покрытие программного юнит тестами, определенно это дополнительный геморрой для конкретного разработчика. Но в случае коллективной разработки, юнит тесты дают коллективное благо за счет ущемления индивидуального. В коллективной разработке для индивида геморой начинает давать профит в том, что покрытый тестами функционал, прочие участники участники разработки закривить не смогут. Мотивация же для индивида качественно покрывать свой функционал тестами - не остатся в мудаках, если кто-то другой сможет таки закривить не покрытый тестами участок, т.е. тесты играют роль тазика, которым индивид прикрывает свой зад в общественной бане.

В индивидуальной разработке профита пока не узрел.

Если я правильно понимаю область применения этого инструмента, в тех проектах, в которых мне доводилось участвовать, покрываем тестами очень малый процент кода. smile


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Felix12321
Дата 25.4.2013, 10:41 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 8.9.2012

Репутация: -1
Всего: -1



Цитата(Zloxa @  25.4.2013,  10:31 Найти цитируемый пост)
 В коллективной разработке для индивида геморой начинает давать профит в том, что покрытый тестами функционал, прочие участники участники разработки закривить не смогут.

 smile 

Цитата(Zloxa @  25.4.2013,  10:31 Найти цитируемый пост)
В индивидуальной разработке профита пока не узрел.

Но он тоже есть, просто его куда меньше. Через время ты можешь забыть свой код и, например, убить доработкой то, что уже работает. Когда нужна какая то сложная обработка данных, и тебе её нужно постоянно допиливать, юнит тесты подскажут тебе, что ты допиливанием не убил существующий, правильно работающий функционал. Так же юнит тесты хороши в качестве документации. Но покрывать весь код юнит тестами при одиночной разработке - маразм.
PM MAIL   Вверх
Guinness
Дата 25.4.2013, 10:47 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(Zloxa @  25.4.2013,  10:31 Найти цитируемый пост)
В индивидуальной разработке профита пока не узрел.

Не знаю, читали ли Вы, но есть способ экстремальной разработки (вроде так называется). Там Вы сначал пишите набор тестов к классу. А потом уже пытаетесь сделать так, чтобы Ваш класс успешно проходил все придуманные Вами тесты. Таким образом, Вы разрабатываете спецификацию (набор требований) к своему будущему классу и, соответственно, продумываете для чего этот класс предназначет и как его использовать. 
1). По идее, помогает лучше проектировать, продумывать классы и область их использования.
2). Код становится предсказуемым, т.к. выполняет предъявленные к нему требования.
3). Юнит-тесты можно в дальнейшем использовать как примеры к своему коду.
4). В будущем, если Вы захотите что-то поменять в классе, который используется в большом проекте, будет не так страшно это делать. Вам лишь нужно будет удовлетворить требованиям юнит-тестов. И это будет гарантировать Вам работу все системы без изменений.

PM MAIL   Вверх
Zloxa
Дата 25.4.2013, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 4
Всего: 161



Цитата(Guinness @  25.4.2013,  11:47 Найти цитируемый пост)
Не знаю, читали ли Вы, но есть способ экстремальной разработки (вроде так называется)

Читал, использовал.
Если я правильно понимаю область применения этой методики - это методика ориентирована на быстрое получение результата, а не на обеспечение качества результата.


--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Guinness
Дата 25.4.2013, 11:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(Zloxa @  25.4.2013,  11:00 Найти цитируемый пост)
Если я правильно понимаю область применения этой методики - это методика ориентирована на быстрое получение результата, а не на обеспечение качества результата.

Почему? 
1). Прежде, чем начать писать реализацию класса, Вы продумываете его интерфейс. 
2). В юнит-тестах Вы формулируете требования, ограничения, возможности этого интерфейса.
=> Код получается предсказыуемым и контролируемым. Далее его можно легко изменять, не боясь за последствия в других частях системы. Это ли не качество кода?
Ну, и, если быть честным, выполнение этих двух пунктов довольно серьезная задача, которая по времени может занимать большую часть написания класса.
PM MAIL   Вверх
SKrivosein
Дата 25.4.2013, 11:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Идущий в даль
**


Профиль
Группа: Участник
Сообщений: 271
Регистрация: 9.6.2007
Где: Praha - Прага

Репутация: нет
Всего: 8



Athari, приятно познакомиться!  smile Вот оно как. А то не понятно было где Beltar нашел критика WPF дизайнера в рядах дотнетчиков....
Ну все, война продолжается.


--------------------
Оптимист - это плохо информированный человек.
user posted image

PM MAIL   Вверх
serger
Дата 25.4.2013, 11:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Цитата(Guinness @  25.4.2013,  12:09 Найти цитируемый пост)
Ну, и, если быть честным, выполнение этих двух пунктов довольно серьезная задача, которая по времени может занимать большую часть написания класса. 

Guinness, просто привычка и опыт. Вообще подход к разработке изменяется. Когда пишешь с тестами и без - он разный. При тестах уверенности больше, с самого начала. Быстрее первый результат (для экстремалов и заказчика). ...


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Beltar
Дата 25.4.2013, 11:57 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 627
Регистрация: 11.1.2006

Репутация: 2
Всего: 7



Цитата

А я как то работая на США шарпом и явой перебьюсь  


Работай. Если бы я работал, то тоже бы писал на чем скажут. Но у меня есть возможность выбирать. У Атари, кстати, тоже есть, и его никто не заставляет изучить 100500 языков и технологий, которые могут через 5 лет быть всеми забыты, но если ему нравится.

А вообще я начинаю кое-что понимать, дело не только в фичах, дело в стадном инстинкте, когда человек заучил все новомодные штучки, но так и не научился разработке ПО, в итоге несмотря на все знания, появляются архитектурно ущербные и неработоспособные проекты. Все, теперь на вопрос "какой язык программирования надо учить?" мой ответ строго определен: "Идти на юриста", ибо сразу видно стремление приткнуться, а не писать программы.

Цитата

1). Прежде, чем начать писать реализацию класса, Вы продумываете его интерфейс. 
2). В юнит-тестах Вы формулируете требования, ограничения, возможности этого интерфейса.
=> Код получается предсказуемым и контролируемым.


Ну если я долго и качественно продумывал интерфейс класса, то, наверное, код предсказуем...
В общем мы уже насмотрелись на сферическое юнит-тестирование "Hello world"'ов в вакууме. Можно реальные примеры из реальных проектов и описание, конкретных случаев, когда был результат от тестирования?

Цитата

Покрытие программного юнит тестами, определенно это дополнительный геморрой для конкретного разработчика. 


Ровно как и любая другая "волшебная" методология.


--------------------
Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. smile(с) я, хотя может и нет
Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере.
PM MAIL   Вверх
serger
Дата 25.4.2013, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 518
Регистрация: 19.6.2007
Где: Ижевск

Репутация: 0
Всего: 5



Beltar, за всё надо платить.


--------------------
упс!
PM MAIL WWW Skype GTalk Jabber   Вверх
Guinness
Дата 25.4.2013, 12:27 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(Beltar @  25.4.2013,  11:57 Найти цитируемый пост)
Ну если я долго и качественно продумывал интерфейс класса, то, наверное, код предсказуем...

Чем? Реализацию же Вы ещё не проверили. Это только первый шаг к предсказуемости.
Цитата(Beltar @  25.4.2013,  11:57 Найти цитируемый пост)
В общем мы уже насмотрелись на сферическое юнит-тестирование "Hello world"'ов в вакууме. Можно реальные примеры из реальных проектов и описание, конкретных случаев, когда был результат от тестирования?

Тут согласен, в интернете не сферических примеров я не находил. Однако, как можно придумать такой пример, чтобы объяснить некоторый принцип, который должен быть всем понятен? Вы же учебники по физике не ругаете за то, что они показывают Вам примеры на элементарных задачах, хотя в жизни все несколько сложней?
Я, например, тестировал парсер RTCM протокола таким образом. Хотя делал это не очень корректно. Но, в принципе, в дальнейшем помогло менять реализацию.
PM MAIL   Вверх
LSD
Дата 25.4.2013, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  24.4.2013,  18:32 Найти цитируемый пост)
Я скорее имел в виду жава сторед процедуру. Процедуру, которая не использует объекты схемы данных, но использует объекты жавьей инфраструктуры сервера базы данных, доступ к которым просто отсутствует у тебя на локальной машине.

Кроме объектов базы и пары классов из JDBC драйвера там больше нет ничего специфичного. Так что не вижу проблем с запуском на обычной JDK.


Цитата(Zloxa @  24.4.2013,  18:32 Найти цитируемый пост)
Я действительно силюсь понять что вы называете тестами и что может вам это дать.
Может можешь попытаться дать пример на пальцах?

Хочу сразу заметить у нас не TDD, но процесс тестирования поставлен очень хорошо:
- есть юнит тесты
- есть интеграционные тесты, от простейших - метод вызвался и вернул какой-то результат, проверки всего флоу - вызвали метод, проверили что данные проползли весь путь и появились в другой системе
- есть ручное и автоматическое тестирование через ГУЙ
- ну и финальное - тестирование бизнес аналитиками перед выкатом в прод

Теперь что касается юнит  тестов:
- мы тестируем логику вычислений: если есть класс который что-то считает то на него обязательно делается тест
- пишем тесты на баги, если был как-то нетривиальный баг то на него пишем тест
- пишем тесты для конвертеров и генераторов, чтобы убедится что ничего не теряется
- остальную бизнес-логику тоже стараемся тестировать


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Athari
Дата 25.4.2013, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 27.6.2007
Где: Казань, Россия

Репутация: 1
Всего: 1



@Beltar

> Вот тебе не лень было сидеть и изучать весь дельфовый хелп?

1. Люблю холивары. Знай врага в лицо.
2. Таки была надежда на конкуренцию. МС актвино развивает те области, где есть сильные конкуренты.

> Я тебе вроде ясно показал, что сейчас у шарпа самая ценная фича, это асинхронные методы.

Да, я понял, что это единственное, чего тебе не хватает для рисования обёрток к БД.

> А за возможность не написать тип при инициализации переменной никто даже пальцем не пошевелит, чтобы книжку по шарпу открыть.

https://www.google.com/search?q=site:github...r+-%22cs+var%22

> Кстати, я еще не интересовался, не придется ли мне для полноценного применения этих методов выкурить весь курс работы с параллельными потоками

Для сложных приложений знать теорию и средства синхронизации надо. Для того, что нужно тебе ("чтобы UI не вис") достаточно "await Task.Run()".

> сейчас куда ни плюнь, везде контроли типов, сходный синтаксис, сходные возможности

Кроме дельфи. Собственно, об этом мой пост и был.

> Ну потрясающе, студийщиков наконец-то вытащили из компьютерного средневековья, теперь они спустя 18 лет после Delphi

1. Спустя 7 лет.
2. Историческая справка любопытна, но не представляет важности в текущей ситуации.

> Давай подумаем, что важнее, сдизайнить экзотический контрол, или возможность быстро собрать интерфейс на 10, а то и 100 формах.

Дотнет и джава предоставляют и первое, и второе. Дельфи -- только второе.

> При этом ты осмеливаешься наезжать на FMX, которой полтора года

WinForms и WPF рулили с первого релиза.

> а твою любимую студию допилить не могут уже несколько лет.

Что в ней хуже, чем в дельфи? Список.

> А Mono у меня вообще даже пустой GTk-проект не скомпилировала, запутавшись в своих же нейм-спейсах.

Это часом не *дельфи* не скомпилировала проект на моно? Моно тут не при чём.

> Delphi УГ просто потому, что она Delphi.

Дельфи УГ, потому что в ней всё хуже. Не надо перевирать слова.

> При этом, когда оказывалось, что в плюсах чего-то нету, то это во внимание не принималось.

Школьные годы ты вспомнил не к месту. Мы вообще-то дотнет и джаву обсуждаем. С плюсами отдельная история, он в другой нише и в другой весовой категории.

> Да и вообще мне от обилия инструментов как минимум становится страшно.

Вот теперь многое проясняется. Ты хочешь пользоваться дельфи, потому что она проста как топор, и ты её понимаешь. В новое и неизведанное соваться не хочется.

> Если тебе для вшивого сайта на месяц работы нужно 100500 инструментов, то, видимо, что-то не так с основным средством разработки.

Для простой разработки достаточно бесплатной VS Express без каких-либо инструментов. Всё остальное нужно, если ты выбираешься за рамки обёрток для БД.

> Отсюда и приколы с джавистами, которые год работали, самые передовые фреймворки использовали, а УГ вышло.

Этот интереснейший, очень познавательный и, без сомнения, невероятно поучительный пример я не читал. Частный пример -- не статистика.

> Ты сам сказал, что плюсы на 80% состоят из синтаксического маразма.

И опять плюсы... Я не хочу обсуждать с тобой плюсы, ты не понимаешь, что у языка есть достоинства помимо синтаксиса.

> Да и инфу по Delphi давно уже можно найти просто погуглив, все что можно спросить, уже давно спросили.

И новых вопросов, несмотря на регулярный выход новых версий, конечно, не возникает. К чему бы это?

> Перекрытием нескольких методов, каждый в одну строчку.

Для каждого типа списков. Кайф. Рай копипастера.

> Еще раз, ты раздуваешь каждое преимущество своего инструмента до совершенно невообразимых размеров, при этом не замечаешь огромных, как слон, недостатков.

Вот с этого места подробнее, пожалуйста. Я очень внимательно слушаю. Итак, какие у шарпа и джавы недостатки по сравнению с дельфи? Только умоляю, не надо опять про правосланые begin/end.

> Сишник сам не понял, как полностью расписался в том, что синтаксис Си с его вечными сокращениями никакой ясности не вносит, и надо дополнительно чего-то подсвечивать.

То есть для тебя не будет пользы в различном цвете для статических и нестатических членов? Ты это всё в уме держишь, так ведь? Ну да, что там в ему держать-то в обёртках для БД.
PM MAIL WWW ICQ Skype Jabber AOL YIM MSN   Вверх
LSD
Дата 25.4.2013, 13:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15718
Регистрация: 24.3.2004
Где: Dublin

Репутация: 9
Всего: 538



Цитата(Zloxa @  25.4.2013,  11:31 Найти цитируемый пост)
Покрытие программного юнит тестами, определенно это дополнительный геморрой для конкретного разработчика. Но в случае коллективной разработки, юнит тесты дают коллективное благо за счет ущемления индивидуального. В коллективной разработке для индивида геморой начинает давать профит в том, что покрытый тестами функционал, прочие участники участники разработки закривить не смогут. Мотивация же для индивида качественно покрывать свой функционал тестами - не остатся в мудаках, если кто-то другой сможет таки закривить не покрытый тестами участок, т.е. тесты играют роль тазика, которым индивид прикрывает свой зад в общественной бане.

В индивидуальной разработке профита пока не узрел.

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


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
Guinness
Дата 25.4.2013, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 310
Регистрация: 21.6.2009
Где: Зеленоград

Репутация: нет
Всего: 10



Цитата(Athari @  25.4.2013,  13:12 Найти цитируемый пост)
 Только умоляю, не надо опять про правосланые begin/end.

Кстати, в С++ можно пользоваться подобным синтаксисом). То ли у МакКонелла это было, то ли у Кернигана в книжке. Они прямо для Паскалистов показывали как можно настроить C++, чтобы он был похож на Паскаль.
Код

#define begin {
#define end }


Цитата(Athari @  25.4.2013,  13:12 Найти цитируемый пост)
https://www.google.com/search?q=site:github...r+-%22cs+var%22

Это к тому, что на github по крайней мере существует полмиллиона файлов с использованием var?
PM MAIL   Вверх
k0rvin
Дата 25.4.2013, 14:22 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 442
Регистрация: 24.1.2010

Репутация: 1
Всего: 5



Цитата(Beltar @  25.4.2013,  11:57 Найти цитируемый пост)
Ровно как и любая другая "волшебная" методология. 

Для тебя использование юнит тестов -- "волшебная" методология? Как все запущенно.


--------------------
“Object-oriented design is the roman numerals of computing.” — Rob Pike
All software sucks
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила ведения Религиозных войн
Smartov
1. Уважайте собеседника
2. Собеседник != враг
3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez"

С уважением, Smartov.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Религиозные войны | Следующая тема »


 




[ Время генерации скрипта: 0.1029 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.