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

C++

Войти
Регистрация
Восстановить пароль
Результаты опроса: Нравится ли Гото, используете ли вы его
Да 21 37.50%
Нет 35 62.50%
Голосовавшие: 56. Вы ещё не голосовали в этом опросе

 
 
Рейтинг: Рейтинг темы: голосов - 42, средняя оценка - 4.81
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 1
#1

Хороший или плохой тон программирования - C++

28.03.2010, 13:42. Просмотров 5183. Ответов 49
Метки нет (Все метки)

вот в книгах читаю что гото туфта полная..на форуме тоже так говорят,а почему?очень нужная вещь,иногда лучше использовать это чем циклы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 13:42     Хороший или плохой тон программирования
Посмотрите здесь:

Visual C++ Плохой проект
Visual C++ TCHAR + float != дружба или плохой wsprintf
плохой gets() C++
C++ Хороший тон программирования
В какой среда программирования(или компиляторе) открыть нижеуказанный код? C++
C++ С++ или С. Какой язык программирования необходимо знать изначально, чтобы далее изучать Objective C?
Объединять классы и внешние функции в одной программе плохой тон программирования? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 1
01.04.2010, 23:22  [ТС]     Хороший или плохой тон программирования #21
Atrus, а причем тут это все Оо
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
02.04.2010, 00:30     Хороший или плохой тон программирования #22
Atrus, будет интересно посмотреть как вы напишите более менее серьезный проект. Просто прежде чем повторять чью-то фразу - надо понимать, что это всего лишь рекомендация и не более. Приведу простой пример, один
метод
Java
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
    private void initComponents() {
 
        mainFrame = new javax.swing.JFrame("Calculator");
        jButton1 = new javax.swing.JButton();
        jButton2 = new javax.swing.JButton();
        jButton3 = new javax.swing.JButton();
        jButton4 = new javax.swing.JButton();
        jButton5 = new javax.swing.JButton();
        jButton6 = new javax.swing.JButton();
        jButton7 = new javax.swing.JButton();
        jButton8 = new javax.swing.JButton();
        jButton9 = new javax.swing.JButton();
        jButton10 = new javax.swing.JButton();
        jButton11 = new javax.swing.JButton();
        jButton12 = new javax.swing.JButton();
        jButton13 = new javax.swing.JButton();
        jButton14 = new javax.swing.JButton();
        jButton15 = new javax.swing.JButton();
        jButton16 = new javax.swing.JButton();
        jButton17 = new javax.swing.JButton();
        jTextField1 = new javax.swing.JTextField(10);
        empty = new javax.swing.JLabel();
 
        mainFrame.setSize(428, 200);
        mainFrame.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
      
        jButton1.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton1.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton1.setSize(40, 23);
        jButton1.setLocation(272, 45);
        jButton1.setText("1");
 
        jButton2.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton2.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton2.setSize(40, 23);
        jButton2.setLocation(318, 45);
        jButton2.setText("2");
        
        jButton3.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton3.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton3.setSize(40, 23);
        jButton3.setLocation(364, 45);
        jButton3.setText("3");
        
        jButton4.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton4.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton4.setSize(40, 23);
        jButton4.setLocation(272, 74);
        jButton4.setText("4");
 
        jButton5.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton5.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton5.setSize(40, 23);
        jButton5.setLocation(318, 74);
        jButton5.setText("5");
 
        jButton6.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton6.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton6.setSize(40, 23);
        jButton6.setLocation(364, 74);
        jButton6.setText("6");
 
        jButton7.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton7.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton7.setSize(40, 23);
        jButton7.setLocation(272, 103);
        jButton7.setText("7");
 
        jButton8.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton8.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton8.setSize(40, 23);
        jButton8.setLocation(318, 103);
        jButton8.setText("8");
 
        jButton9.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton9.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton9.setSize(40, 23);
        jButton9.setLocation(364, 103);
        jButton9.setText("9");
 
        jButton10.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton10.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton10.setSize(86, 23);
        jButton10.setLocation(272, 132);
        jButton10.setText("0");
 
        jButton11.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton11.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton11.setSize(40, 23);
        jButton11.setLocation(364, 132);
        jButton11.setText(".");
 
        jButton12.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton12.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton12.setSize(40, 23);
        jButton12.setLocation(226, 45);
        jButton12.setText("/");
 
        jButton13.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton13.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton13.setSize(40, 23);
        jButton13.setLocation(226, 74);
        jButton13.setText("*");
        
        jButton14.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton14.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton14.setSize(40, 23);
        jButton14.setLocation(226, 103);
        jButton14.setText("-");
 
        jButton15.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton15.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton15.setSize(40, 23);
        jButton15.setLocation(226, 132);
        jButton15.setText("+");
 
        jButton16.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton16.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton16.setSize(40, 23);
        jButton16.setLocation(180, 45);
        jButton16.setText("(");
 
        jButton17.setBorder(new javax.swing.border.SoftBevelBorder(javax.swing.border.BevelBorder.RAISED));
        jButton17.setCursor(new java.awt.Cursor(java.awt.Cursor.HAND_CURSOR));
        jButton17.setSize(40, 23);
        jButton17.setLocation(180, 74);
        jButton17.setText(")");
 
        jTextField1.setHorizontalAlignment(javax.swing.JTextField.RIGHT);
        jTextField1.setCursor(new java.awt.Cursor(java.awt.Cursor.TEXT_CURSOR));
        jTextField1.setFont(new java.awt.Font("Tahoma", 0, 18));
        jTextField1.setSize(393, 27);
        jTextField1.setLocation(12, 12);
        
        mainFrame.getContentPane().add(jButton1);
        mainFrame.getContentPane().add(jButton2);
        mainFrame.getContentPane().add(jButton3);
        mainFrame.getContentPane().add(jButton4);
        mainFrame.getContentPane().add(jButton5);
        mainFrame.getContentPane().add(jButton6);
        mainFrame.getContentPane().add(jButton7);
        mainFrame.getContentPane().add(jButton8);
        mainFrame.getContentPane().add(jButton9);
        mainFrame.getContentPane().add(jButton10);
        mainFrame.getContentPane().add(jButton11);
        mainFrame.getContentPane().add(jButton12);
        mainFrame.getContentPane().add(jButton13);
        mainFrame.getContentPane().add(jButton14);
        mainFrame.getContentPane().add(jButton15);
        mainFrame.getContentPane().add(jButton16);
        mainFrame.getContentPane().add(jButton17);
        mainFrame.getContentPane().add(jTextField1);
        mainFrame.getContentPane().add(empty);
        
        mainFrame.setVisible(true);
    }
на java. Думаете стоит задуматься о его декомпозиции? Забудьте те заученные фразы и поступайте исходя из личного опыта. Если повторять все время старые советы, то ничего нового изобрести нельзя будет. Как в той истории "Он просто не знал, что задача была нерешаемой"
Atrus
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 45
02.04.2010, 02:29     Хороший или плохой тон программирования #23
M128K145

Если вы вдруг захотите добавить функциональность, в ваш калькулятор(у вас ведь серьезный проект, поэтому заказчик обязательно попросит) вам будет очень неприятно работать с предложенным выше методом. Допустим, кнопки должны будут менять свои координаты, атрибуты и даже функционирование при переключении с режима "обычный калькулятор" на режим "инженерный калькулятор". Должно будет изменяться их количество. В вашем же методе сплошной хардкодинг, который убивает всю гибкость. Поэтому, вы правы, этот метод не нуждается в декомпозиции. Он нуждается в полной переработке.

***
Как насчет массива элементов jButton?
А параметры каждой кнопки можно из конф. файла считывать.
А метод станет размером в 12 строк(Что конечно как вы правильно заметили не главное, но все-равно очень приятно).
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
02.04.2010, 13:47     Хороший или плохой тон программирования #24
goto запутывает код: делает переходы неочевидными и неудобочитаемыми. Если метка на другой странице, то как это прочитать ? Если требуется goto, значит проект составлен очень плохо или его нет вовсе. Надо делать упор не на оправданности goto, а на хорошем проекте.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,742
Записей в блоге: 26
02.04.2010, 14:46     Хороший или плохой тон программирования #25
Цитата Сообщение от Airhand Посмотреть сообщение
goto запутывает код: делает переходы неочевидными и неудобочитаемыми.
Не надо обощать. Аккуратно написанный goto сэкономит время людям, которые будут читать этот код. А искусствено воткнутые процедуры читабельность ухудшают.

И не надо говорить, что goto запутывают код. Есть гении, которые способны запутать код на ровном месте одними лишь арифметическими операциями. А потому читабельность кода зависит от наличия мозга, а не от наличия goto
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
02.04.2010, 14:57     Хороший или плохой тон программирования #26
В общем случае, goto добавляет мест, которые нужно держать в памяти, а она не безгранична.

Как один из пунктов УМЕНЬШЕНИЯ удобочитаемости можно сформулировать так: "применяйте везде goto". Это ещё не значит, что нельзя запутать прогу не применяя goto.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,742
Записей в блоге: 26
02.04.2010, 15:01     Хороший или плохой тон программирования #27
Цитата Сообщение от Airhand Посмотреть сообщение
В общем случае, goto добавляет мест, которые нужно держать в памяти, а она не безгранична
А зачем общий случай? Я пишу конерктную программу с конерктно втсавленным оператором goto, который делает программу более понятной, нежели искусственные попытки принципиального написания без goto.
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
02.04.2010, 15:06     Хороший или плохой тон программирования #28
Нужно не программу принципильно менять, а переделывать проект. Значит что-то в нём плохо, раз понадобился goto. Я ни в коем случае не говорю, что надо принципиально от него отказаться. Дело не в принципе.
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,742
Записей в блоге: 26
02.04.2010, 15:08     Хороший или плохой тон программирования #29
Цитата Сообщение от Airhand Посмотреть сообщение
Значит что-то в нём плохо, раз понадобился goto
Мде... Чем-то ты мне напоминаешь другого участника форума, который помешан на linux'е
^Tecktonik_KiLLeR
02.04.2010, 20:28  [ТС]
  #30

Не по теме:

Evg, я его знаю

M128K145
Эксперт C++
 Аватар для M128K145
8277 / 3496 / 143
Регистрация: 03.07.2009
Сообщений: 10,707
02.04.2010, 21:30     Хороший или плохой тон программирования #31
Atrus, это был всего лишь немного подредактированный копипаст сгенерированого кода NetBeans и отправленный в Eclipse , Вопрос, почему все визуальные конструкторы не набивают массивы/вектора, а задают жестко(MS VS C#/MFC/CLR/J#, NetBeans Java)? Но это уже оффтоп

По теме. Сравните два кода
Бинарные числа! Перевод простого числа в бираное и расчет.
Что будет выведено на экран?
И сделайте для себя вывод, goto - это хорошо или плохо. Или по вашему в первом коде лучше использовать циклы?
Atrus
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 45
03.04.2010, 03:07     Хороший или плохой тон программирования #32
M128K145
Эй, эй, обождите! Я разве хоть где-то говорил, что ненавижу goto? Я только привел пример грамотного выхода из сильновложенных циклов и все. Так что претензия не по адресу.
Что же касается вашего примера, то тут я не вижу особых причин goto использовать:

C++
1
2
3
4
5
6
7
cinp:
    std::cin>>p;
    if((p <= 0) || (p > size))
    {
        std::cout<<"Введите число от 1 до "<<size<<"!\n>";
        goto cinp;
    }
C++
1
2
3
4
5
6
do 
    {
        std::cout<<"Введите число от 1 до "<<size<<"!\n>";
        std::cin>>p;
 
    } while ((p<=0) || (p>size));
В данном случае примеры равнозначны. Да, goto действительно не нарушает границы областей видимости и не портит читабельность. Но я все-равно не понимаю зачем он здесь нужен. Разве что только в силу привычки.

***
M128K145

Не по теме:

я понял, что это кодогенератор, но что это меняет? Сапер, например, тоже на элементах типа Button реализован. Для поля 10х10 понадобится 100 кнопок. Вы его тоже без массивов делать будете?

Цитата Сообщение от M128K145 Посмотреть сообщение
почему все визуальные конструкторы не набивают массивы/вектора
Потому, что они визуальные конструкторы, а не ИИ. Откуда им знать, что вы собрались делать калькулятор. Именно поэтому к формошлепству надо всегда аккуратно подходить. Все эти кодогенераторы удобны для создания оконных интерфейсов низкой и средней сложности. А вот калькулятор в этом плане штука менее тривиальная. И тут простым drag&drop не отделаться

HIMen
 Аватар для HIMen
4114 / 1363 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
03.04.2010, 04:14     Хороший или плохой тон программирования #33
Goto как и любой другой оператор: если применен в правильном месте облегчает и написание, и восприятие кода.
Вот пример из первого попавшегося проекта
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
private void saveToolStripMenuItem_Click(object sender, EventArgs e)
{
    try
    {
    begin:
        if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        {
            var fileName = saveFileDialog1.FileName;            
            if (fileName == openedFile)
            {
                MessageBox.Show("Файл используется,\r\nвыберите другое название", "Файл используется");
                goto begin;
            }
            var strFilExtn = fileName.Remove(0, fileName.Length - 3);
            switch (strFilExtn)
            {
                case "bmp":
                    Bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Bmp);
                    break;
                case "jpg":
                    Bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Jpeg);
                    break;
                case "png":
                    Bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Png);
                    break;
                case "gif":
                    Bmp.Save(fileName, System.Drawing.Imaging.ImageFormat.Gif);
                    break;
                default:
                    throw null;
            }
        }
    }
    catch
    {
#if DEBUG
        Console.WriteLine("catched save");
#else
        MessageBox.Show("При сохранении файла\r\nпроизошла ошибка", "Ошибка");
#endif        
    }
}
Конечно, можно было и обойтись без goto, создав еще пару бесконечных циклов и условий, но читать код стало бы сложнее
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 1
03.04.2010, 11:05  [ТС]     Хороший или плохой тон программирования #34
Цитата Сообщение от HIMen Посмотреть сообщение
Конечно, можно было и обойтись без goto, создав еще пару бесконечных циклов и условий, но читать код стало бы сложнее
да да...думаю goto begin; лучше чем while(true){...break;}

Добавлено через 14 секунд
и на 2 скобок меньше
Atrus
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 45
03.04.2010, 12:11     Хороший или плохой тон программирования #35
Вообще мне тоже кажется, что goto лучше чем break +флаг +условие. Хуже последнего вообще ничего придумать нельзя. Но в данном примере,как мне думается, совсем необязательно смотреть на то, как файл героически пытается сохраниться.
Во время отладки(или если кто-то другой решит изучить код) это будет абсолютно бесполезной информацией. Скрыть это все в функцию и засунуть эту функцию в самый низ, чтоб не мешала! Читабелность такой программы в разы вырастает.
Короче как-то так:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
bool save_my_file()// эту функцию засунуть куда подальше
{
    if (saveFileDialog1.ShowDialog() == DialogResult.OK)
        var fileName = saveFileDialog1.FileName;            
        if (fileName == openedFile)
        {
            MessageBox.Show("Файл используется,\r\nвыберите другое название", "Файл используется");
            return false;
        }
    return true;
}
 
int main()
{
//по названию функции save_my_file() программист поймет, что она делает. А большего и не нужно.
    while ( !save_my_file() );
    return 0;
}
А оператор goto? Какой еще оператор goto?
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,742
Записей в блоге: 26
03.04.2010, 13:15     Хороший или плохой тон программирования #36
Цитата Сообщение от Atrus Посмотреть сообщение
Я только привел пример грамотного выхода из сильновложенных циклов и все.
Я бы не стал утверждать, что это "грамотный" выход. Это скорее "искусственный" выход. Конкретно в твоём маленьком примере может быть и было бы проще использовать функцию. Но если алгоритм сложный, а переменных много, то искусственное вырезание части алгоритма в отдельную функцию только ухудшит читабельность. Поэтому я бы не стал называть такой выход "грамотным", ибо это не универсальное средство, а лишь для некоторых частных случаев
Airhand
 Аватар для Airhand
502 / 458 / 3
Регистрация: 08.07.2009
Сообщений: 2,625
03.04.2010, 13:41     Хороший или плохой тон программирования #37
Цитата Сообщение от HIMen Посмотреть сообщение
Вот пример из первого попавшегося проекта
В этом примере есть switch - тоже признак плохого проектирования. Давайте впадём в крайность и ещё применим тут goto. У нас же не стоит задача сделать программу как можно хуже.

МедведЪ
Давай ещё всунем goto. Проект уже плохой, нам уже терять нечего.
HIMen
 Аватар для HIMen
4114 / 1363 / 39
Регистрация: 12.04.2009
Сообщений: 2,346
03.04.2010, 15:00     Хороший или плохой тон программирования #38
Цитата Сообщение от Atrus Посмотреть сообщение
А оператор goto? Какой еще оператор goto?
Atrus, ну сделай такой же код без goto: не забудь про try-catch и что функция не может возвращать значения, т.к. это подпись на событие
Цитата Сообщение от Airhand Посмотреть сообщение
switch - тоже признак плохого проектирования
Ну не знаю насколько плохого, но IL инструкций со switch явно меньше, как и в случае с goto
^Tecktonik_KiLLeR
 Аватар для ^Tecktonik_KiLLeR
1158 / 440 / 22
Регистрация: 23.06.2009
Сообщений: 6,216
Завершенные тесты: 1
03.04.2010, 15:41  [ТС]     Хороший или плохой тон программирования #39
Цитата Сообщение от Airhand Посмотреть сообщение
Давай ещё всунем goto. Проект уже плохой, нам уже терять нечего
в какой
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.04.2010, 15:59     Хороший или плохой тон программирования
Еще ссылки по теме:

Первый язык программирования на подходе к С++: Паскаль или С? C++
Хороший стиль программирования: где размещать константы? C++
C++ "Ляпы" в программе. Хороший стиль программирования
Хороший тон для #include C++

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

Или воспользуйтесь поиском по форуму:
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
17183 / 5437 / 336
Регистрация: 30.03.2009
Сообщений: 14,742
Записей в блоге: 26
03.04.2010, 15:59     Хороший или плохой тон программирования #40
Цитата Сообщение от Airhand Посмотреть сообщение
В этом примере есть switch - тоже признак плохого проектирования
Жжошь не по детски
Yandex
Объявления
03.04.2010, 15:59     Хороший или плохой тон программирования
Ответ Создать тему
Опции темы

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