5. Примеры:
• server-add myserver # OK
• server-remove myserver # FAIL: ‘myserver’ is not
•
•
a valid IPv4 address
salt v0.17.2: pkgrepo.managed # OK
salt v0.17.4: pkgrepo.managed # FAIL
9. Понимание
• Реализует все контракты
•
•
o raise NotImplementedError
Движется в нужном направлении
o интеграция с puppet при сломанном yum api
o преждевременная монетизация
Production-ready?
10. Реализация
• Покрыто ли тестами?
• Качество тестов
• Соблюдение DRY/KISS/etc
• Как следствие,
•
o простота
o расширяемость
Соответствие [де-факто] стандартам
11. Комментарии
• long john; // silver
• // Я посвящаю весь свой код,
•
// всю работу своей жене Дарлин, которой
// придётся содержать меня,
// наших троих детей и собаку, когда
// это пойдет в паблик.
long long ago; /* in a galaxy far far away */
17. Как выбираются инструменты
Наличие удобного API
urllib2
urllib2.HTTPPasswordMgrWithDefaultRealm
urllib2.HTTPDigestAuthHandler
urllib2.AbstractBasicAuthHandler
18. Подводные камни
1. Обзор фич - маркетинг
2. Сравнение фич - платные, поверхностные обзоры
3. Удобный GUI - возможно, единственный
грамотно написанный компонент
4. Удобный CLI - неконсистентный ввод/вывод,
опции (--verbose vs --log verbose)
5. Удобный API - отсутствие высокоуровневых
абстракций, отсутствие логики взаимодействия
19. Вопросы, которые нужно задать
Могу ли я пользоваться инструментом, который:
не реализует маркетинговые обещания?
не имеет внутренней логики?
не имеет тестов?
имеет мало тестов?
имеет бессмысленные тесты?
развивается от “левой пятки”?
•
•
•
•
•
•