Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
Другие темы раздела
C++ Текст плеера https://www.cyberforum.ru/ cpp/ thread109197.html
дайте текст плеера! int main(){ cout<<"Я ПЛЕЕР"<<endl; system("pause"); return 0; } Добавлено через 20 часов 39 минут модеры,извините конечно за флуд но почему этот Программист заблокирован?:D
C++ Дозапись потоком https://www.cyberforum.ru/ cpp/ thread108194.html
Есть файл, в нём уже чтото записано, но открытого потока к нему нет. Можно ли открыть поток на дозапись в этот файл? Как? Конечно можно. Например FILE * Stream = fopen("C:\\Test.txt", "a+"); fprintf(Stream, "%d\n", 10); fclose(Stream); a+ добавляет данные в файл, если он существует. И создает его на диске и...
книга Windows 2000 API Р.Саймон где скачать диск с программами? C++
книга Windows 2000 API Р.Саймон где скачать диск с программами который идет к книге? завтра выложу
C++ Как сделать сохранение? https://www.cyberforum.ru/ cpp/ thread109203.html
как сделать сохранение всех сточек в текстовый файл для этой программы? подскажыте... Судя по всему в Билдере работаете.. Тоды мона так: TStringList * Lst = new TStringList; Lst->Add(Edit1->Text); Lst->Add(Edit2->Text); ... Lst->Add(Edit99->Text);...
C++ Скажите а на чем написан антивирус касперского https://www.cyberforum.ru/ cpp/ thread107977.html
скажите а на чем написан антивирус касперского!!!!!!!!!!! :scratch: а есть разница?
C++ Работа с Word Execel документами в C++ https://www.cyberforum.ru/ cpp/ thread109098.html
Задача 1: необходимо, чтобы текст .doc разбивался на абзацы, каждый из них сохранялся в .txt Задача 2: необходимо из .txt документа выбирать определённые слова заносить в таблицу .xlsx Подскажите,...
C++ Консультант
Здравствуйте Всем !! помогите пожалуйста ,построить одну программку нам задали в институте и не обьяснили как ее сделать. Называется консультант ! нам сказали придумать тему самим и вопросы которые... Ну напишите консультанта по выбору одежды. Прога спрашивает вес, рост, любимый цвет, тип одежды (спортивная/деловая/повседневная). Затем формирует из предпочтений какой-нибудь набор (размер, тип,...
C++ Записать результаты в таблицу Кто не равнодушен и умён, помогите мне в этом посту пишите ответы, если есть уточнения уж очень нужна эта программа #include <iostream.h> double f(const double x,int a,const int i,const int... https://www.cyberforum.ru/ cpp/ thread108943.html
Логи. C++
Слшепил на сях, сам не понял, чего. Как разбирать логи типа такого: Log file of Test: Creating the string at 0xbfe8acc8 by the default constructor: Data=0, Number=0. Creating the string at...
C++ Разобрать построчно код по бинарному дереву! https://www.cyberforum.ru/ cpp/ thread109099.html
Помогите разобрать код C++ #include "BinTree.h" #include <iostream> using namespace std; CBinTree::CBinTree(void) { this->root = new Node(); this->root->value = ""; }
C++ антивирусная программа
помогите дайте текст на с++ антивирусная программа!!!!!!!!!!!! Берите выше - просите ОС на С++ ;)
C++ Календарь Дни недели пронумерованы следующим образом: 1 — понедельник, 2 — вторник, ... , 6 — суббота, 7 — воскресенье. Дано целое число K, лежащее в диапазоне 1–365, и целое число N, лежащее в диапазоне 1–7.... /********************************************************************/ int calc_day( int n, int k ) { return (n-1+k-1)%7+1; } /* calc_day() */ https://www.cyberforum.ru/ cpp/ thread109217.html
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
04.04.2010, 14:37 0

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

04.04.2010, 14:37. Показов 8851. Ответов 49
Метки (Все метки)

Ответ

Цитата Сообщение от Atrus Посмотреть сообщение
Какой возражение?
Возражение "Evg, это отнюдь не искусственный способ"

Цитата Сообщение от Atrus Посмотреть сообщение
ifstream - это класс. Он так же на вход принимает массив значений и на выходе формирует вектор значений.
1. При чём тут вообще ifstream? Речь шла о использовании goto внутри процедуры, реализующей некий алгоритм. Если вдруг ты не знаешь, ifstream - это вовсе не алгоритм
2. ifstream - это класс, а потому он не может принимать на вход какие-либо значения. Ровно как и не может принимать значения экземпляр класса.
3. Никакого вектора значений ни в одном методе класса ifstream нет. Ни на входе, ни на выходе

Цитата Сообщение от Atrus Посмотреть сообщение
И все-таки это класс. И никто не жалуется, что он не реализован одной функцией.
Кто тебе сказал такую ерунду? Если прочёл в книге, то либо выбрось эту книгу в помойку, либо прочти ещё раз, чтобы быть уверенным, что ты правильно понял, что там написано

Цитата Сообщение от Atrus Посмотреть сообщение
в С++ int, float, long и.т.п это так же классы. Тоже полная ерунда?
Я уверен, что вы пользуетесь компилятором С++ и абсолютно не жалуетесь, что какой-нибудь double является классом.
Всё-таки выбрось книгу в помойку

Цитата Сообщение от Atrus Посмотреть сообщение
Почему бы мне не оформить решение СЛАУ в виде класса, ведь это будет гораздо читабельнее за счет декомпозиции, чем 50-70 строк кода щедро усыпанных комментариями и перемежающимся разными сомнительными решениями типа goto или while - break.
Честно говоря, я не знаю, что такое СЛАУ. Но твои слова сильно смахивают на то, что ты предлагаешь вместо процедурного подхода использовать объектно ориентированный только ради того, чтобы избежать использования 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
if (<на переменную не брался адрес и переменная не большая структура и не массив>)
{
  /* Пытаемся распределить на регистр */
 
  /* Если структура, то анализируем её
   * Если в структуре есть другие структуры, для которых есть целиковые пересылки,
   * то выдирать их из регистра будет слишком накладно, а потому лучше распределить
   * в стек. Если структура содержит в себе массив, то её нельзя держать на регистре и т.п. */
  вычисление_промежуточных_признаков
  if (признаки_плохие)
    goto Stack;
 
  /* Проверяем использование переменной. Редко используемые кладём в стек */
  вычисление_промежуточных_признаков
  if (признаки_плохие)
    goto Stack;
   
  несколько аналогичных фрагментов
 
  распределение перменной на регистр
} else
{
  /* Переменную распределяем в стек */
 Stack:
    распределение перменной на регистр
}
Перепиши этот код без использования goto. Особенно, учитывая, что разные блоки внутри первого if'а могут использовать результаты вычисления (т.е. промежуточные переменные) более ранних блоков (в той же ветке if'а). Да ещё и так, чтобы было понятно. А вот в данном случае с использованием goto никаких непоняток нет, ибо код написан в том же порядке, в каком идёт процесс мышления (не привязанный к языку программирования).

Данный фрагмент процедуры представляет собой так называемый "код верхнего уровня", логику которого крайне нежелательно пилить на процедуры (чтобы весь процесс был перед глазами, а не размазан по нескольким процедурам). Более мелкие блоки, отвечающие за вычисление какого-то конкретного свойства, можно и нужно выделять в отдельные процедуры, ибо для понимания ОБЩЕГО ПРОЦЕССА не надо знать, как в деталях работает тот или иной фрагмент алгоритма, ибо в большинстве случаев правильное название функции, отвечающей за фрагмент, и комментарий в одну строку делают этот момент хорошо понятным. Но ОБЩИЙ ПРОЦЕСС (самый верхний уровень) пилить на подпроцессы только ради того, чтобы избежать goto - это совершенно точно снизит понимаемость. Проверено на многолетнем опыте

Вернуться к обсуждению:
Хороший или плохой тон программирования C++
1
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.04.2010, 14:37
Готовые ответы и решения:

"Ляпы" в программе. Хороший стиль программирования
Здравствуйте, уважаемые форумчане! Я на счет хорошего стиля программирования. Сделал маленькую программу. Эксперты ее осмотрели и...

TCHAR + float != дружба или плохой wsprintf
вот столкнулся с проблемой перевода float числа в строчку и наоборот: TCHAR milage; ...

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

49
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2010, 14:37
Помогаю со студенческими работами здесь

Хороший тон программирования
Можно ли считать хорошим тоном в программировании? Например вот такой вот код? #define FOR for(int a=0;a&lt;10;a++) ........ FOR...

Хороший тон для #include
Простите за глупый вопрос, но всё же интересно знать ответ :) Есть 2 заголовочных файла. 1.h #include &lt;vector&gt; ... // и...

Хороший стиль программирования
Здравствуйте, меня интересует как правильно создаются архитектуры игр. К примеру: у меня есть класс ObjectsCore и Objects В классе...

Хороший стиль программирования: где размещать константы?
Здравствуйте, уважаемые форумчане! Давно хотел спросить. У меня есть проект, состоящий из множества файлов исходного кода. В...

Как называется движение программирования или теория программы считывающая др. язык программирования
Не знал, как по другому задать вопрос, и также назвать тему, но буду краток: Допустим я хочу создать программу, которая будет...

0
Новые блоги и статьи
Неблокируемый стек в C++26: реализуем простой сборщик мусора
stackOverflow 02.03.2025
Многопоточные приложения требуют надежных и производительных структур данных, способных эффективно работать в условиях конкурентного доступа. Неблокируемые структуры данных представляют собой особый. . .
Шаблон REQ/REP в ZeroMQ: сверхбыстрый обмен сообщениями в C++ и Python
stackOverflow 02.03.2025
Построение высоконагруженных распределенных систем требует надежного и производительного механизма обмена сообщениями. ZeroMQ выделяется среди прочих решений своей невероятной скоростью работы и. . .
Нестандартные приемы работы с итераторами в C++
stackOverflow 02.03.2025
Итераторы - один из краеугольных камней C++, предоставляющий универсальный механизм обхода и манипуляции данными в контейнерах. Появившись как замена небезопасным указателям, они эволюционировали от. . .
Лексический анализ и регулярные выражения в C++26
stackOverflow 02.03.2025
Лексический анализ - ядро любого компилятора и инструмента обработки текста. Каждый программист сталкивается с задачами парсинга строк, обработки файлов конфигурации или анализа пользовательского. . .
Подробно о std::mdspan в C++23
stackOverflow 02.03.2025
Работа с многомерными массивами данных традиционно была одной из сложных задач в C++. Программистам приходилось создавать собственные абстракции или использовать сторонние библиотеки для эффективной. . .
Колмогоровская сложность в C++: Путь к совершенному коду
stackOverflow 02.03.2025
Абстрактная математическая теория Колмогорова стала мощным средством оценки и улучшения программного кода. Сложность алгоритма - не только в его вычислительной эффективности, но и в том, насколько. . .
Изменения в C# 14
stackOverflow 02.03.2025
Одно из самых значимых изменений в C# 14 - поддержка коллекционных выражений, которые позволяют создавать и инициализировать коллекции с помощью нового лаконичного синтаксиса. Это нововведение. . .
Разработка кроссплатформен­­­­ного мобильного приложения для iOS/Android на C++
bytestream 02.03.2025
C++ как язык программирования высокого уровня с прямым доступом к аппаратным ресурсам позволяет создавать приложения, работающие одинаково быстро как на iOS, так и на Android устройствах. Ни для кого. . .
Аутентификация/авторизация на Golang
bytestream 02.03.2025
Go предлагает множество возможностей для создания надежных систем аутентификации. Встроенные криптографические пакеты, высокая производительность и простота параллельной обработки запросов делают его. . .
Нововведения TypeScript 5.8
bytestream 02.03.2025
TypeScript 5. 8 приносит много возможностей и оптимизаций, которые существенно расширяют границы типобезопасного программирования на JavaScript. Эта версия включает ряд значительных улучшений в работе. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru