Форум программистов, компьютерный форум CyberForum.ru

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

Восстановить пароль Регистрация
 
 
Gouvere
 Аватар для Gouvere
19 / 19 / 3
Регистрация: 25.11.2013
Сообщений: 122
09.08.2014, 15:37     Какие соглашения действуют в C++? #1
Например, в PHP следующие соглашения наименования:
  • Имена классов с большой буквы (SomeClass)
  • Имена переменных с маленькой буквы (some_var)
  • Имена функций с маленькой буквы (someFunction)

А какие соглашения действуют в C++?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.08.2014, 15:37     Какие соглашения действуют в C++?
Посмотрите здесь:

Определить, какие из этих имен встречаются во всех классах, какие есть хотя бы в двух классах, и какие - только в одном классе C++
C++ Спрашивается, каков будет счет в конце игры, если оба игрока действуют оптимально.
C++ Какие книги есть по Си++?
C++ Почему операторы инкремента действуют по разному для стандартных и нестандартных типов?
C++ Какие ошибки в коде?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gru74ik
Модератор
 Аватар для gru74ik
3116 / 1342 / 167
Регистрация: 20.02.2013
Сообщений: 3,809
Записей в блоге: 17
10.08.2014, 09:18     Какие соглашения действуют в C++? #21
Цитата Сообщение от 0x10 Посмотреть сообщение
У начинающих и в 30 строках могут начаться проблемы. Пример с using namespace - Глобальные переменные
Вы можете привести пример с подобными проблемами при использовании
C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
?
Чтобы тоже был один файл на 30-40 строк, никакой раздельной компиляции, никаких собственных нэймспейсов, и тут бах - на тебе, новичок вдруг решил свой си-аут или эндл в коде зафигачить?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.08.2014, 09:27     Какие соглашения действуют в C++? #22
Цитата Сообщение от gru74ik Посмотреть сообщение
Вы можете привести пример с подобными проблемами при использовании
Код C++
1
2
3
using std::cout;
using std::cin;
using std::endl;
?
Чтобы тоже был один файл на 30-40 строк, никакой раздельной компиляции, никаких собственных нэймспейсов, и тут бах - на тебе, новичок вдруг решил свой си-аут или эндл в коде зафигачить?
Вот как раз новичок запросто это отчебучит, забыв, что только что заюзал std-шный. Достаточно попытаться соорудить свой графический редактор, где декларировать endl, как int и понимать его, как номер последней строки. И заготовка этого редактора ещё не функциональная может весить всего 10 строк, а проблемы уже будут.
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
10.08.2014, 09:29     Какие соглашения действуют в C++? #23
Цитата Сообщение от Gouvere Посмотреть сообщение
Mr.X, меньше кода и выглядит красивее)
Ну, мне кажется, что если вещи вредные, ненужные и бессмысленные делаются даже из благих побуждений, то от этого они не перестают быть вредными, ненужными и бессмысленными.
Вообще-то причин применения этих юзингов, по моему мнению, на самом деле три:
1) После выпуска стандарта 1997 года так стали писать люди, привыкшие к прежнему написанию без пространств имен.
2) Подражание примерам в книгах, где авторы делают это для экономии букв, а точнее по причине 1, а точнее из глупости. Вменяемые авторы, кстати, так не делают.
3) Психологи говорят, что незнакомые слова вызывают у людей страх, поэтому люди, не знающие что такое пространства имен и для чего они нужны, пытаются писать код так, чтобы совсем о них забыть. А ведь пространства имен - это модули. Т.е. вы используете в своем модуле переменную, объявленную в другом модуле, а делаете вид, что она объявлена в вашем, чем вводите читателя программы в заблуждение. А по современным представлениям ясность и удобочитаемость программы важнее даже ее быстродействия и экономии памяти, а уж тем более каких-то тараканов в голове у программиста.
0x10
2425 / 1597 / 232
Регистрация: 24.11.2012
Сообщений: 3,919
10.08.2014, 09:35     Какие соглашения действуют в C++? #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;
}
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.08.2014, 09:39     Какие соглашения действуют в C++? #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 строки, прога была бы функциональна, если избавиться от юзенов и каждый раз ставить двойное двоеточие, проблема есть и прога уровня не новичка в разработке текстовых редакторов, а новичка вообще в программировании.
gru74ik
Модератор
 Аватар для gru74ik
3116 / 1342 / 167
Регистрация: 20.02.2013
Сообщений: 3,809
Записей в блоге: 17
10.08.2014, 09:42     Какие соглашения действуют в C++? #26
Mr.X, 0x10, возражения и замечания приняты. Благодрю за критику.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.08.2014, 09:45     Какие соглашения действуют в C++? #27
Кроме того, нельзя вводить, тем более рекомендовать к использованию языковую возможность, которую смогут использовать только новички, а став опытным программистом надо будет переучиваться из-за того, что привычное вызывает какие то проблемы: именно так [цензура]кодеры и получаются. Одно дело, если особенность языка помогает его изучать новичкам и нейтральна для профессионалов и совсем другое, когда она профессионалами не применима. Применять то они её будут в любом случае, но извратят код и завалят проблему костылями вместо того, чтоб писать правильно.
Mr.X
Эксперт С++
 Аватар для Mr.X
2801 / 1577 / 247
Регистрация: 03.05.2010
Сообщений: 3,663
10.08.2014, 09:51     Какие соглашения действуют в C++? #28
Цитата Сообщение от 0x10 Посмотреть сообщение
Mr.X, ну это все субъективные причины.
Ну так я описывал причины применения без причины.
0x10
10.08.2014, 09:58
  #29

Не по теме:

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

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.08.2014, 09:59     Какие соглашения действуют в C++?
Еще ссылки по теме:

Какие ошибки в коде? C++
C++ Выяснить, какие из прямых параллельны, а какие - нет
C++ Имя соглашения о вызове функции

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

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
10.08.2014, 09:59     Какие соглашения действуют в C++? #30
Цитата Сообщение от taras atavin Посмотреть сообщение
cout<<"x="<<x<<", f(x)="<<y<<enld;
То есть cout<<"x="<<x<<", f(x)="<<y<<endl; Очепятка.
Yandex
Объявления
10.08.2014, 09:59     Какие соглашения действуют в C++?
Ответ Создать тему
Опции темы

Текущее время: 13:43. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru