вторник, 7 мая 2013 г.

По-моему - хорошая практика

По-моему хорошая практика - при исправлении ошибки, зафиксированной в базе ошибок, прямо в коде давать комментарий со ссылкой на исправляемую ошибку в базе данных по ошибкам (URL (в вики-подобной системе), номер ошибки (в баг-треккере типа Clear Quest или его аналогах), номер "тикета", etc.)

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

Если написан тест к данному исправлению - неплохо ещё давать ссылку на тест.

Эта банальная практика позволяет в дальнейшем облегчать разборки из серии "а что это такое тут понаписано".

Можно конечно пользоваться комментариями и логами из CVS или SVN. Но комментарии в коде - по-моему и практичнее и удобнее.

Попробуйте. Может быть вам понравится.

Снова о тестах. Другими словами

Пишите тесты. Обязательно пишите. Это поможет вам чувствовать уверенность в завтрашнем дне. Чтобы быть уверенным в том, что код и вся архитектура не развалится завтра при случайной правке базового класса или внесении правок в ТЗ.

Пишите тесты к:
1. Пользовательским сценариям (UseCase) из ТЗ.
2. Пунктам детализирующим ТЗ. Такие тесты позволят кроме проверки пунктов ТЗ ещё и находить противоречия в ТЗ.
3. Найденным ошибкам. (!)
4. Стабильно повторяющимся ошибкам. (!!)
5. Ошибкам, которые "вернулись уже не раз". (!!!)
6. Атомарные тесты к базовым классам. Типа: List.Add(10); Check(List[0] = 10); Такие тесты помогут вам при переходе с одной платформы на другую.
7. Unit-тесты к самым базовым классам.
8. Тесты, которые помогают "быстро влиться в разработку" пока несуществующего проекта. Такие тесты позволят вам "не ждать коллег".
9. Ошибкам стандартных библиотек, которые вы поправили. Эти тесты помогут вам проще переходить на новые версии этих библиотек.
10. К нестандартным решениям и "копанию в кишочках" своего и чужого кода.
11. Отдельно к различным преобразованиям из одного формата в другой. Такие тесты легко пишутся через mock'и или эталонные файлы. Конечно их надо иметь достаточный набор.
12. Если вы что-то долго и нудно оптимизируете по памяти и/или быстродействию. Пишите тест. Он поможет вам уследить за ситуацией, когда оптимизация вышла за желаемые рамки.
13. Граничным условиям и неверному пользовательскому вводу.
14. Если у вас с коллегами возникли разногласия о поведении системы на "границе сфер влияния".
15. Коду других коллег, которые уже не с вами. Особенно когда он вызвал вопросы типа - "а что это такое", "а может быть тут внести такую правку".

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

Одно только введение "контрольных точек" позволяет оценить систему не с точки зрения "монолита", а с точки зрения "а что бы было бы" если бы вот тут можно было бы снять показания или внести запланированные помехи.

Насчёт "тесты замедляют процесс разработки" - прокомментирую лишь в таком ключе - у меня - не замедляют, даже иногда и ускоряют (см. например пункт 8). Но при этом тесты дают гораздо большую свободу манёвра. Я безбоязненно правлю самые базовые классы и код коллег, которых со мною уже рядом нет. Я всегда знаю, что я могу прогнать набор тестов и посмотреть - "а что же будет". И мне приходится гораздо меньше сомневаться - стоит вносить ту или иную правку в проектный код или нет.

Попробуйте. Может быть вам понравится.

Update. Опять же читаем статью - http://delphi.frantic.im/delphi-tdd/ и КОММЕНТАРИИ к ней.

четверг, 2 мая 2013 г.

Хочется спросить....

Кто-нибудь в жизни нарисовал штук 5000 диаграмм UML? Или я только такой уникальный идиот?

Может я его вправду не понимаю? И программировать можно без UML? Сложные системы..

Я вот когда-то взял и нарисовал ВСЮ нашу систему на UML... И стоял и молчал...

Не поверите....

Но я рисую UML "в два клика"... И хотел бы найти Open Source редактор UML который это делает.. Почему то все доступные редакторы позволяют это делать в "четыре клика"... А то и более... И ещё - ломают моторику - вывешиванием диалога свойств объекта.. Непонятно зачем....

Прислали ссылку..

http://ru-declarative.livejournal.com/64216.html
вот сильно на меня похоже... :-)

"Идеальный язык обязан быть "мультипарадигмальным" без вымученности"

среда, 1 мая 2013 г.

Лирическое оступление про "железо"...

Купил себе ноутбук. HP. С процессором i7. Веселее чем Мак. С таким же процессором.

Что интересно - есть тач-пад. Он работает гораздо веселее чем такой же тач-пад на Acer с процессором Atom. Жесты Zoom и Scroll - вообще на ура работают. На предыдущем ноуте - они безбожно глючили.

Очень весело идёт Visio, Delphi XE4 и Rational Rose.

Планирую его сделать основным рабочим компьютером. Ну кроме Мака конечно же.

Правда мышь - всё равно веселее. Особенно Magic от apple.

Читаю документ от IBM

Читаю документ от IBM - ftp://public.dhe.ibm.com/software/rational/web/datasheets/rose_ds.pdf

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

Чего реально не хватает в редакторе xCode по сравнению с Delphi

Чего реально не хватает в редакторе xCode по сравнению с Delphi, так это нумерованных меток. Ну которые Ctrl-K-Цифра/Ctrl-Q-Цифра. Гениальная вещь. Почему в других редакторах её нет?

Поставил триальный Visio

Поставил триальный Visio. Это что-то с чем-то. Как говорится - без пол-литра не разобраться. Говорят - в нём UML можно рисовать. Найти бы как.

В итоге - конечно нашёл. Но это явно не для "быстрого" рисования тысяч UML диаграмм.

Три-пять классов нарисовать - да. А потом - выкинуть и забыть.

Именно - "рисовалка", а не средство серьёзного моделирования. Повседневного. Кропотливого. (Жена у меня кстати такого же мнения о Visio)

Rational Rose - пока всё ещё лидирует. Как ни странно. ModelMaker - ещё ничего был. Жаль - без возможности прикручивания собственной кодогенерации. Оттого наверное и умер.

Как в Visio импортировать существующую модель и Rational Rose - я не нашёл. А то бы - развлёкся бы. С уже в общем - предсказуемым результатом.