Problem K на Эрланг: решение №2, последнее + выводы

Nov 20, 2007 17:02

Исправленное решение - по результатам обсуждения на РСДН.


Read more... )

дизайн, организация разработки, problem k, rsdn, детальный дизайн, Эрланг

Leave a comment

Comments 19

kurilka November 20 2007, 22:05:54 UTC
А роль первой C в CRC для функциональных языков будут играть модули, получается?
Кстати, хочется снова повторить свой вопрос про юнит-тесты и "глубокий" рефакторинг - как всёж ты считаешь их следует скрещивать?

Reply

kurilka November 21 2007, 13:37:07 UTC
Первая С - не только модули, но и АТД. У меня в Эрланге АТД языком не поддерживается, и я их заворачиваю в модули. В принципе - получается не хуже. Даже лучше - язык проще.

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

Второй момент - юнит юниту рознь. В большой системе юнит тест будет масштаба системного теста для маленькой программы.

Короче, не надо мельчить с единицами тестирования. Лучше нашпиговать код проверкой инвариантов..

Reply

kurilka November 21 2007, 13:44:00 UTC
Ну тогда получается, что твоё помимание юнит-тестов несколько отличается от понимания TDD и иже с ним. Там же тестируют вплоть до функций. А у тебя выходит нечто промежуточное между функциональными тестами и мелкими юнит-тестами.
Но в целом понятно, спасибо.

Reply

kurilka November 21 2007, 13:58:23 UTC
В моем понимании необходимость в юнит-тесте возникает при групповой и/или многоэтапной разработке, чтобы позволить исполнителям отлаживаться независимо. До сшивки фрагментов в большую систему.

Для микротирования есть инварианты в коде (что дешевле тестов - проверено), и, разумеется, Repl. Здесь моя позиция сходна с позицией Зефирова.

Эта методика замечательно работает и на С++ - разумеется, без Repl, но в плюсах у нас зато есть отладчик.

Reply


coderoid November 21 2007, 01:09:25 UTC
>> Дизайн в случае функциональной чистоты - удивительно простое и приятное занятие, не приходится морочится с состоянием, identity, и следующими из них схемами агрегации. Дизайн уже не является трудоемкой фазой разработки. Это меня изумляет.

Хм... А может это просто из-за того, что дизайн был "с нуля"? И был достаточно небольшим, чтобы помещаться в голове целиком? Если нужно что-то такое-эдакое дописать к серъезной существующей программе, не верится, что также легко получится... Особенно с объектной частью...

Reply

coderoid November 21 2007, 09:10:53 UTC
Нет, дело не в этом. Я специально решаю те задачи, которые я в прошлом очень удачно решал для С++ и ОО. Чтобы понаблюдать за собой, и сравнить возникающие проблемы и усилия.

Дело все в том, что в чистом коде нет ссылок, и, следовательно, агрегации. А из чего объектная можель состоит? Из отношений наследования, агрегации, ссылок, и распределения функций по классам. В случае чистого кода вы заняты только последним, и не можете налажать в первых пунктах принципиально. Поэтому все проще и дешевле.

Рефакторинг дешев, потому что нет разделяемого состояния - функции можно двигать между модулями не опасаясь последствий, они будут работать гарантировано.

Потом натягиваем на это объектную модель - определяем класс, котроый реализован чисто, используя ранее написанный чистый код. Вот у вас и выходит, что связность чистых модулей никак не зависит от связности классов - это совершенно независимые части.

Это, короче, без примера понять сложно. Я потом напишу.

Reply


sinfonia_girl November 21 2007, 21:31:05 UTC
Это, конечно, полнейший ОФФ... но gaperton вернулся??!! Я тебя не узнаю (по морде лица).

Reply


alexey_rom November 22 2007, 14:25:51 UTC
Здравствуйте! Пишу методичку по Эрлангу, можно ли включить это решение как пример?

Reply

gaperton November 22 2007, 16:39:20 UTC
Это большя честь для меня, однако - в этом виде - не стоит включать его методичку, потому что я (шепотом) этот код после последнего рефакторинга не отлаживал :). Там ошибки есть почти наверняка. Вот если его отладить - то будет хорошо.

Reply

alexey_rom December 3 2007, 19:26:01 UTC
Кстати, извините за вопрос -- Вы сейчас в CQG работаете или где-то в другом месте?

Reply

gaperton December 3 2007, 19:28:43 UTC
Уже два года как в другом месте. И вот думаю, надо бы еще разок работу поменять.

Reply


I love to read your articles vakitosubu March 8 2011, 02:02:59 UTC
You made some decent factors there. I seemed on the web for the issue and found most individuals will go along with along with your website.

Reply


Leave a comment

Up