metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2013-09-14 08:17 am

Хаскельное

http://vit-r.livejournal.com/679524.html?thread=3691364#t3691364
решили на прошлой работе трое таки попробовать Хаскель, для неспешной задачи. генерация DDL, DML c скриптами SQL. Бились, бились, - но сделали, и был восторг! Потом, затянула обычная работа, через месяцок нужно было добавить кое-чего... и никто из троих не смог понять как оно работает, и как же добавить.

Звучит похоже на правду. Хотя у меня и F# и Clojure в подобных задачах живут и развиваются без проблем.

[identity profile] thedeemon.livejournal.com 2013-09-16 03:56 pm (UTC)(link)
Вот только это довольно бессмысленное занятие.
void f(bool x, bool y)
{
  Obj obj;
  if (x==y) obj = new Obj(); 
  else obj = null;
  if (y) obj.doSomthing();
}
//test:
f(true, true);
f(true, false);

100% покрытие тестами и явный баг с NPE при вызове f(false, true).

[identity profile] thedeemon.livejournal.com 2013-09-16 04:25 pm (UTC)(link)
Почему?
Первый тест заходит в строчки 1,2,4.
Второй - в 1,3.
Вместе покрывают все 1-4.
Edited 2013-09-16 16:27 (UTC)

[identity profile] vit-r.livejournal.com 2013-09-16 09:20 pm (UTC)(link)
Вот только это довольно бессмысленное занятие.

Для теоретика - да.

Для практика полное покрытие unit tests показывает, что в каждой строчке кода написали на самом деле то, что хотели написать.