Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > где объявлять переменные?


Автор: murzzzzz 13.2.2005, 18:00
я тут глянула одну тему, в ней чел один просил глянуть его прогу, че-то там у него не получалось, помогать я конечно не намеревалась smile (уровень еще у меня не тот), так просто ради интереса глянула.. ну кароче, меня заинтересовало то, как он объявил переменные:

#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, 16:00)
так все-таки, расскажите мне, неученой, где все-таки наиболее рационально объявлять обычные переменные?


Думаю это зависит от того, какая облась видимости переменных тебе нужна. Переменная объявленая внутри функции видна только в функции, переменная объявленная вне - является глобально и видна в любой функции.

Автор: 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
хе! а внутри функции красивее смотрицца!! smile

Автор: Nastya 13.2.2005, 21:01
Так, малыши smile
Объявлять перемнные глобально - есть плохой стиль программирорования.
По причине, того, что с разростанием программы Вам сложнее отслеживать их значения. теряется модульность.
В некоторых зыках программирирования ,(например С# ) глобальные переменные были убраны сознательно.

Лучший вариант - область видимости функция.

И перестаньте относится к программированиею работает/не работает. Если прогармма работает она должна быть еще и
1. легко маштобируемой
2. Легко читабельной
и просто красивой.

ИХМО, но ИХМО прошедшее через многие шишки на лбу smile

Автор: Doc_d0s 13.2.2005, 22:33
Хоть где! Но не стоит увлекаться глобализацией:)

Автор: chipset 13.2.2005, 23:27
Nastya права smile
Если нужно иметь переменные на протяжении работы всех функций, их следует выделить в отдельный класс - синглетон.

Автор: Domestic Cat 14.2.2005, 01:10
Цитата(chipset @ 13.2.2005, 14:27)
Если нужно иметь переменные на протяжении работы всех функций, их следует выделить в отдельный класс - синглетон.


(долбясь головой о стол) Синглтон не для этого предназначен.

Автор: chipset 14.2.2005, 01:16
Цитата(Domestic @ 13.2.2005, 14:10)

(долбясь головой о стол) Синглтон не для этого предназначен.

Ну не совсем для этого smile Но имхо так будет лучше чем раскидать переменные по файлам и потом искать где у тебя что...

Автор: Domestic Cat 14.2.2005, 01:19
Есть такой паттерн, называется Mediator...

Автор: murzzzzz 14.2.2005, 01:32
а чо такое Синглтон ? и паттерн Медиатр? smile

Автор: Borisff2003 14.2.2005, 06:44
murzzzzz, насколько я понимаю ты пока еще учишь сам язык. Помимо синтаксиса, существует еще куча всего. Например проектирование программ, для проектирования используют описанные и устоявшиеся взаимосвязи и ситуации. Это для того чтоб колесо не изобретать, для решения стандартных ситуаций. Синглтон и Медиатор и являются такими проектными решениями. Вообще советую посмотреть про паттерны проектировани, к сожалению не вспомнил ссылку на сайт, где они неплохо описаны (Разумеется есть и книга), тут на форуме точно гдето ссылка была, ну а может люди добрые подскажут smile .

Кстати еще существует куча библиотек, без них тоже грустно


Автор: 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
пасиба добрым людям за подсказки, почитала про паттерны по приведенным ссылкам, общий смысл конечно поняла, токо о половине употрабляемых там слов не имею ни малейшего понятия... smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)