|
|
|
переменные Local, Public, Private!
|
|||
|---|---|---|---|
|
#18+
Какая разница между переменными Local, Public, Private? Если есть вариант показать на примерах!Для сравнения! Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 01:38 |
|
||
|
переменные Local, Public, Private!
|
|||
|---|---|---|---|
|
#18+
Пример: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ________ Не дадим распространиться заразе политкорректности! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 08:34 |
|
||
|
переменные Local, Public, Private!
|
|||
|---|---|---|---|
|
#18+
автор 1.1 Использование переменных памяти Локальные, приватные и глобальные переменные мы объявляем всегда явно. При разработке … использовали PRIVATE ALL LIKE P* сокращение, когда была потребность в private переменных. При этом теряется быстродействие выполнения кода. При дальнейших разработках и доработках мы будем избегаем этой практики. Специфрикатор "m." для переменных памяти используется только в тех случаях когда имя переменной совпадает с именем поля в таблице (при создании переменных командой SCATTER MEMVAR). 1.1.1 Глобальные переменные При реализации дальнейших доработок мы не используем глобальных переменных, т.к. это нарушает принцип инкапсуляции. В ситуациях, когда без глобальной переменной нельзя обойтись, мы будем использовать принципы ООП и создавать объекты на основании базовых классов. Например необходим доступ к «глобальному» атрибуту – настройке во всех формах и процедурах приложения, для реализации этого мы добавляем custom property в объект расположенный на глобальном уровне приложения. Можно сказать что есть только 2 случая законного использования глобальных переменных: - объект расположенный на глобальном уровне приложения ; - глобальный "hook" объект. Одно из основных использований конструктивного шаблона OOP "hook" - это описание характера поведения(режима), которое будет "hooked" с другим объектом. Часто, много объектов должны быть сцеплены("hooked") с отдельным hook-объектом. Мы видим, что вполне возможно создание одного глобального hook-объекта для общего использования другими объектами/управлениями. 1.1.2 Закрытый (private) переменные Т.к. … эволюционировал и разрабатывался на ранних версиях Visual Foxpro, группа разработчиков активно использовала переменные данного типа. Также разработчики использовали неявное объявление переменных, что привело к сложностям и коллизиям при сопровождении ПО, при реализации последующих доработок. При сопровождении ПО и доработках мы private переменные также не используем, т.к. они слабо отражают суть объектного программирования. Единственное исключение, технический прием по получению значения из форм основанных на VCX. Но даже в этом случае можно избежать применения private переменных путем прямого считывания значения свойств объекта (формы) в вызывающей процедуре. 1.1.3 Локальные переменные Мы используем только локальные переменные в процедурах и функциях, для процедурных библиотек и в методах объектов, а для передачи параметров мы используем lParameters. 1.2 Именование переменных При формировании имени переменной мы используем «венгерский стандарт». Наше основное соглашение состоит в том, что все имена переменных начинаются с общей приставки из 2–х символов. При присвоении переменным имен мы используем следующий рекомендуемый формат: [Видимость][Тип]VariableName Первый символ определяет область действия, второй символ определяет тип данных Рекомендованные коды приведены в таблицах ниже по тексту. Имя переменной должно как можно точнее характеризовать назначение переменной. Рекомендуется коды вводить в нижнем регистре, а значимые (составные) слова в имени переменной должны начинаться с верхнего регистра (принцип смешанной записи). При возможности не делать сокращений. Все префиксы вводятся маленькими буквами. Префиксы, соответствующие областям видимости переменных в VFP Префикс Область видимости L Local (локальная) P Private (Частная) G Global (Глобальная) Дополнительные модификаторы входящих параметров функций для режима передачи по ссылке. V Private по ссылке T Local по ссылке Дополнительные префиксы, соответствующие областям видимости свойств в VFP Префикс Область видимости H Hidden (скрытая) P Protected (Частная) G Public (Глобальная) Префиксы, соответствующие типам переменных в VFP Префикс Тип данных A Array (Массив) C Character, Varchar, Varchar (Binary) (символьный) L Logical(логический) N Numeric (числовой) Y Currency (денежный) I Integer (целые знаковые числа) D Date (Дата) T DateTime (ДатаВремя) B Double O Object (объект, в том числе и OLE объект) f Float q Varbinary, Blob (бинарный) U Тип данных неопределён, т.е. может меняться по ходу программы Ниже приводиться пример именования переменных сформированных по приведенным выше принципам: lcFirstName – локальная переменная символьного типа lnSum - локальная переменная числового типа laTmpArray - локальный массив tdBeginDate – переданный параметром извне параметр типа «дата» taArrayRowProp – переданный параметром извне массив .hlOldValue – скрытое свойство – тип логический (имя свойства всегда предваряется либо символом точка, либо ключевыми словами THIS, THISFORM, именем объекта) При именовании свойств объектов допускается не делать предварительного префикса областям видимости у Public (Глобальная) свойств. При именовании свойств объектов допускается не делать префиксов у свойств, смысл действия которых, полностью совпадает с аналогичным стандартным свойством Visual FoxPro объекта. Например: ReadOnly, ToolTip, StatusBarText, Value … Объявление группы переменных директивой LOCAL должно быть помещено в начало исполняемого блока. Cпецификатор «m.» перед именем переменной при присвоении значений переменным и при сравнении значений переменных мы не используем. Спецификатор «m.» перед именем переменной мы используем только в тех случаях, когда имя переменной совпадает с именем поля в таблице и при создании переменных командой SCATTER MEMVAR (в старших версиях FoxPro имеется опция в команде Scatter, которая позволяет считывать значения записи курсора в объект Empty, что дает возможность не использовать спецификатор «m.») . Данное соглашение призволит исключить случаи совпадения имен переменных и имен полей в таблицах и курсорах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 09:48 |
|
||
|
переменные Local, Public, Private!
|
|||
|---|---|---|---|
|
#18+
Александр, Вы хоть авторов-то цитаты указывайте. Буду знать что НЕ рекомендовать для чтения Вполне возможно полностью текст имеет смысл, но в приведенном Вами виде в свете собственно вопроса - это полная бессмыслица. Alan_Aushev Вообще-то, подробное описание с примерами есть в HELP по FoxPro. Для каждого типа. Доступ к переменным памяти Переменные памяти имеют так называемую "область видимости". Грубо говоря, из каких мест программы (методов, процедур, функций) Вы можете увидеть ту или иную переменную. По умолчанию, если область видимости переменной не объявлена явно, то любая вновь созданная переменная имеет область видимости PRIVATE. Это значит, что такая переменная будет видна в той процедуре в которой она была создана (созданием является присвоение ей значения) и во всех процедурах вызванных из данной. При этом, команда PRIVATE не создает новых переменных, а лишь скрывает (прячет) ранее созданные переменные с тем же именем в текущем контексте. По сути, одновременно может существовать несколько одноименных переменных с областью видимости PRIVATE, "вложенных" друг в друга. Как матрешки. Пример приведен в справке по команде PRIVATE Команда PRIVATE Команда LOCAL явно создает переменные памяти. При этом, по умолчанию, все вновь созданные переменные получают значение .F. Переменные с областью видимости LOCAL видны только и исключительно в той процедуре, где они были объявлены. Команда LOCAL Команда PUBLIC также явно создает переменные памяти. При этом, по умолчанию, все вновь созданные переменные получают значение .F. Переменные с областью видимости PUBLIC видны из любого места приложения с момента их создания. По возможности, следует избегать создания переменных с областью видимости PUBLIC, поскольку это потенциальный источник трудно отлавливаемых ошибок. Объявили переменную в одном месте, изменили ее значение в другом, а использовали в третьем. Пойди узнай, кто из них "виноват", что программа работает "криво"? PUBLIC, команда ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 11:00 |
|
||
|
переменные Local, Public, Private!
|
|||
|---|---|---|---|
|
#18+
2Alan_Aushev В старших версиях фокспро: -cтарайтесь не использовать паблик и приват переменных. -по-возможности используйте локальные переменные. -явно объявляйте и явно передавайте переменные -явно прнимайте переменные в параметры командой Lparameters -cпецификатор 'm.' используйте если Вы явно уверены в существовании в курсоре также именованного поля (правильное именование исключает совпадения) если Вам необходимы примеры, в которых будет показано, как создавать классы и строить приложения с использованием принципов ООП, то задавайте вопросы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2007, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=41&msg=34806879&tid=1588752]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
57ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 395ms |

| 0 / 0 |
