|
|
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Ну вот, Йост Ганс, того же мнения. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 14:03 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruА если выпускается средство разработки, то всегда есть риск, что аппдевелопер ненароком написал нечто, зависящее от недокументированных (и потому не тестируемых) особенностей поведения. В одной хорошей книжке мне запомнилась среди прочего фраза: "Часто говорят, мол, мы должны быть справедливы к старине Джиму, ведь он уже двадцать лет у нас работает. На самом же деле первое, о чём надо думать - мы должны быть справедливы к двадцати талантливым подчинённым старины Джима и дать им адекватного руководителя". Я понимаю этот аргумент и отношусь к нему примерно так же: надо быть справедливым не только к этому аппдевелоперу, но и к тем, кому станет лучше, если забить на хакера, выкопавшего себе ямку. Скажем, в Оракле времён девятой версии была следующая особенность: если выполнялся оператор select into, то в случае no_data_found переменные сохраняли старые значения, а в случае, например, исключения при вычислении пятого выражения select-а первые четыре успевали попасть в соответствующие переменные. Можно написать как-то ориентирующийся на это код? Можно. Нужно? Нафиг-нафиг. А вот теперь - я бы очень не хотел, чтобы компания Оракл из-за какого-девелопера, заострившегося на эту недокументированную фичу, оставила бы версию 9.2 навечно. iv_an_ruА теперь memory стало enough, и он стал запускаться успешно :( У меня в те времена была просто дикая ошибка, я её два года искал. Суть: обработчик 1C состоит из нескольких в принципе независимых блоков. Каждый блок поотдельности - работает. Два, три, четыре в любом порядке - работают как часы. Все вместе - программа чуть поработает и намертво вешает комп. Отключишь один-два случайно выбранных блока - работает как часы. Повзрослее-поопытнее, наверное, быстро бы справился, а так... уже и не вспомню, как в конце концов сообразил, что изредка, при вызове в неудачный момент времени, не хватает оставшегося места в дос-овском стеке (том, который stacks=10,256), и вероятность этого тем выше, чем больше кода собирается размещать там свои локальные переменные. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 14:10 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerя бы очень не хотел, чтобы компания Оракл из-за какого-девелопера, заострившегося на эту недокументированную фичу, оставила бы версию 9.2 навечно.Идея не в том, чтобы 9.2 навечно, а в том, чтобы это при прочих равных не менялось при обновлении с 9.2 на 9.2.1, а осталось стабильным до 10.0. Иногда мне кажется, что богатство Билла Гейтца в заметной степени обеспечили compatibility flags для старых, кривых, но при этом популярных программ. Он не зря тратил свои деньги на защиту чужих инвестиций. KDE, кстати, может служить контрпримером. Все мои скрипты, автоматизировавшие всякую рутину, вроде открытия 16 терминальных окошек и старта в них 16 процессов инструментального кластера, пошли лесом при очередном обновлении. Вот кому было шило в попе поменять аргументы командной строки у Konsole сразу после того, как они наконец-то были нормально задокументированы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 14:57 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruИдея не в том, чтобы 9.2 навечно, а в том, чтобы это при прочих равных не менялось при обновлении с 9.2 на 9.2.1, а осталось стабильным до 10.0. Если 10.0 при этом выйдет в разумные исторически сроки, я в общем не имею ничего против этой идеи, хотя и не скажу, что "за". Тут, кстати, нетрудно привести обратные примеры интересов между "коробкой" и "разработчиком". Лично мне удобнее, чтобы доработки любого используемого мной инструмента шли частыми небольшими порциями, то есть появилась фича - обдумал - применил - появилась - обдумал - применил. Это по сравнению с "ждёшь - ждёшь - давно надо - ждёшь - обещают, что будет - ждёшь - ждёшь - получаешь вагон всего нового, в котором ещё полгода разбираться". А, например, какому-нибудь бухгалтеру даже та самая кнопка на сантиметр вправо очень нужна, но только после сдачи годового баланса, ни в коем случае не раньше. В общем, имхо, тут таки надо смотреть на конкретную ситуацию. Повторю свою позицию: переписывать плохой код - надо, в какую сборку включать изменение - думать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 15:31 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerПереписывание кода - нонсенс для проектов без нормального (то есть автоматизированного) тестирования. как быть с теми кусками кода, которые хочется переписать именно потому, что их невозможно тестировать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 20:22 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
chpashaкак быть с теми кусками кода, которые хочется переписать именно потому, что их невозможно тестировать? Что именно подразумевается под "невозможно"? Я вижу разные варианты ответа в зависимости от конкретного смысла "невозможно". Например, при разработке инструмента для девелоперов я протолкнул и применил следующий подход: собираясь реализовать какую-то фичу, я начинал с создания одного или нескольких тестовых скриптов, использующих эту фичу. Каждый скрипт был функцией, обязанной вернуть "Yes" при корректном результате работы. Дальше, соответственно, писал фичу, пока все скрипты не начинали работать. Потом настоял на том, чтобы описания проблем от тестировщиков шли в формате таких же скриптов, соответственно подключал их к общему списку. В итоге накопилась достаточно существенная база скриптов для того, чтобы "неправильно переписанный код" где-то, да начинал стрелять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 20:59 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarer, а как быть с тем, что есть code owner, который, зачастую, совсем другой человек, не тот, кто исправляюет ошибку? т.е ответственный за код один человек, а делает фикс другой. просто, например, была регрессия, и что-то перестало работать, например, в новой OS, или после того, как установили новую версию middleware, и заказчик разорался code owner будет делать ревью, смотреть, что там поменялось после фикса.. и у него какие-то там свои представления о том, как должен быть этот код написан ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 22:53 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Новый Года как быть с тем, что есть code owner, Смотря что понимать под этим словом. Если "чувак, который сидит задницей на этих файлах", то убивать как концепцию вне всякой зависимости от обсуждаемого вопроса. Если "человек, который лучше других понимает, что здесь, почему и зачем", то мне очень не нравится слово owner, а по сути - если "желающий переписать" чувствует себя недостаточно уверенным, можно и нужно посоветоваться. Новый Годт.е ответственный за код один человек, а делает фикс другой. Бред, простите. За код ответственен каждый, особенно тот, кто его меняет. Новый Годи у него какие-то там свои представления о том, как должен быть этот код написан И плавно переходим к рассказам про войны, мол, один поправил багу, декомпозировал большую функцию в десять мелких и убрал пробелы перед скобками, потом другой поправил багу, слепил десять мелких функций в одну большую и расставил пробелы перед скобками. Знаете, сколь я видел, большинство программистов надо скорее пинать сделать хорошо, нежели бояться, что они по собственной инициативе сделают слишком много :) А те, кто энтузиасты и по собственной инициативе - обычно имеют достаточно мозгов, чтобы ценить друг друга, договориться и не мешать друг другу даже там, где их представления по мелочи расходятся. Такой типаж программиста как "упёртый баран с инициативой", к счастью, практически не встречается, а если встретился - надо избавляться, и вовсе не потому, что их два в одном коллективе, а потому, что упёртый баран, да ещё и с инициативой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 23:13 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarer, Code owner это тот, кто сидит на файлах Убивать концепцию это вот точно война ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2011, 23:30 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Новый ГодCode owner это тот, кто сидит на файлах Убивать концепцию это вот точно война Я не вижу смысла обсуждать наилучший материал для лопаток турбин применительно к самолёту с паровым двигателем. Для начала стоит поменять двигатель на тот, что способен летать. Когда-то давно я, молодой, наглый и ничего не умеющий, пришёл в одну контору, во многих отношениях замшелую, но со своими достоинствами. И среди прочего начал там воевать с концепцией "сидит на файлах". Воевал довольно безуспешно вплоть до одного прекрасного дня, когда одна из первых сколько-то вменяемых сборок основного на тот момента не была передана для ознакомления заказчику, и тот не нашёл в ней несколько кардинальных багов, уровня "да у вас тут вообще ничего не работает". Проблема в том, что ведущий разработчик, модули которого в основном и оказались проблемными, был на тот момент в отпуске в паре тысяч километров от места событий и уже неделю безуспешно пытался найти способ приехать. Руководство полдня побродило в прострации по офису, и наконец решило, что раз я кричу про доработки чужого кода, значит мне и отвечать, хуже всё равно уже не будет. Я сел, посидел полдня и выдал исправленный релиз, к которому клиент начал выдвигать уже рабочие замечания. Success story. А теперь маленькая ремарка, зачем я это рассказал. Всё это происходило в первых числах сентября 1998-го года. Когда вопрос "будет ли клиент, на проекте которого заняты 80% сотрудников фирмы, платить за очередные этапы того, что пойдёт в эксплуатацию в лучшем случае в феврале" был ве-есьма актуальным. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 00:02 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Новый Года как быть с тем, что есть code owner, который, зачастую, совсем другой человек, не тот, кто исправляюет ошибку? т.е ответственный за код один человек, а делает фикс другой.У нас разные патчи попадают в CVS-дерево разными путями. Напр., в свои экспериментальные ветки каждый пишет сам, в чужие --- как договорится с хозяином ветки (может быть, отправляет тому патчи), в ветку близкого релиза --- как правило, надо отправить патч выпускающему, что-то заметное в "чужом" модуле --- отправить патч владельцу модуля, а он, вполне возможно, посмотрит на неформальных тестах и по цепочке передаст выпускающему, или переработает творчески. заплатка на пользовательскую проблему в версии X.Y.Z может вообще уйти на тестирование пользователю, и или остатья его личной заплаткой, либо войти в X.Y.(Z+1), либо в (X+1).0.0 , пройдя, при необходимости, выпускающих. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 00:12 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerЯ не вижу смысла обсуждать наилучший материал для лопаток турбин применительно к самолёту с паровым двигателем. Для начала стоит поменять двигатель на тот, что способен летать. Когда-то давно я, молодой, наглый и ничего не умеющий, пришёл в одну контору, во многих отношениях замшелую, но со своими достоинствами. И среди прочего начал там воевать с концепцией "сидит на файлах". Воевал довольно безуспешно вплоть до одного прекрасного дня, когда одна из первых сколько-то вменяемых сборок основного на тот момента не была передана для ознакомления заказчику, и тот не нашёл в ней несколько кардинальных багов, уровня "да у вас тут вообще ничего не работает". Проблема в том, что ведущий разработчик, модули которого в основном и оказались проблемными, был на тот момент в отпуске в паре тысяч километров от места событий и уже неделю безуспешно пытался найти способ приехать. Руководство полдня побродило в прострации по офису, и наконец решило, что раз я кричу про доработки чужого кода, значит мне и отвечать, хуже всё равно уже не будет. Я сел, посидел полдня и выдал исправленный релиз, к которому клиент начал выдвигать уже рабочие замечания. Success story. А теперь маленькая ремарка, зачем я это рассказал. Всё это происходило в первых числах сентября 1998-го года. Когда вопрос "будет ли клиент, на проекте которого заняты 80% сотрудников фирмы, платить за очередные этапы того, что пойдёт в эксплуатацию в лучшем случае в феврале" был ве-есьма актуальным. ну это про небольшую контору, с небольшим проектом, и у которой 1 крупный заказчик у меня такое тоже было, чтоб вечером код править, а утром проект заказчику показывать но сейчас я в другой ситуации -- в software company top 5 worldwide и проект огромный (уровня СУБД), и оправдал он себя уже 100500 раз. и сложный такой, что за полдня ничего не сделаешь (да и за год тоже) и всё, что там можно делать, это маленькие кусочки проекта (так называемые line items), в такой ситуации не повыпендриваешься да и нет ничего плохого, что есть code owner. в конце концов hotfix можно сделать и без code review, толко официальный фикс нельзя, и те изменения, кот. пойдут в релиз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 03:24 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Новый Годно сейчас я в другой ситуации -- в software company top 5 worldwide Дык в том-то и дело, что чем больше команда и проект, тем больше нельзя "сидеть на файлах". Новый Годи сложный такой, что за полдня ничего не сделаешь (да и за год тоже) Вот эти слова я слышал для самых разных проектов :) Новый Годв такой ситуации не повыпендриваешься Повыпендриваться можно всегда, но, надеюсь, это не самоцель. Драматичности будет поменьше, но тем не менее, чем больше людей и задач - тем чаще нужно сделать что-то в файле, owner которого в командировке или ближайший месяц загружен другим супер пупер важным заданием. Новый Годда и нет ничего плохого, что есть code owner. в конце концов hotfix можно сделать и без code review, толко официальный фикс нельзя, и те изменения, кот. пойдут в релиз Если owner понимать как code review, то в этом действительно нет ничего плохого. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 10:06 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
Сергей Силкинтак, чтобы её можно было окинуть одним взглядом (т.е. быть не больше одного экрана) 1024х768 или 1920х1200 ? прочитал дальше )) Сергей СилкинЧтобы взглядом можно было охватить. купите себе монитор побольше, и хватит наезжать на программистов ))))))))) ------------------------------------------------------------ softwarerа общие на функцию try/except/finally уже съедают два уровня из разрешённых. конкретно про это - я не знаю как в других местах, в .NET все ошибки можно обрабатывать централизовано, отрабатывая событие вроде "OnException" у Application. А в целом - придется балансировать между уровнем вложенности и Сергей СилкинПредпочтительно конечно же разбивать части по функциональному назначению; но на крайняк можно и чисто механически – просто кусками. ------------------------------------------------------------ гдето я еще читал - если размер функции main умещается на нескольких экранах, то там везде будет говнокод... прям в точку ))))) а тех кого учили в вузе проектированию программного обеспечения, хотя бы даже по гостам 80-ых, помнят думаю еще, что надо описывать алгоритм (словами, блок-схемами описывали в 70-ых ))) ). Вот так и надо писать комментарии - что за метод и что он делает, что на входе, что на выходе, а как он делает - уже будет проще понять, если есть отправная точка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 11:50 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
17-77конкретно про это - я не знаю как в других местах, в .NET все ошибки можно обрабатывать централизовано, отрабатывая событие вроде "OnException" у Application. При всей моей любви к Application.OnException, обработка ошибок - это иногда что-то большее, нежели MessageBox("Всё плохо! :("). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 12:12 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
17-77в .NET все ошибки можно обрабатывать централизовано, отрабатывая событие вроде "OnException" у Application. например ошибку коннекта к субд при неправильном логине/пароле... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 12:18 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
iv_an_ruИногда мне кажется, что богатство Билла Гейтца в заметной степени обеспечили compatibility flags для старых, кривых, но при этом популярных программ. Был какой-то блог редмонда чена (или как там его), работавшего над виндоус. Он писал, что винда умела запускать специальный менеджер памяти, когда понимала, что запустили какую-то старую игру sim city (или как там её), которая работала на предыдущей версии винды за счёт использования недокументированных штук, а на новом менеджере памяти просто так не работала. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 13:06 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
По поводу "сидеть на файлах" и по поводу той success story и главным девелопером, застрявшим на северном полюсе. В моей практике, когда люди меняли мои файлы, файлы становились уже не моими до тех пор, пока я не ознакомлюсь с их содержимым заново. Т.е. если начальство понимает, что если кто-то нашёл ошибку в моей части и исправил её, я больше за эту часть ответственности не несу, пока не вернусь с северного полюса и не посмотрю в файлы. Т.е. нет ситуации "в этом релизе твоя реализация с моими изменениями". Есть "в этом релизе мой вариант реализации той части, которую реализовывал когда-то ты", даже если человек поменял один символ в моём файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 13:19 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
mriadusiv_an_ruИногда мне кажется, что богатство Билла Гейтца в заметной степени обеспечили compatibility flags для старых, кривых, но при этом популярных программ. ...винда умела запускать специальный менеджер памяти, когда понимала, что запустили какую-то старую игру sim city...Ну да, compatibility flags это как раз битмаска, в которой каждый бит инструктирует, что вместо текущей версии надо использовать ассоциированный с этим битом кусок старья. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 13:21 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
17-77в .NET все ошибки можно обрабатывать централизовано, отрабатывая событие вроде "OnException" у Application... Некоторые вещи никому в голову не приходит писать на .NET, поэтому дотнетовые архитектурные решения, мягко говоря, не универсальны. К примеру, в процессе выполнения SQL-запроса может возникнуть столько особых ситуаций, что исключений не навыбрасываешься (и не наловишься), поэтому внутри движка SQL их кидается штуки две или три --- "память кончилась, причём совсем" и "запрос завершился успешно". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 13:28 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerПри всей моей любви к Application.OnException, обработка ошибок - это иногда что-то большее, нежели MessageBox("Всё плохо! :("). eNoseнапример ошибку коннекта к субд при неправильном логине/пароле... при необходимости конечно можно и разделить, смотря кто-то какие программные приложения и системы реализует, а с логином - это не всегда исключительная ситуация, если например написана своя функция и проверка, тогда false - логин/пароль не верный, а true - логин/пароль верный iv_an_ruК примеру, в процессе выполнения SQL-запроса может возникнуть столько особых ситуаций ну в .net есть такое , другое дело, если для части этих ошибок понадобятся некие переменные, который остались в выполняемом контексте, а не в OnException ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 14:34 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerЧто именно подразумевается под "невозможно"? ну например некий класс/подпрограмма, как это очень часто бывает, и жнец, и швец, и на дуде игрец. устанавливает соединения с mail-сервером, обращается к бд, чего-то там в файловой системе генерит. для того чтобы это хозяйство можно было тестировать, его нужно разбить для начала на отдельные блоки. в противном случае, нужно сначала писать нечто, что хоть какими-то правдами и неправдами сможет "тестировать" существующего монстра (а это в зависимости от ситуации может быть либо почти невозможно, либо возможно, но с неоправданно большими затратами времени и усилий). собственно я о чем : по-моему скромному мнению ваше утверждение о нонсенсе переписывания без тестов кажется мне черезчур категоричным (или я его неверно интерпретирую?). т.е. в идеальном мире я бы полностью под ним подписался - да, надо сначала написать тесты для старого кода, и только после этого по кускам переписывать. но в реальном мире, по-крайней мере на моем опыте, была масса случаев, где очередность переписать, а потом тестировать себя оправдывала, потому что иначе потребовалась бы масса усилий только для модификации старого кода в таком виде, чтобы появилась возможность его хоть как-то тестировать (что уже по своей сути явилось бы "переписыванием" - получаем рекурсию: чтобы переписать, нужно сначала написать тесты, чтобы написать тесты, нужно сначала переписать). опять же таки на тему "невозможности" вы приводите пример, где однако говорите о реализации некой новой фичи (если я правильно понял), в то время как я имею в виду ситуацию, когда фича уже есть, желание и нужда ее переписать тоже имеется, но вот тестов для нее не существует в природе и возможность таковых весьма призрачна в виду полной неструктурированности кода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 14:55 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
chpashaну например некий класс/подпрограмма, как это очень часто бывает, и жнец, и швец, и на дуде игрец. устанавливает соединения с mail-сервером, обращается к бд, чего-то там в файловой системе генерит.Регрессионные тесты могут быть и только лишь сквозными, если другого выхода нет, если регрессионные модульные тесты написать нет возможности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 15:21 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
chpashaдля того чтобы это хозяйство можно было тестировать, его нужно разбить для начала на отдельные блоки. Решительно не согласен. Если по смыслу задачи хозяйство должно работать в совокупности, то и тестирование интересно в первую очередь в совокупности, в то время как тестирование отдельных блоков - местами удобный вспомогательный инструмент. Поясню на примере: допустим, мы тестируем бизнес-функцию "клиент получает по почте отчёт о своих расходах за последний месяц". Для того, чтобы сказать "эта бизнес-функция работает" нам совершенно неинтересно искать ответ на вопрос "работает ли запрос в СУБД", "работает ли почтовый интерфейс" и так далее. Они нам не нужны. Нам нужно и интересно следующее: сделать за месяц десять расходов, нажать кнопку, найти в почтовом ящике письмо и увидеть, что цифра в нём равна сумме десяти сгенерированных нами расходов. Если почта работает с ошибками, но код умеет эти ошибки обходить или преодолевать - хотя бы тупой перепосылкой - функция работает, и именно это нам важно. Напротив, нам наплевать на самый идеально реализованный почтовый модуль, если функция его криво вызывает и данные не приходят, приходят не туда или не так. chpashaв противном случае, нужно сначала писать нечто, что хоть какими-то правдами и неправдами сможет "тестировать" существующего монстра (а это в зависимости от ситуации может быть либо почти невозможно, либо возможно, но с неоправданно большими затратами времени и усилий). Вынужден признать, полномасштабное автоматизированное тестирование я развернул на проекте, где оно довольно просто делалось штатными средствами самого проекта. Скажем, под спойлером - полный текст теста передачи lob-ов с клиента на сервер. Код: plaintext 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. В то же время насчёт больших, да ещё неоправданно, затрат времени и сил, в общем случае таки не соглашусь. У меня относительно мало опыта с покупными монстрами типа TestComplete, больше с собственными наработками, уверяю Вас - цена более чем оправданная даже для одного серьёзного продукта. chpashaсобственно я о чем : по-моему скромному мнению ваше утверждение о нонсенсе переписывания без тестов кажется мне черезчур категоричным (или я его неверно интерпретирую?) "Нонсенс" там - не моё слово, я отвечаю на утверждение про "переписывание - нонсенс" и имею в виду "без тестов - может быть и нонсенс, а с тестами - можно и нужно". chpashaна моем опыте, была масса случаев, где очередность переписать, а потом тестировать себя оправдывала, Не собираюсь спорить. Бывает даже так, что оптимально просто переписать и потом ещё раз руками простестировать. Но это уже немного другое переписывание, не то "попутное с основной задачей", о котором мы говорим с лёгкой руки ShSerge-а. chpashaно вот тестов для нее не существует в природе и возможность таковых весьма призрачна в виду полной неструктурированности кода. Формат кода не может и не должен иметь отношения к наличию и структуре тестов. Подмена "тестов" "юнит-тестами" - имхо опасное заблуждение. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 15:47 |
|
||
|
А нужно ли качество кода?
|
|||
|---|---|---|---|
|
#18+
softwarerchpashaдля того чтобы это хозяйство можно было тестировать, его нужно разбить для начала на отдельные блоки. Решительно не согласен. Если по смыслу задачи хозяйство должно работать в совокупности, то и тестирование интересно в первую очередь в совокупности как говорилось в одном любимом мною мультфильме "вот именно: ЕСЛИ ". по факту же имеем дело со стандартной ошибкой проектирования, когда один и тот же класс делает кучу вещей на совершенно разных уровнях абстракции и тестировать его в таком виде я не вижу никакой технической возможности - так или иначе придется что-то переписывать и нехило импровизировать - гораздо быстрей переписать и тестировать уже новое. softwarerв то время как тестирование отдельных блоков - местами удобный вспомогательный инструмент. Поясню на примере: допустим, мы тестируем бизнес-функцию "клиент получает по почте отчёт о своих расходах за последний месяц". Для того, чтобы сказать "эта бизнес-функция работает" нам совершенно неинтересно искать ответ на вопрос "работает ли запрос в СУБД", "работает ли почтовый интерфейс" и так далее. Они нам не нужны. я как бы в этом вопросе обоими руками за. другое дело, что я не очень убежден в насущной неоходимости тестирования всего ансамбля, если гарантируется правильная работа отдельных блоков. есть ли выигрыш? т.е. придумать примеров мне фантазия позволяет, но на практике мне например в цепочке "юзверь жмет на кнопку -> видит результат" всегда хватает тестировать только вторую часть, а не в совокупности. softwarerВ то же время насчёт больших, да ещё неоправданно, затрат времени и сил, в общем случае таки не соглашусь. У меня относительно мало опыта с покупными монстрами типа TestComplete, больше с собственными наработками, уверяю Вас - цена более чем оправданная даже для одного серьёзного продукта. здесь я мысль немного потерял. лично я имел в виду большие и неоправданные затраты времени и сил в контексте написания тестов для старого кода перед его переделкой. а вы вроде бы как аргументируете в пользу необходимости инвестиций в тестирование как таковое, с чем как-бы глупо спорить. softwarer"Нонсенс" там - не моё слово, я отвечаю на утверждение про "переписывание - нонсенс" и имею в виду "без тестов - может быть и нонсенс, а с тестами - можно и нужно". ок softwarerchpashaна моем опыте, была масса случаев, где очередность переписать, а потом тестировать себя оправдывала, Не собираюсь спорить. Бывает даже так, что оптимально просто переписать и потом ещё раз руками простестировать. вполне softwarerФормат кода не может и не должен иметь отношения к наличию и структуре тестов. Подмена "тестов" "юнит-тестами" - имхо опасное заблуждение.он-то не должен, но он может негативно влиять на возможность их создания. если структура классов создается без оглядки на возможность тестирования у вас будет мало шансов чисто технически осуществлять интеграционные тесты (мы ведь о них?) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2011, 17:46 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=37099938&tid=1343117]: |
0ms |
get settings: |
8ms |
get forum list: |
24ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
183ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
73ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 512ms |

| 0 / 0 |
