• Пожаловаться

DarkGoodWIN: Рефакторинг. Зачем?

Здесь есть возможность читать онлайн «DarkGoodWIN: Рефакторинг. Зачем?» весь текст электронной книги совершенно бесплатно (целиком полную версию). В некоторых случаях присутствует краткое содержание. год выпуска: 2013, категория: Программирование / на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале. Библиотека «Либ Кат» — LibCat.ru создана для любителей полистать хорошую книжку и предлагает широкий выбор жанров:

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

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

DarkGoodWIN Рефакторинг. Зачем?

Рефакторинг. Зачем?: краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «Рефакторинг. Зачем?»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

DarkGoodWIN: другие книги автора


Кто написал Рефакторинг. Зачем?? Узнайте фамилию, как зовут автора книги и список всех его произведений по сериям.

Рефакторинг. Зачем? — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «Рефакторинг. Зачем?», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Часто путают понятия класс и объект, так вот, в нашем случае объект — это Line, а класс — TLine.

Объединение данных и кода

В прошлой главе мы создали новый класс, научились создавать экземпляры классов и на этом закончили. Давайте эту главу начнём с примера использования данной конструкции:


function CalculateLineLength(Line: TLine): Double;

begin

Result:= Sqrt(Sqr(Line. X2 — Line. X1) + Sqr(Line. Y2 — Line. Y1));

end;


var

Line: TLine;

LineLenght: Double;

begin

Line:= TLine. Create;

Line. X1:= 10;

Line. Y1:= 10;

Line. X2:= 20;

Line. Y2:= 20;

LineLenght:= CalculateLineLength(Line);

end;

Тут мы создаём новую линию и рассчитываем её длину. Для этого мы завели вспомогательную функцию CalculateLineLength.

Если приглядется, то в нашей новой функции слишком часто упоминается название переменной Line. Возможно есть способ сделать код несколько проще и наглядней? К счастью да. Дело в том, что функцию можно перенести непосредственно в класс:


type

TLine = class(TObject)

public

X1: Integer;

Y1: Integer;

X2: Integer;

Y2: Integer;

function CalculateLineLength: Double;

end;


function TLine. CalculateLineLength: Double;

begin

Result:= Sqrt(Sqr(X2 — X1) + Sqr(Y2 — Y1));

end;

В месте использования код также становтся наглядней. Строка LineLenght:= CalculateLineLength(Line); заменится на строку: LineLenght:= Line. CalculateLineLength;, что несколько короче и куда лучше подчёркивает тот факт, что функция относится именно к линии, а не к чему–то ещё.

Отмечу, что на практике, глядя на исходный код, часто возникает потребность понять, что можно сделать с тем или иным классом. Так вот, значительно проще, удобнее и быстрее пройтись по членам класса, чем найти все функции, принимающие класс в качестве параметра.

И немного из терминологии. Функцию член класса принято называть методом. В нашем случае, мы имеем класс с одним методом CalculateLineLength.

Приватные члены класса

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

Есть много способов решения подобной проблемы, но один из самых простых и универсальных — это кэширование.

Действительно, зачем считать длину каждый раз, если это можно сделать единожды, запомнить посчитанное значение и потом, в качестве результата функции, возвращать его.

Вот как это могло бы выглядеть:


type

TLine = class(TObject)

public

X1: Integer;

Y1: Integer;

X2: Integer;

Y2: Integer;

LengthCalculated: Boolean;

LineLength: Double;

function CalculateLineLength: Double;

end;


function TLine. CalculateLineLength: Double;

begin

if not LengthCalculated then

begin

LineLength:= Sqrt(Sqr(X2 — X1) + Sqr(Y2 — Y1));

LengthCalculated:= True;

end;

Result:= LineLength;

end;

При всей иллюзии работоспособности, в данном коде присутствует целый спектр проблем. Во–первых, тому, кто будет использовать класс снаружи, будет неочевидно, что необходимо вызывать функцию CalculateLineLength и не корректно напрямую использовать поле LineLength. Ну а во–вторых — нет механизма пересчёта длины при изменении координат точек.

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

Мы уже упоминали, да и не раз сталкивались с ключевым словом public, теперь пришло время рассказать, что оно означает. Члены класса, объявленные как public доступны как внутри класса, так и за его пределами.

Кроме public, есть ещё и ключевое слово private, которое означает, что члены класса доступны только из методов данного класса и не доступны за его пределами. В Object Pascal реализации, используемой в компиляторе Delphi, у данной функциональности есть особенность. Видимость private распространяется не только на членов класса, но и на весь модуль, в котором объявлен класс, что является неким отклонением от общих принципов, но уж так сложилось исторически, ничего не попишешь.

Читать дальше

Шрифт:

Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «Рефакторинг. Зачем?»

Представляем Вашему вниманию похожие книги на «Рефакторинг. Зачем?» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё не прочитанные произведения.


libclub.ru: книга без обложки
libclub.ru: книга без обложки
Анатолий Бурак
Роберт Силверберг: Зачем?
Зачем?
Роберт Силверберг
libclub.ru: книга без обложки
libclub.ru: книга без обложки
DarkGoodWIN
libclub.ru: книга без обложки
libclub.ru: книга без обложки
Пабло Неруда
Отзывы о книге «Рефакторинг. Зачем?»

Обсуждение, отзывы о книге «Рефакторинг. Зачем?» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.