Auslogics: работа и отзывы о работе
Вы хотите отреагировать на этот пост ? Создайте аккаунт всего в несколько кликов или войдите на форум.

Пример кода №3

Участников: 3

Перейти вниз

Пример кода №3 Empty Пример кода №3

Сообщение автор Marina-T Чт Ноя 05, 2015 10:37 pm

Код:

...
try
SRC.Canvas.Lock;
Buffer.Canvas.Lock;
...
Buffer.Canvas.Unlock;
SRC.Canvas.Unlock;
except
Result := False;
SRC.Canvas.Unlock;
Buffer.Canvas.Unlock;
end;
...


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

- Повторный вызов методов Unlock в блоке except лишний и ненужный, т.к. достаточно использовать конструкции try finally. Это позволяет избежать дублирования и сделать код более читабельным и логичным.

- Отсутствие операторов try finally между вызовами Lock и Unlock может привести к тому, что ресурс останется заблокированным или будет вызван Unlock на незаблокированном ресурсе.

- Вызов Unlock в блоке except может выполниться до того, как будет вызван Lock для этого ресурса.
Marina-T
Marina-T
Admin

Сообщения : 33
Дата регистрации : 2015-11-04
Возраст : 37

https://auslogics.forum2x2.ru

Вернуться к началу Перейти вниз

Пример кода №3 Empty Re: Пример кода №3

Сообщение автор SmartGuy Пн Ноя 23, 2015 10:08 pm

Судя по коду (хотя этого не видно), в начале функции Result := True. Это очень плохо. По умолчанию лучше предполагать худший вариант - ошибку.

SmartGuy

Сообщения : 5
Дата регистрации : 2015-11-20

Вернуться к началу Перейти вниз

Пример кода №3 Empty Re: Пример кода №3

Сообщение автор DELPHI team Auslogics Вт Ноя 24, 2015 10:41 pm

1. Данный пример, опять же, показывает ошибочное использование.
2. По коду не видно, какое значение принимает Result.
3. По коду не видно, что это за функция и значение True может быть ошибкой.
DELPHI team Auslogics
DELPHI team Auslogics

Сообщения : 11
Дата регистрации : 2015-11-21

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения