- Предисловие
- Введение
- 1. Понятие качества программного обеспечения
-
2.
Критерии качества программного обеспечения
- 2.1. Внешние факторы качества
- 2.2. Внутренние факторы качества
- 2.3. Оптимизация исходного кода
- 2.4. Универсальность исходного кода.
- 2.5. Дублирование кода
- 2.6. «Дырявые» абстракции
- 2.7. Локализация ошибок при модификации кода
- 2.8. Минимизация изменений в коде
- 2.9. Опасная перегрузк
- 2.10. Зависимости между методами
- 2.11. Недостаточная инициализация
- 2.12. Неизменяемость
- 2.13. Возврат нулевой ссылки
- 2.14. Единство дизайна
- 2.15. Качество кода
- 2.16. Идиомы языка программирования
- 2.17. Документация
- 2.18. Метафоры
- 2.19. Растущие сложные системы
- 2.20. Метрики
- 2.21. Модульность
- 2.22. Повторное использование
- 2.23. Инкапсуляция
- 2.24. Зависимости между модулями
- 3. Тестирование и отладка приложений для Windows Store
- 4. Стратегии и методы тестирования
- 5. Написание безопасного кода
- 6. Хранилище XML и проверка данных
- Думайте как враг
- Заключение
- Список литературы
2.11. Недостаточная инициализация
Все методы так или иначе вызываются после конструктора. Это, в частности, означает, что после создания объекта он сразу должен быть готов к работе. Если конструктор не инициализирует объект полностью, это может привести к ошибкам. Такая опасность известна как «недостаточная инициализация» [3].
Лучше всего объявить все возможные поля как final (см. ниже). Это заставит разработчика проинициализировать их все в конструкторе.
Помните, что выносить инициализацию в отдельный метод и вызывать его в конструкторе можно, только если этот метод определен как окончательный (final), иначе переопределение этого метода в подклассах может привести к ошибкам.