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

C++

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

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

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

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

вот в книгах читаю что гото туфта полная..на форуме тоже так говорят,а почему?очень нужная вещь,иногда лучше использовать это чем циклы
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.03.2010, 13:42     Хороший или плохой тон программирования
Посмотрите здесь:
Объединять классы и внешние функции в одной программе плохой тон программирования? C++
C++ Хороший тон программирования
Хороший тон для #include C++
Хороший стиль программирования: где размещать константы? C++
Visual C++ TCHAR + float != дружба или плохой wsprintf
C++ "Ляпы" в программе. Хороший стиль программирования
Первый язык программирования на подходе к С++: Паскаль или С? C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CheshireCat
Эксперт С++
2892 / 1241 / 78
Регистрация: 27.05.2008
Сообщений: 3,353
28.03.2010, 14:06     Хороший или плохой тон программирования #2
Подходи к чтению книг и форуму без фанатизма.....
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
28.03.2010, 14:25  [ТС]     Хороший или плохой тон программирования #3
хорошо
M128K145
Эксперт С++
8283 / 3502 / 143
Регистрация: 03.07.2009
Сообщений: 10,706
28.03.2010, 14:30     Хороший или плохой тон программирования #4
МедведЪ, но также подходи без фанатизма к использованию goto. Это не плохо, но всему есть свое назначение, поэтому не стоит его во всех случаях без разбора применять
Genius Ignat
1235 / 773 / 44
Регистрация: 16.09.2009
Сообщений: 2,014
28.03.2010, 15:43     Хороший или плохой тон программирования #5
МедведЪ:
goto можно использовать для выхода из сильно вложенных циклов: вниз по тексту: если необходимо.
Не один оператор кроме goto не позволит выйти из всех объемлющих циклов: вниз по тексту.
Evg
Эксперт CАвтор FAQ
17470 / 5708 / 363
Регистрация: 30.03.2009
Сообщений: 15,670
Записей в блоге: 26
28.03.2010, 16:10     Хороший или плохой тон программирования #6
Если goto упрощает структуру программы и делает её более понятной для чтения - то его нужно использовать, потому как написание кода "принципиально" без goto зачастую делает его (код) непонимаемым
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
28.03.2010, 16:26     Хороший или плохой тон программирования #7
вот хороший пример с http://govnokod.ru/, откуда конкретно не знаю, потерял ссылку.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
int p,k,l,i,j,d,q,R,t,r;
  S1:    s=0; p=1;
  S2:    if (s==0) { i=1; j=n; k=n; l=2*n+1; }
         if (s==1) { i=n+1; j=2*n; k=0; l=n+1; }
         d=1; q=p; r=p;
  S3:    if (x[i]>K>x[j]->K) goto S8;
  S4:    k=k+d; x[k]=x[i]; c[k]=c[i];
  S5:    i+=1; q-=1; if (q>0) goto S3;
  S6:    k+=d; if (k==l) goto S13; else x[k]=x[j];c[k]=c[j];
  S7:    j-=1; r-=1; if (r>0) goto S6; else goto S12;
  S8:    k+=d; x[k]=x[j]; c[k]=c[j];
  S9:    j-=1; r-=1; if (r>0) goto S3;
  S10:   k+=d; if (k==l) goto S13; else x[k]=x[i];c[k]=c[i];
  S11:   i+=1; q-=1; if (q>0) goto S10;
  S12:   q=p; r=p; d=-d; t=k; k=l; l=t; if (j-i<p) goto S10; else goto S3;
  S13:   p+=p; if (p<n) { s=1-s; goto S2; }
         if (s==0) for (t=1; t<=n; t+=1) { x[t]=x[t+n];c[t]=c[t+n] }
 
//Вот такой вариант сортировки предложен в одной известной книге. Оно работает...
и только не спрашивайте меня что это за книжка. Там в коментах так и не добились этого ответа, но все равно очевидно, что тут все слишком запутано.
Evg
Эксперт CАвтор FAQ
17470 / 5708 / 363
Регистрация: 30.03.2009
Сообщений: 15,670
Записей в блоге: 26
28.03.2010, 16:44     Хороший или плохой тон программирования #8
Цитата Сообщение от Aye Aye Посмотреть сообщение
но все равно очевидно, что тут все слишком запутано.
Смахивает на результат конвертации из ассемблера в Си
Aye Aye
367 / 281 / 36
Регистрация: 17.12.2009
Сообщений: 567
28.03.2010, 17:53     Хороший или плохой тон программирования #9
Evg, возмоэно так и есть! Там на гвнокоде.ру кто то говорил про конвертацию с Фортрана... ))) вобщем точно что то переведено на Си. И кстати не пойму, как проверить корректность этого кода... наверно некоторые обьявления не указаны может и автор поста опечатался когда набивал код с учебника (например переменная R нигде не используется)... ну вобщем не важно ))))
Evg
Эксперт CАвтор FAQ
17470 / 5708 / 363
Регистрация: 30.03.2009
Сообщений: 15,670
Записей в блоге: 26
28.03.2010, 18:26     Хороший или плохой тон программирования #10
Цитата Сообщение от Aye Aye Посмотреть сообщение
Там на гвнокоде.ру кто то говорил про конвертацию с Фортрана
Запросто. Многие компиляторы с языков, отличного от Си, работают через конвертацию из языка в Си (либо на уровне текстового фала, либо на уровне промежуточного представления). Си++, Паскаль, Фортран - всё это легко конвертируется в Си. В результате и получается такой код, истыканный конструкциями goto. Если посмотреть результат работы утилит типа lex, yacc, bison - на выходе они тоже генерят код Си, в котором тьма-тьмущая операторов goto
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
28.03.2010, 20:57  [ТС]     Хороший или плохой тон программирования #11
вот прочитал выше на счет циклов
Aye Aye, это и вправду гавно код...я не говорил что в таких случаях надо использовать его..я использую гото в очень очень очень маленьких циклах....и редко НО использую...
Day
1154 / 959 / 57
Регистрация: 29.10.2009
Сообщений: 1,385
29.03.2010, 09:41     Хороший или плохой тон программирования #12
Тут два вопроса.
Нравится - Нет, не нравится.
Использую ли - Да. использую
Если структура пограммы становится понятнее с ГОТО, то почему бы и нет.
И как выход из сильно вложенных циклов, и как переход в начало обработки, и как переход на завешающие действия.
Программа ведь сначала в голове создается. Что-то типа блок-схемы. И если в голове она придумалась с goto, то так ее и записываем. Часто уже написав программу видишь лучше ее логику и от goto избавляешься.
А по-поводу фанатизма - все верно.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
29.03.2010, 11:21  [ТС]     Хороший или плохой тон программирования #13
да кто фанатеет от готоне я точно...я думаю если используешь уже нравится
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.03.2010, 11:23     Хороший или плохой тон программирования #14
Мало опций. На бейсике я не могу без goto, на сях и паскале - с ним. Ну и как я должен ответить?
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
29.03.2010, 12:54  [ТС]     Хороший или плохой тон программирования #15
taras atavin, тема создана в разделе С++,не в разделах бейсик и паскаль,а как овтетть сам решай
taras atavin
Ушёл с форума.
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.03.2010, 12:59     Хороший или плохой тон программирования #16
Цитата Сообщение от Evg Посмотреть сообщение
Запросто. Многие компиляторы с языков, отличного от Си, работают через конвертацию из языка в Си (либо на уровне текстового фала, либо на уровне промежуточного представления). Си++, Паскаль, Фортран - всё это легко конвертируется в Си. В результате и получается такой код, истыканный конструкциями goto. Если посмотреть результат работы утилит типа lex, yacc, bison - на выходе они тоже генерят код Си, в котором тьма-тьмущая операторов goto
На бейсике я так вручную пишу.

Добавлено через 38 секунд
Цитата Сообщение от МедведЪ Посмотреть сообщение
тема создана в разделе С++,не в разделах бейсик и паскаль
Извините, тему прочитал, а раздел - нет.
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
29.03.2010, 16:27  [ТС]     Хороший или плохой тон программирования #17
Цитата Сообщение от taras atavin Посмотреть сообщение
Извините, тему прочитал, а раздел - нет.
=)
___
Atrus
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 45
01.04.2010, 22:22     Хороший или плохой тон программирования #18
Что касается выхода из сильно вложенных циклов, не проще ли использовать return вместо goto?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void foo()
{
    for (i=0; i<n;++i)
    {
        for (j=0; j<m;++j)
        {
            for (k=0; k<z;++k)
            { 
                //и ни каких goto
                if (array1[i,j,k]==10) return;
            }
        }
    }
}
^Tecktonik_KiLLeR
1159 / 441 / 22
Регистрация: 23.06.2009
Сообщений: 6,230
Завершенные тесты: 1
01.04.2010, 22:28  [ТС]     Хороший или плохой тон программирования #19
Atrus, в этом случае выходит вообще из функции,а если работа функции не завершена

Добавлено через 1 минуту
Atrus, да и еще,если у вас функция возвращает void,то есть ничего не возращает,то писать ретурн это ошибка
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.04.2010, 23:05     Хороший или плохой тон программирования
Еще ссылки по теме:
В какой среда программирования(или компиляторе) открыть нижеуказанный код? C++
плохой gets() C++
C++ С++ или С. Какой язык программирования необходимо знать изначально, чтобы далее изучать Objective C?
Visual C++ Плохой проект

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

Или воспользуйтесь поиском по форуму:
Atrus
12 / 12 / 0
Регистрация: 08.07.2009
Сообщений: 45
01.04.2010, 23:05     Хороший или плохой тон программирования #20
Нет. Это не ошибка. попробуйте скомпильте этот код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream>
 
using namespace std;
 
void foo()
{
    int a=1;
    if (a==1) return;
    cout<<"hello"; // в эту строчку мы никогда не попадем
}
 
int main()
{
    foo();
    return 0;
}

Цитата Сообщение от МедведЪ Посмотреть сообщение
а если работа функции не завершена
Тогда это,скорее всего, очень плохая функция. Или очень плохой алгоритм. Или и то и другое.
Вообще, если функция больше 20 строчек, то это уже повод задуматься о декомпозиции. А если делать по 100-150 строчек функцию, то такой способ программирования от "лапши" ничем отличаться не будет. Можно тогда в принципе функции не использовать.
Yandex
Объявления
01.04.2010, 23:05     Хороший или плохой тон программирования
Ответ Создать тему
Опции темы

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