Месяц: Май 2010

  • Test-driven development (TDD) и Постпозитивизм

    Давным-давно, когда я учился в аспирантуре физтеха по специальности “Моделирование, численные методы и комплексы программ”, одним из предметов которые нужно было изучать была философия. Лично для меня предмет не самый интересный, но благодаря  нашему преподавателю философии после пары лекций  учение Сэра Карла Раймунда Поппера вызвало  парадигм_шифт в сознании…

    Краеугольным камнем этого сдвига является критерий Поппера или фальсифицируемость (принципиальная опровержимость утверждения, опровергаемость).  Цитируя википедию, привожу следующее определение: “Критерий фальсифицируемости требует, чтобы теория или гипотеза не была принципиально неопровержимой.”

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

    Следуя правилам TDD мы с помощью набора тестов создаем условия, при которых наша программа ( “гипотеза“) может быть опровергнута! Далее,  в процессе разработки ПО мы добиваемся состояния, когда все тесты выполняются успешно  и “загорается зеленый свет”!

    А дальше у многих в голове происходит страшное…

    Люди начинают путать фальсифицируемость и верифицируемость(то есть доказуемость). Если все тесты прошли успешно, это не доказывает, что наша программа работает корректно. Соблюдение критерия Поппера — есть необходимое условие, но не достаточное.  Другими словами, если все тесты прошли успешно, этого недостаточно! Нельзя   утверждать, что программа работает корректно.

    Зачем же тогда писать юнит-тесты? Затем, чтобы в тех случаях когда тест не срабатывает мы точно знали — у нас есть ошибки. Это важно знать, иначе в программировании будет торжествовать мистика и мракобесие.

  • Camel Case

    camel caseCamel Case, он же — Верблюжий Регистр, он же — Горбатый Стиль.

    Определение из википедии — “стиль написания составных слов, при котором несколько слов пишутся слитно без пробелов, при этом каждое слово пишется с заглавной буквы. Стиль получил название CamelCase, поскольку заглавные буквы внутри слова напоминают горбы верблюда

    Такой стиль используется в языке программирования  Java. Для названия классов используют UpperCamelCase (верблюд поднял голову – первая буква большая),  для методов и объектов класса — lowerCamelCase (верблюд опустил голову).

    Несоблюдение этих простых соглашений по наименованию может восприниматься как пренебрежение и неуважение других программистов и нарушение элементарных этических норм.

    Не будь верблюдом, не плюй на других, используй верблюжий регистр!

    Пожалуйста, соблюдайте доброжелательное отношение к другим людям!

  • Hibernate. Update. Популярные грабли

    hibernate
    Сейчас многие любят реализовывать Data Access Object (DAO) на базе Hibernate.
    Хотелось уделить особое внимание работе с объектами в различных состояниях.
    Пример из документации :

       DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );
       cat.setName("PK");
       sess.flush();  // changes to cat are automatically detected and persisted
    

    Некоторые думают, что нужно делать так:

       DomesticCat cat = (DomesticCat) sess.load( Cat.class, new Long(69) );
       cat.setName("PK");
       sess.update(cat); // НЕ НАДО, ОНО САМО СОХРАНИТСЯ !!!! REMOVE THIS LINE
       sess.flush();  // changes to cat are automatically detected and persisted
    

    (далее…)

  • Редактор UML. Альтернатива

    Кончено, для создания UML диаграмм можно использовать такие продукты как   Rational Software Modeler (Rational/IBM)или например Visual Paradigm for UML. Если открыть википедию, то в разделе про UML-редакторы можно найти около 30 ссылок на различные инструменты UML моделирования.

    И все-таки, не смотря на такой большой список, хотелось выделить несколько довольно интересных редакторов.

    UMLet – www.umlet.com

    Этот редактор обладает убийственной простотой.  В нём все просто и без излишеств – без закругленных уголков, выпендрежных иконок и градиентной заливки.  Аскетичный,  но при этом удобный. Он содержит только то, что нужно для работы с UML. Приблизительно так выглядят диаграммы, когда мы их рисуем на листе бумаги (только с ровными линиями). (далее…)