Re[3]: Почему ваш код – отстой
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 22.06.06 12:42
Оценка: -1
Здравствуйте, IT, Вы писали:

A>>Пользуюсь ли я юнит-тестами? Конечно нет!


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


Для аналогичных целей также используют assert'ы. В огромных количествах.
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[3]: Почему ваш код – отстой
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 22.06.06 12:43
Оценка: +1
Здравствуйте, IT, Вы писали:

IT>Судя по этому абзацу у тебя у самого неверное представление зачем нужны юнит тесты. Их задача не найти ошибку в твоём коде, а не дать возможности сломать уже работающий и отлаженный код при будущих его модификациях.


Вернее — сразу диагностировать поломку. Предотвратить её юнит-тесты не могут.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: Почему ваш код – отстой
От: IT Россия linq2db.com
Дата: 22.06.06 12:53
Оценка: +3
Здравствуйте, Коваленко Дмитрий, Вы писали:

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


КД>Для аналогичных целей также используют assert'ы. В огромных количествах.


Чтобы тебе помогли асёрты так же как юнит тесты, ты должен прогнать через них свой код. И не просто прогнать, а сделать это для разных сценариев. Юнит тесты специально этим и занимаются. Внёс какие-то изменения в базовый код, запустил тесты, всё зелёненькое, значит повезло. С асёртами же твоя ошибка легко может уехать в продакшин (уже без асёртов), т.к. прогон через них всего кода никто не делает. Разве что случайно на них нарвёшься.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Почему ваш код – отстой
От: IT Россия linq2db.com
Дата: 22.06.06 12:54
Оценка: 3 (1) +1 :)
Здравствуйте, Геннадий Васильев, Вы писали:

IT>>Судя по этому абзацу у тебя у самого неверное представление зачем нужны юнит тесты. Их задача не найти ошибку в твоём коде, а не дать возможности сломать уже работающий и отлаженный код при будущих его модификациях.


ГВ>Вернее — сразу диагностировать поломку. Предотвратить её юнит-тесты не могут.


Это не их задача предотвращать. И диагноз они тоже ставить не умеют. Их задача показать является ли код после очередных изменений всё ещё работоспособным или нет.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Почему ваш код – отстой
От: Коваленко Дмитрий Россия http://www.ibprovider.com
Дата: 22.06.06 13:04
Оценка:
Здравствуйте, IT, Вы писали:

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


КД>>Для аналогичных целей также используют assert'ы. В огромных количествах.


IT>Чтобы тебе помогли асёрты так же как юнит тесты, ты должен прогнать через них свой код. И не просто прогнать, а сделать это для разных сценариев. Юнит тесты специально этим и занимаются.


Ну, это. Я стараюсь и то и другое . И третье. Там есть еще четвертое и пятое. А потом оказывается, что пока ты тщательно проектировал, кодировал, тестировал твоя программа становится уже никому не нужна
Напрягает также другое. То что наши программы являются юнит-тестами для разработчиков компиляторов
-- Пользователи не приняли программу. Всех пришлось уничтожить. --
Re[2]: Почему ваш код – отстой
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 22.06.06 13:06
Оценка: :)
Здравствуйте, Кодёнок, Вы писали:

a>>Он говорит — "Вы все дебилы, один я умный. Айда за мной!".

Кё>Давай перефразируем по пунктам:

Там перефразируем, сям додумаем, здесь прочтём справа налево, тут вообще читать не будем... Это в корне не верно. Напоминает анекдот про кипу чертежей и три вагона изменений и дополнений.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[5]: Почему ваш код – отстой
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 22.06.06 13:11
Оценка:
Здравствуйте, IT, Вы писали:

IT>>>Судя по этому абзацу у тебя у самого неверное представление зачем нужны юнит тесты. Их задача не найти ошибку в твоём коде, а не дать возможности сломать уже работающий и отлаженный код при будущих его модификациях.

ГВ>>Вернее — сразу диагностировать поломку. Предотвратить её юнит-тесты не могут.
IT>Это не их задача предотвращать. И диагноз они тоже ставить не умеют. Их задача показать является ли код после очередных изменений всё ещё работоспособным или нет.

Они умеют ставить диагноз, для постановки которого создавались.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[3]: Почему ваш код – отстой
От: adontz Грузия http://adontz.wordpress.com/
Дата: 22.06.06 13:24
Оценка: 1 (1) +2 -2
Здравствуйте, IT, Вы писали:

IT>Судя по этому абзацу у тебя у самого неверное представление зачем нужны юнит тесты. Их задача не найти ошибку в твоём коде, а не дать возможности сломать уже работающий и отлаженный код при будущих его модификациях. И чем больше покрытие кода юнит тестами, тем больше шансов уберечься от подобных проблем.


Это один из подходов. В XP на юнит-тестах именно отлаживаются. Но это всё не важно, это мелочи.
Вопрос в том как проверять работоспособность произвольного кода? И что гораздо важнее где грань после которой написание и поддержка автоматического тестирования более трудоёмко, чем ручное тестирование?

Если бы юнит-тесты были панацеей, то профессия тестировщика (QA Engineer) уже давно канула бы в лету, но нет, они живы-здоворы и неплохо зарабатывают Что, тестеров нанимают только те, кто не умеет пользоватся юнит-тестами? А может надо признать что тезис "код не проходящий регулярное юнит-тестирование — отстой" сам является отстоем?
A journey of a thousand miles must begin with a single step © Lau Tsu
Re[5]: Тривиальная задача - как неотстойно написать?
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:00
Оценка:
Здравствуйте, moudrick, Вы писали:

FDS>>Но ведь тут вся загвоздка, что писать его то же не удобно

M>Код должно быть удобно читать, а не удобно писать. (цитата иитаты из сабжевой статьи)
Автор(ы): Дейв Эстелс (Dave Astels)
Дата: 13.06.2006
Если Вы программируете как большинство, и даже, вероятно, все программисты (скромненько включая автора этой статьи), то ваш код – отстой. Возможно, не целиком; возможно, не всегда, но наверняка какая-то его часть и в какой-то момент времени.


Код должно быть и читать и писать удобно. А тут не того и не другого.
Re[4]: Тривиальная задача - как неотстойно написать?
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:02
Оценка:
Здравствуйте, Kolhoz, Вы писали:

K>Здравствуйте, Miroff, Вы писали:


M>>Еще есть вариант ипользовать стиль "литературное программирование", когда код пишется как прийдется, а подстрочником человеческим языком объясняется что он делает, зачем и почему. Для любых хоть сколько-то математических алгоритмов самое то.


K> Код пишется не как попало, а с чёткой структурой и с разделением на функциональные единицы. Для этого в большинстве средтсв литературного программирования есть простенькая макпроподстановка, так что можно писать:


Причём тут макроподстановки?

K> Функция делающая бла-бла-бла по растакому-то алгоритму, оценка производительности делалась так-то, и вообще, вот вам цитата из Пушкина:...


K> void thefunction(blabla bubu) {

K> Тело этой функции полностью совпадает с телом функций такой-то, так что здесь мы это комментировать не будем...
K> @<FunctionCode>
K> }

Copy-Paste — ни за что! Даже если это не прямой copy-paste.
Re[3]: Тривиальная задача - как неотстойно написать?
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:04
Оценка:
Здравствуйте, Kolhoz, Вы писали:

K>Здравствуйте, FDSC, Вы писали:


FDS>>Вопрос по неотстойному написанию: допустим мне нужно написать код перемножения двух матриц.


FDS>>Я могу его написать 4 функциями, соответствующими AijBjk; AjiBjk; AijBkj; AjiBkj;

FDS>>Но это будет дублирование кода, причём почти copy-paste — то есть код — отстой

K>[...]


K> Не отстоем будет макра, которая сгенерит хороший и оптимальный код в зависимости от параметров.

K>И в ней, понятное дело, никакого "почти copy&paste" не будет.

FDS>>В итоге я прихожу к самому удобному (я не шучу, я так и делал) варианту — когда нужно что-то перемножать я просто пишу код этого перемножения (цикл с двукратной вложенностью) прямо в код, без всяких вызовов.


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


Макрос — та же функция — в плане чтения и написания. И она так же неудобна
Re[4]: Почему ваш код – отстой
От: IT Россия linq2db.com
Дата: 22.06.06 14:08
Оценка:
Здравствуйте, adontz, Вы писали:

A>А может надо признать что тезис "код не проходящий регулярное юнит-тестирование — отстой" сам является отстоем?


Это сколько угодно. Я даже больше скажу, есть задачи (ты сам только что приводил пример), которые человечество пока ещё не научилось тестировать автоматически. Есть задачи, в которых применение юнит тестов в разы увеличивает стоимость проекта. Например, это касается задач работающих с базами данных, где помимо самого юнит теста нужно ещё подготовить данные для каждого сценария. Но, в тоже самое время, есть задачи, которые просто немыслимы без юнит тестов, даже если их наличие существенно влияет на стоимость проекта.
Если нам не помогут, то мы тоже никого не пощадим.
Re[6]: Почему ваш код – отстой
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:09
Оценка:
Здравствуйте, Коваленко Дмитрий, Вы писали:


КД>Напрягает также другое. То что наши программы являются юнит-тестами для разработчиков компиляторов


Причём только потому что они не делают юнит-тесты сами, потому что:

КД>что пока ты тщательно проектировал, кодировал, тестировал твоя программа становится уже никому не нужна
Re[4]: Почему ваш код – отстой
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:12
Оценка: :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, adontz, Вы писали:


Кё>>>- надо думать своей головой, а не тупо следовать методологии

A>>Ага. 20 человек в команде и каждый подумал своей головой Зашибись.

ГВ>Эх, если бы так было всегда!


То некоторые фирмы уже бы разорились, так как:

Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн

Re[2]: Почему эта статья – отстой
От: FDSC Россия consp11.github.io блог
Дата: 22.06.06 14:17
Оценка: +3 :))
Здравствуйте, Odi$$ey, Вы писали:

OE>ну и почему мы должны руководствоваться именно этим мнением, а не мнением двух десятков (сейчас) человек, которые не поленились поставить статье положительную оценку


А я, например, поленился поставить отрицательную
Re[5]: Почему эта статья – отстой
От: moudrick Россия http://community.moudrick.net/
Дата: 22.06.06 15:37
Оценка: 9 (1)
ГВ>>>>>Набор банальностей, риторики и пересказов.
M>>>>Вы, наверное, очень умный. Не все, к сожалению, настолько таковы.
M>>>>Скажите четсно, встречается ли среди Вашего кода отстойный, согласно признакам, указанным в статье?
ГВ>>>Зачем Вам это?
M>>От этого зависит Ваш ответ?
ГВ>Нет, это был вежливый уход от ответа на личный вопрос.

Он немедленно перестает быть личным, когда с Вашим кодом работает еще кто-то кроме Вас.
А это типичный случай и абсолютно обычное дело, если Вы работаете в команде или контрибутите опен-сорц.

M>>На самом деле если Вы понимаете, что часть Вашего кода — отстой, но продолжаете тисать такой же отстойный код, и при этом не хотите в этом признаться хотя бы самому себе, то разве это правильно? И в статье ещё раз подчеркивается, что это неправильно.

ГВ>Такая постановка вопроса ставит оппонента в безвыходное положение: что бы он ни возразил, его высказывание можно свести к тому, что он, мол, не хочет признаться самому себе в том-то и том-то (есть тут у нас мастера по этой части ). А исходный тезис при этом ставится в положение абсолютной истины (???). Это не смешно, поверьте.

ставится в положение абсолютной истины (???)

В положение абсолютной истины — не ставится. А видимость его абсолютной истинности — это всего лишь, говоря Вашими же словами, метафора.

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

ГВ>Возможно, что Вы не знаете: апелляция к личности есть некорректный приём полемики. Вот потому я и не отвечаю на такие вопросы. Суть нашей беседы, как я понимаю, всё-таки не в обсуждении [не]совершеств оппонентов, а в обсуждении статьи, не правда ли?

Перегнул палку. Примите, пожалуйста, извинения.

Но у любой статьи есть целевая аудитория.
И если Вы полагаете, что к ней не относитесь, Вы можете её попросту игнорировать.

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

Развеселился настолько, что даже поучаствовал в переводе.
Чтобы поделиться ощущениями с теми, кто по тем или иным причинам не может адекватно оценить его на языке оригинала.

Развеселился, потому что мне легче стало видеть, где в моем коде отстой, не читая толстенные талмуды.
Ибо все книги все равно не прочтёшь, потому я очень ценю компактность.
Даже если она достигается ценою потерей политкоррекности.
Re[6]: Почему эта статья – отстой
От: FR  
Дата: 22.06.06 15:56
Оценка: -1
Здравствуйте, moudrick, Вы писали:


M>Но у любой статьи есть целевая аудитория.

M>И если Вы полагаете, что к ней не относитесь, Вы можете её попросту игнорировать.

Я например не желаю быть в такой целевой аудитории, которой плюют в лицо, а она улыбается и говорит спасибо.

M>Я, почему-то, не оскорбился, читая эту статью, а наоборот развеселился выше всякой меры.


M>Развеселился настолько, что даже поучаствовал в переводе.

M>Чтобы поделиться ощущениями с теми, кто по тем или иным причинам не может адекватно оценить его на языке оригинала.

M>Развеселился, потому что мне легче стало видеть, где в моем коде отстой, не читая толстенные талмуды.

M>Ибо все книги все равно не прочтёшь, потому я очень ценю компактность.

Талмуды гораздо полезней.
Re[7]: Почему эта статья – отстой
От: moudrick Россия http://community.moudrick.net/
Дата: 22.06.06 16:03
Оценка: -1
M>>Но у любой статьи есть целевая аудитория.
M>>И если Вы полагаете, что к ней не относитесь, Вы можете её попросту игнорировать.

FR>Я например не желаю быть в такой целевой аудитории, которой плюют в лицо, а она улыбается и говорит спасибо.


Умейте быть смиренными.

А Я говорю вам: не противься злому. Но кто ударит тебя в правую щеку твою, обрати к нему и другую

Евангелие от Матфея, 5:39


M>>Я, почему-то, не оскорбился, читая эту статью, а наоборот развеселился выше всякой меры.


M>>Развеселился настолько, что даже поучаствовал в переводе.

M>>Чтобы поделиться ощущениями с теми, кто по тем или иным причинам не может адекватно оценить его на языке оригинала.

M>>Развеселился, потому что мне легче стало видеть, где в моем коде отстой, не читая толстенные талмуды.

M>>Ибо все книги все равно не прочтёшь, потому я очень ценю компактность.

FR>Талмуды гораздо полезней.


Читаю. Да за работой за всеми не поспеваю.
Даже если успеваю поверхностно проыесть, то не всегда успеваю вникнуть.

Много Вы прочли талмудов? А много ли осталось непрочтёнными?
Что будете делать с теми, которые не успели прочесть?
Там ведь тоже полезные нужные знания!
Re[4]: Почему ваш код – отстой
От: GlebZ Россия  
Дата: 22.06.06 16:19
Оценка: 17 (2) +1 -1
Здравствуйте, S-SH, Вы писали:

SS>А то, что мой код — отстой, согласно определениям статьи, я не считаю своей проблемой.

Совершенно верно. Это не ваша проблема. Вы просто создаете проблему другим. Вы сможете знаете что делает ваш код, и это не дано другим.
Сколько хороших идей было выброшено на помойку из-за плохой несопровождаемой реализации. Статья плохо объясняет что-такое плохой код, но хотя бы по тем параметрам которые даны: понятность, тестируемость, дублирование — можно сразу сказать что это плохой код.

С уважением, Gleb.
Re[6]: Почему эта статья – отстой
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 22.06.06 17:09
Оценка: 1 (1)
Здравствуйте, moudrick, Вы писали:

ГВ>>>>>>Набор банальностей, риторики и пересказов.

M>>>>>Вы, наверное, очень умный. Не все, к сожалению, настолько таковы.
M>>>>>Скажите четсно, встречается ли среди Вашего кода отстойный, согласно признакам, указанным в статье?
ГВ>>>>Зачем Вам это?
M>>>От этого зависит Ваш ответ?
ГВ>>Нет, это был вежливый уход от ответа на личный вопрос.

M>Он немедленно перестает быть личным, когда с Вашим кодом работает еще кто-то кроме Вас.

M>А это типичный случай и абсолютно обычное дело, если Вы работаете в команде или контрибутите опен-сорц.

Ни йоты возражений. Но! Мы сейчас не работаем в команде и не контрибутим опен-сорц.

M>>>На самом деле если Вы понимаете, что часть Вашего кода — отстой, но продолжаете тисать такой же отстойный код, и при этом не хотите в этом признаться хотя бы самому себе, то разве это правильно? И в статье ещё раз подчеркивается, что это неправильно.

ГВ>>Такая постановка вопроса ставит оппонента в безвыходное положение: что бы он ни возразил, его высказывание можно свести к тому, что он, мол, не хочет признаться самому себе в том-то и том-то (есть тут у нас мастера по этой части ). А исходный тезис при этом ставится в положение абсолютной истины (???). Это не смешно, поверьте.

M>ставится в положение абсолютной истины (???)

M>В положение абсолютной истины — не ставится. А видимость его абсолютной истинности — это всего лишь, говоря Вашими же словами, метафора.

Дело вот в чём: формально код может вполне соответствовать критериям "отстойного" кода, но фактически, к нему может быть не уместно применять ругательство "отстой", потому что причины, по которым он стал и сохраняется таким вполне могут оправдывать существование "отстойного" кода.

Возникает, казалось бы, парадоксальная ситуация: код "отстойный", но его держат именно в таком виде, не переделывают. Но парадокс этот неизбежно мнимый, поскольку поставить правильную оценку исходникам можно только исходя из контекста, в котором они появились. Скажем, фрагменты могут быть типовыми и короткими (vs. тезисы о дублировании), легко проверяемыми визуально (vs. тезисы о тестах), быть резервом для планируемых расширений (vs. тезисы о закрытых членах класса); они могли появиться в периоды цейтнота (снова vs. тезисы о дублировании). framework, в свою очередь, может быть выбран по политическим соображениям (vs. тезисы о framework).

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

Разработчики тоже ставятся в сложное положение, поскольку должны, по сути, признать "отстойность" своего кода и в общем, сойти с ума от внутреннего противоречия, поскольку идеология, которую исповедует Dave говорит одно, практические нужды — совершенно другое, а воспитание вторит идеологическим напевам.

А ключ к противоречию в заклинании: "признайтесь хотя бы самому себе..." и неправомерном связывании банальных потенциальных источников неприятностей с жестким: "отстой!"

Вывод? Наглая попытка манипуляции.

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

ГВ>>Возможно, что Вы не знаете: апелляция к личности есть некорректный приём полемики. Вот потому я и не отвечаю на такие вопросы. Суть нашей беседы, как я понимаю, всё-таки не в обсуждении [не]совершеств оппонентов, а в обсуждении статьи, не правда ли?

M>Перегнул палку. Примите, пожалуйста, извинения.

Принимаю!

M>Но у любой статьи есть целевая аудитория.

M>И если Вы полагаете, что к ней не относитесь, Вы можете её попросту игнорировать.

По сути я следую примерно тем же правилам, но почерпнуты они не из этой статьи. Так что, правильнее всего сказать, что "она ко мне примазывается". Ничего личного, разумеется.

Как читателя, меня и в самом деле привлекло название. Следовательно, оно может привлечь и тех, кто не является целевой аудиторией.

M>Я, почему-то, не оскорбился, читая эту статью, а наоборот развеселился выше всякой меры.


Собственно, я не об оскорблении вёл речь. Скорее, это чувство можно назвать изумлением от пафоса, с которым преподносятся очевидные вещи. Естественная реакция на такой пафос, вопросить: "он что нас, за тупиц держит?" Вопрос адресован не Вам, конечно, а автору, Dave Astels.

M>Развеселился настолько, что даже поучаствовал в переводе.

M>Чтобы поделиться ощущениями с теми, кто по тем или иным причинам не может адекватно оценить его на языке оригинала.

Ну что же, благодарная аудитория у Вас имеется. Критически настроенная судя по всему — тоже.

M>Развеселился, потому что мне легче стало видеть, где в моем коде отстой, не читая толстенные талмуды.

M>Ибо все книги все равно не прочтёшь, потому я очень ценю компактность.
M>Даже если она достигается ценою потерей политкоррекности.

С этим не могу не согласиться.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.