Автоматическая инициализация переменных в Delphi

Переменные в Delphi можно разделить на три типа

  • Глобальные
  • Локальные
  • Поля объектов

Разные типы имеют свои особенности инициализация по умолчанию. Глобальные переменные — переменные которые объявлены в теле модуля всегда инициализируются автоматически. Например, числовые типы всегда будут равны нулю.

Читать далее Автоматическая инициализация переменных в Delphi

Примеры порождающих паттернов из Банды четырёх (GoF) на Delphi

Вольный перевод статьи Gang-of-Four Creational Design Pattern Examples in Delphi

Специализированная для Delphi версия Порождающих паттернов из книги “Design Patterns: Elements of Reusable Object-Oriented Software”.

Абстрактная фабрика (Abstract Factory)

Абстрактная фабрика это класс который создаёт компонент и возвращает его в виде базового (абстрактного) типа. Потребитель (код который использует фабрику) не видит реализацию ни фабрики, ни объектов которые она производит, а работает только с базовыми типами.

В этом примере используются интерфейсы вместо абстрактных классов, которые используются в примерах в книге. Любое количество конкретных классов могут реализовывать интерфейс фабрики.

Читать далее Примеры порождающих паттернов из Банды четырёх (GoF) на Delphi

CodeFest 2019. Рефакторинг

Мой конспект доклада с CodeFest 2019 Алексея Катаева Рефакторинг: договариваемся, планируем, внедряем! Доклад был одним из самых полезных среди тех которые я слушал.

Постоянный рефакторинг

Продукт никогда не следует переписывать с нуля:

  • это слишком рискованно и затратно;
  • происходит потеря опыта зафиксированного в коде.

Для того чтобы продукт развивался необходимо применять рефакторинг.

Нельзя делать рефакторинг тайно. Нужно договорится о том чтобы его делать с руководством или владельцем продукта. Доводы за рефакторинг:

  • Без него скорость разработки постепенно снижается.
  • Без него стабильность продукта понижается.
  • Без него увеличивается время введения в проект новых разработчиков и уменьшается количество тех разработчиков которые вообще хотят работать на проекте.

Читать далее CodeFest 2019. Рефакторинг

Преобразование типов объектов в Delphi

Хочу рассмотреть один дискуссионный вопрос связанный с преобразованием типов. Сначала краткое введение. В Delphi существует два оператора is и as, связанных с преобразованием типов, и способ преобразования типа с помощью функции с именем типа (класса).

Оператор is используется для проверки типа, если объект соответствует указанному типу или является его наследником, то оператор возвращает True. В случае если в переменной nil то оператор возвращает False.

Оператор as используется для преобразования типа. Если объект соответствует типу или наследнику, то он преобразуется, если нет то выдаётся исключение EInvalidCast. В случае если в переменной nil, то исключение не произойдёт, но, конечно, обратится к полям объекта не получится - будет другое исключение.

Читать далее Преобразование типов объектов в Delphi