| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > где объявлять переменные? |
| Автор: murzzzzz 13.2.2005, 18:00 |
| я тут глянула одну тему, в ней чел один просил глянуть его прогу, че-то там у него не получалось, помогать я конечно не намеревалась #include <conio.h> #include <stdio.h> #include <math.h> double chislo,cifra; int n,c,ostatok,cifraint; void main(){ //clrscr(); ... вот видите, он их объявил вне функции, а это ведь даже не константы! это он специально такое сделал, ну я имею ввиду, чоб там типа диапазон доступа больше был, или это так многие объявляют? я просто такое впервые вижу! так все-таки, расскажите мне, неученой, где все-таки наиболее рационально объявлять обычные переменные? |
| Автор: Wowa 13.2.2005, 18:08 | ||
Думаю это зависит от того, какая облась видимости переменных тебе нужна. Переменная объявленая внутри функции видна только в функции, переменная объявленная вне - является глобально и видна в любой функции. |
| Автор: murzzzzz 13.2.2005, 18:14 | ||
вот я об этом и говорю! у чела-то прога состоит из одной токо функции мэйн(), да и длинной-то не больше странички, зачем в таком случае объявлять ее вне функции? |
| Автор: Alexandr87 13.2.2005, 18:17 |
| Конкретно в данном случае практической разницы нет. Переменные объявленные вне функции - будут доступны всем функциям, которые объявлены позже (ниже по коду). Но и соответсвенно будут находиться в памяти напротяжении работы всей программы. Если он объявит их в начале функции main - то разницы никакой не будет - так как функция одна. |
| Автор: Marriage 13.2.2005, 18:21 |
| Не знаю, мне (когда я пишу на С) удобно, когда все переменные (кроме переменных цикла), объявляюся в начале функции. |
| Автор: murzzzzz 13.2.2005, 18:22 |
| хе! а внутри функции красивее смотрицца!! |
| Автор: Nastya 13.2.2005, 21:01 |
| Так, малыши Объявлять перемнные глобально - есть плохой стиль программирорования. По причине, того, что с разростанием программы Вам сложнее отслеживать их значения. теряется модульность. В некоторых зыках программирирования ,(например С# ) глобальные переменные были убраны сознательно. Лучший вариант - область видимости функция. И перестаньте относится к программированиею работает/не работает. Если прогармма работает она должна быть еще и 1. легко маштобируемой 2. Легко читабельной и просто красивой. ИХМО, но ИХМО прошедшее через многие шишки на лбу |
| Автор: Doc_d0s 13.2.2005, 22:33 |
| Хоть где! Но не стоит увлекаться глобализацией:) |
| Автор: chipset 13.2.2005, 23:27 |
| Nastya права Если нужно иметь переменные на протяжении работы всех функций, их следует выделить в отдельный класс - синглетон. |
| Автор: Domestic Cat 14.2.2005, 01:10 | ||
(долбясь головой о стол) Синглтон не для этого предназначен. |
| Автор: chipset 14.2.2005, 01:16 | ||
Ну не совсем для этого |
| Автор: Domestic Cat 14.2.2005, 01:19 |
| Есть такой паттерн, называется Mediator... |
| Автор: murzzzzz 14.2.2005, 01:32 |
| а чо такое Синглтон ? и паттерн Медиатр? |
| Автор: Borisff2003 14.2.2005, 06:44 |
| murzzzzz, насколько я понимаю ты пока еще учишь сам язык. Помимо синтаксиса, существует еще куча всего. Например проектирование программ, для проектирования используют описанные и устоявшиеся взаимосвязи и ситуации. Это для того чтоб колесо не изобретать, для решения стандартных ситуаций. Синглтон и Медиатор и являются такими проектными решениями. Вообще советую посмотреть про паттерны проектировани, к сожалению не вспомнил ссылку на сайт, где они неплохо описаны (Разумеется есть и книга), тут на форуме точно гдето ссылка была, ну а может люди добрые подскажут Кстати еще существует куча библиотек, без них тоже грустно |
| Автор: chipset 14.2.2005, 08:13 |
| http://rsdn.ru/article/patterns/patterns.xml http://rsdn.ru/article/patterns/singleton.xml Ещё есть книжка Александреску, глянь на anatolix.nm.ru |
| Автор: murzzzzz 14.2.2005, 11:31 |
| пасиба добрым людям за подсказки, почитала про паттерны по приведенным ссылкам, общий смысл конечно поняла, токо о половине употрабляемых там слов не имею ни малейшего понятия... |