Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 31.07.2015, 06:58   #1
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,506
По умолчанию C под DOS

Очередная программа под MS-DOS. Содержит в себе энное количество примеров из книги по программированию.
Интересует ваше мнение по стилю написания программы. Что бы вы хотели изменить в подходе к "собиранию" всех примеров в одну большую кучу.
Код пишу компактно, потому что обычно печатаю программы на принтере.
Здесь представлен не весь код, поскольку он не помещается в посте. Кому интересно почитать, что было дальше, прошу пройти по этой ссылке:
http://www.animeforum.ru/index.php?a...st&pid=3001070
Код:
/*   p42
     Простые программы   */

#include <conio.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>

float ga = 3.1415926;

ja ();
jb ();
jc ();
jd (float);
je (int *);
jf ();
jg ();
jh ();
ji (int, int);
jj (int *, int *);
jk (char *, int);
jl (int a [3] [3], int b [3] [3], int c [3] [3]);

float ka (float);
float kb (float);

int *la (int *);

main ()
{
   int aa, ab, ac;
   int ba, bb;
   int *ca, *cb, **cc;
   float da, db;
   float ea;
   float *fa;
   unsigned ma;
   char pa;
   char qa;
   char *ra = "String Of Letters in Different Registers.";
   char *rb;
   char sa [80], sb [20], sc [10];
   char sd [10] = {1, 23, 4, 7, 8, 0, 1, 9, 4, 7};
   char se [10] = {1, 3, -5, 7, 9, 0, 22, 4, 6, 8};
   char ta [80];
   char ua [5] [20];
   int va [3] [3] = {0, 1, 2, 3, 4, 5, 6, 7, 8};
   int vb [3] [3] = {1, 2, 3, 4, 5, 6, 7, 8, 9};
   int vc [3] [3];

/* printf ("Input two integers: ");
   scanf ("%i%i", &ba, &bb);
   printf ("Input float: ");
   scanf ("%f", &ea);
   printf ("Press any key: ");
   qa = getche ();
   printf ("\nInput string: ");
   gets (sa); gets (sa);
   printf ("Input string: ");
   scanf ("%[0123456789]%s", sb, sc); */

   ba = 1; bb = 2; ea = 3; qa = 'b'; strcpy (sa, "c"); strcpy (sb, "d");
   strcpy (sc, "e");
   printf ("Input float: ");
   scanf ("%f", &ea);
   printf ("Press any key: ");
   qa = getchar (); qa = getchar ();
   printf ("Input string: ");
   gets (ta); gets (ta);

   aa = 1996;
   printf ("Сейчас %i год.\n", aa);
   da = ga * 2 * ba;
   printf ("Радиус %i, длина %.4g.\n", ba, da);
   da = ga * 2 * ea;
   db = ga * ea * ea;
   printf ("Радиус %.4g, длина окружности %.4g, площадь круга %.4g.\n",
      ea, da, db);

   ja ();
   jb ();
   jc ();
   aa = 5;
   jd (aa);
   printf ("Длина окружности радиуса %i равна %.4g.\n", aa, ka (aa));
   for (aa = 10; aa > 0; aa--)
   {
      printf ("%i", aa);
      if (aa > 1)  printf (" ");
   }

   getch ();
   printf ("\n\n");
}

ja () {printf ("Вызвали первую функцию.\n");}
jb () {printf ("Вызвали вторую функцию.\n");}
jc () {printf ("Вызвали третью функцию.\n");}
jd (float a) {printf ("Длина окружности радиуса %.4g равна %.4g.\n",
   a, ga * 2 * a);}

je (int *a) {*a = *a * *a;}

jf ()
{
   int a;
   for (a = 0; a < 80; a++) printf ("-");
}

jg ()
{
   int aa;
   aa = 10;
   printf ("В функции \"jg\" значение aa равно %i.\n", aa);
}

jh ()
{
   int a;
   static b = 1;
   a = 1;
   printf ("a = %i, b = %i.\n", a++, b++);
}

ji (int a, int b)
{
   int c;
   c = a;
   a = b;
   b = c;
}

jj (int *a, int *b)
{
   int c;
   c = *a;
   *a = *b;
   *b = c;
}

jk (char a [], int b)
{
   int c, d, e;
   for (c = 0; c < b - 1; c++)
      for (d = 0; d < b - 1; d++)
	 if (a [d] > a [d + 1])
	 {
	    e = a [d];
	    a [d] = a [d + 1];
	    a [d + 1] = e;
	 }
}

jl (int a [3] [3], int b [3] [3], int c [3] [3])
{
   int d, e, f;
   for (d = 0; d < 3; d++)
      for (e = 0; e < 3; e++)
      {
	 c [d] [e] = 0;
	 for (f = 0; f < 3; f++)  c [d] [e] += a [d] [f] * b [f] [e];
      }
}

float ka (float a) {return ga * 2 * a;}
float kb (float a) {return a * a;}

int *la (int *a)
{
   *a = *a * *a;
   return a;
}
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума
Старый 31.07.2015, 07:31   #2
Bugrimov
C/C++, Java
Участник клуба
 
Аватар для Bugrimov
 
Регистрация: 28.03.2012
Сообщений: 1,680
По умолчанию

Первое что бросается в глаза, огромное количество сокращенных имен переменных и функций "a b c aa bb" Если у вас переменная радиус - тогда например radius (как вариант) и так далее. Вообще имена переменных и функций должны нести какой-то смысл, а в этом коде просто набор букв
"Keep it simple" - придерживайтесь простоты!
Уильям Оккам - "Не следует множить сущее без необходимости"
Сложность - враг простоты и удобства!
Bugrimov вне форума
Старый 31.07.2015, 08:14   #3
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Код пишу компактно
И на индусском языке. Чего только эта строчка стОит:
Код:
float ga = 3.1415926;
Мне всегда казалось, что это PI, а тут какое-то ga.
Как правильно заметил Bugrimov, старайтесь давать переменным и функциям, осмысмысленные имена. В программировании это называется - самодокументированный код.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 31.07.2015 в 08:17.
Smitt&Wesson вне форума
Старый 31.07.2015, 08:17   #4
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,506
По умолчанию

Я решил убрать смысловую нагрузку из имён переменных.
Мне вообще лень запоминать, кто что означает. Когда приступаю к очередной задаче (а у меня их там десятки), мне нужны переменные для хранения значений, и при этом лень лезть в свою память, чтобы узнать, почему переменная называется так, а не эдак.
Поэтому названия переменных максимально абстрагированы. Я позаботился о том, чтобы не запутаться в их функциональном назначении, а об остальном догадывался по ходу написания примера.
Чтобы разобраться, какую переменную использовать, у меня уходило не больше 10 минут (в зависимости от моей тормознутости в конкретный момент времени).
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума
Старый 31.07.2015, 08:20   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Цитата:
Что бы вы хотели изменить в подходе к "собиранию" всех примеров в одну большую кучу.
Для начала все. Если собирать все примеры из книг в одну большую кучу, то это будет куча г...
I'm learning to live...
Stilet вне форума
Старый 31.07.2015, 08:21   #6
jura_k
gamer
Участник клуба
 
Аватар для jura_k
 
Регистрация: 09.05.2015
Сообщений: 1,506
По умолчанию

Цитата:
float ga = 3.1415926;
В программах число "пи" используется несколько раз, и чтобы его не повторять, я сделал отдельную глобальную переменную.
Ведь главное – чтобы тебя понимали! Компьютер и я поняли.

Переменные разбиваются по тройкам групп:
aa, ba, ca
da, ea, fa
Там дальше была свободна буква "g", я её и использовал. Получилось "ga".
мой канал на Ютубе: youtube.com/@games-zz3ju/videos/
мой канал на Рутубе: rutube.ru/channel/31423139/videos/
В ожидании Кеши...
jura_k вне форума
Старый 31.07.2015, 08:54   #7
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от jura_k Посмотреть сообщение
Там дальше была свободна буква "g", я её и использовал. Получилось "ga".
Если следовать Вшей логике, то лучше уж gPI. Будет обозначать - глобальная переменная "пи". А вообще-то "пи", это не переменная, а константа. Таким образом, объявлять её нужно как:
const float PI = 3,1415926.....
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 31.07.2015, 09:24   #8
waleri
Старожил
 
Регистрация: 13.07.2012
Сообщений: 6,493
По умолчанию

Я не понял, зачем вы спрашиваете наше мнение если потом кладете на него с большим прибором?

Главное - чтоб понимали другие, которые читают ваш код.

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

И еще, для галочки - как раз вашим методом надо *помнить* имя переменной/функции. Вам кажется что легче, потому что переменных мало и вы их именно запоминаете, а вот когда имена смысленные, тогда как раз ничего помнить не надо: как называется переменная, в которых сохранен возраст - правильно, "возраст". Не надо ничего помнить.

Когда вырастете и напишете програмульку на пару миллионов строк, тогда поймете.
waleri вне форума
Старый 31.07.2015, 09:46   #9
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Сообщение от waleri Посмотреть сообщение
Когда вырастете и напишете програмульку на пару миллионов строк, тогда поймете.
В паре-тройке сотен строк, уже мозги закипают даже с именными переменными, чего-уж там говорить о безымянных. А если ещё над проектом работает несколько человек... В обще ТС. Хватит оправдывать своё раздолбайство. Прислушайтесь, что говорят спецы и сделайте соответствующие выводы.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума
Старый 31.07.2015, 10:30   #10
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,656
По умолчанию

Цитата:
Первое что бросается в глаза, огромное количество сокращенных имен переменных и функций
Согласен. Это безобразие. По работе приходилось много таких исходников анализировать - обматерился, а исходники потом долго в кошмарах снились.

Комментов в исходнике - 0 целых, хрен десятых. Втопку! Сам потом забудешь, что прога делает.

Цитата:
Я решил убрать смысловую нагрузку из имён переменных.
Мне вообще лень запоминать, кто что означает. Когда приступаю к очередной задаче (а у меня их там десятки), мне нужны переменные для хранения значений, и при этом лень лезть в свою память, чтобы узнать, почему переменная называется так, а не эдак.
Это полный брейнфакинг и садо-мазо. Дальше не читал.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума
Закрытая тема


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Кириллица в mysql под dos-ом ololo-schoolboy SQL, базы данных 0 01.01.2011 16:08
Из Dos под Win Nozema Фриланс 3 30.10.2009 17:34
C++ под DOS. Функции Xeon332 Общие вопросы C/C++ 34 29.11.2008 18:01
borland C++под DOS Xeon332 Помощь студентам 9 20.09.2008 20:50