Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/34: Рейтинг темы: голосов - 34, средняя оценка - 4.71
19 / 19 / 8
Регистрация: 25.11.2013
Сообщений: 122
1

Какие соглашения действуют в C++?

09.08.2014, 15:37. Показов 7063. Ответов 29
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Например, в PHP следующие соглашения наименования:
  • Имена классов с большой буквы (SomeClass)
  • Имена переменных с маленькой буквы (some_var)
  • Имена функций с маленькой буквы (someFunction)

А какие соглашения действуют в C++?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.08.2014, 15:37
Ответы с готовыми решениями:

Изобразить, какие силы действуют в системе
Какие силы действуют в системе, изобразить да,еще k1=10000; k2=5000; k3=15000; m1=5; m2=7; m3=1

Какие силы действуют на ряску в сосуде на МКС
Здравствуйте! Мы с учениками проводили эксперимент в сотрудничестве с космонавтами МКС -...

Какие силы действуют на электрон в проводнике с током?
У меня несколько вопросов: 1. Какие силы действуют на электрон в проводнике с током? 2. Какие...

Какие силы притяжения действуют между космическими телами и удерживают их на орбитах
Если гравитация действует на объекты только в условиях наличия атмосферы (газовой оболочки), а за...

29
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
10.08.2014, 09:18 21
Author24 — интернет-сервис помощи студентам
Цитата Сообщение от 0x10 Посмотреть сообщение
У начинающих и в 30 строках могут начаться проблемы. Пример с using namespace - Глобальные переменные
Вы можете привести пример с подобными проблемами при использовании
C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
?
Чтобы тоже был один файл на 30-40 строк, никакой раздельной компиляции, никаких собственных нэймспейсов, и тут бах - на тебе, новичок вдруг решил свой си-аут или эндл в коде зафигачить?
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2014, 09:27 22
Цитата Сообщение от gru74ik Посмотреть сообщение
Вы можете привести пример с подобными проблемами при использовании
Код C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
?
Чтобы тоже был один файл на 30-40 строк, никакой раздельной компиляции, никаких собственных нэймспейсов, и тут бах - на тебе, новичок вдруг решил свой си-аут или эндл в коде зафигачить?
Вот как раз новичок запросто это отчебучит, забыв, что только что заюзал std-шный. Достаточно попытаться соорудить свой графический редактор, где декларировать endl, как int и понимать его, как номер последней строки. И заготовка этого редактора ещё не функциональная может весить всего 10 строк, а проблемы уже будут.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.08.2014, 09:29 23
Цитата Сообщение от Gouvere Посмотреть сообщение
Mr.X, меньше кода и выглядит красивее)
Ну, мне кажется, что если вещи вредные, ненужные и бессмысленные делаются даже из благих побуждений, то от этого они не перестают быть вредными, ненужными и бессмысленными.
Вообще-то причин применения этих юзингов, по моему мнению, на самом деле три:
1) После выпуска стандарта 1997 года так стали писать люди, привыкшие к прежнему написанию без пространств имен.
2) Подражание примерам в книгах, где авторы делают это для экономии букв, а точнее по причине 1, а точнее из глупости. Вменяемые авторы, кстати, так не делают.
3) Психологи говорят, что незнакомые слова вызывают у людей страх, поэтому люди, не знающие что такое пространства имен и для чего они нужны, пытаются писать код так, чтобы совсем о них забыть. А ведь пространства имен - это модули. Т.е. вы используете в своем модуле переменную, объявленную в другом модуле, а делаете вид, что она объявлена в вашем, чем вводите читателя программы в заблуждение. А по современным представлениям ясность и удобочитаемость программы важнее даже ее быстродействия и экономии памяти, а уж тем более каких-то тараканов в голове у программиста.
0
3257 / 2059 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
10.08.2014, 09:35 24
gru74ik, конкретно с using на 30 строках примера не придумаю. Поэтому в том же посте ниже и была приписка - чтобы не привыкали. На малых объемах кода многое можно делать, так что далее "против" можно выдвигать, наверное, только субъективные причины, которые мне формулировать лень, потому что на них найдутся точно такие же субъективные контраргументы "а мне нормально".

Добавлено через 6 минут
Mr.X, ну это все субъективные причины. Есть же вполне конкретный пример использования using, правда в другом контексте:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
 
struct Base {
  void f() {
    std::cout << "Base::f()" << std::endl;
  } 
};
 
struct Derived : Base {
  // Предотвращает сокрытие метода f();
  using Base::f;
  
  void f(double) {
    std::cout << "Derived::f(double)" << std::endl;
  }
};
 
int main() {
  Derived d;
  d.f();
  return 0;
}
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2014, 09:39 25
Или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include "string"
using std::cout;
using std::cin;
using std::endl;
int endl;
float beginx;
float endx;
int main()
{
 float x;
 float h;
 float y;
 int l;
 cin>>beginx;
 cin>>endl;
 cin>>endx;
 h=(enld-)/(float)endl;
 for (x=beginx, l=0; l<enld; ++l, x+=h)
 {
  y=x*x;
  cout<<"x="<<x<<", f(x)="<<y<<enld;  
 }
 return 0;
}
Добавлено через 1 минуту
24 строки, прога была бы функциональна, если избавиться от юзенов и каждый раз ставить двойное двоеточие, проблема есть и прога уровня не новичка в разработке текстовых редакторов, а новичка вообще в программировании.
0
Модератор
Эксперт CЭксперт С++
5284 / 2371 / 342
Регистрация: 20.02.2013
Сообщений: 5,770
Записей в блоге: 20
10.08.2014, 09:42 26
Mr.X, 0x10, возражения и замечания приняты. Благодрю за критику.
0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2014, 09:45 27
Кроме того, нельзя вводить, тем более рекомендовать к использованию языковую возможность, которую смогут использовать только новички, а став опытным программистом надо будет переучиваться из-за того, что привычное вызывает какие то проблемы: именно так [цензура]кодеры и получаются. Одно дело, если особенность языка помогает его изучать новичкам и нейтральна для профессионалов и совсем другое, когда она профессионалами не применима. Применять то они её будут в любом случае, но извратят код и завалят проблему костылями вместо того, чтоб писать правильно.
0
Эксперт С++
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
10.08.2014, 09:51 28
Цитата Сообщение от 0x10 Посмотреть сообщение
Mr.X, ну это все субъективные причины.
Ну так я описывал причины применения без причины.
0
0x10
10.08.2014, 09:58
  #29

Не по теме:

Цитата Сообщение от Mr.X Посмотреть сообщение
Ну так я описывал причины применения без причины.
Мда, я чет на своей волне.

0
4226 / 1795 / 211
Регистрация: 24.11.2009
Сообщений: 27,562
10.08.2014, 09:59 30
Цитата Сообщение от taras atavin Посмотреть сообщение
cout<<"x="<<x<<", f(x)="<<y<<enld;
То есть cout<<"x="<<x<<", f(x)="<<y<<endl; Очепятка.
0
10.08.2014, 09:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.08.2014, 09:59
Помогаю со студенческими работами здесь

Соглашения о вызовах.
Соглашения о вызовах.

соглашения,подпрограммы
используя соглашения Sdtcall я вызываю функция сложения с двумя аргументами--- 1--функция сложения...

Не действуют кнопки
Всем доброго времени суток! Есть база, написанная средствами аксесса на рабочем компе. Нужно...

Соглашения и спецификации об именах
Может кто кинет ссылочку на рекомендации, связанные с этим? (имеется ввиду типа: имена классов...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
30
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru