Несколько советов начинающим программистам

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

1. Банально, но — не забывайте про табуляцию в коде. Вы будете писать в будущем объемные программы, где зачастую будут процедуры, использующие вложенные друг в друга циклы и/или условия. Правильная табуляция поможет вам самим разобраться внутри вашего кода, не говоря уже о сторонних программистах. Вот небольшой кусок кода для примера:

<code class="cpp">vector <string*> umas;vector <string*> :: iterator cycler;int checker(0);char c('a');for (cycler = umas.begin(); cycler < umas.end(); cycler++){string buf = *umas[i];if (buf[0] == c){cout << buf << endl;checker += 1;}i = i + 1;}
</code>

Довольно сложно понять с первого раза, что происходит, не так ли? А если применить к тому же коду правильную табуляцию:
Отредактированный код
<code class="cpp">vector <string*> umas;
vector <string*> :: iterator cycler;
int checker(0);
char c('a');

for (cycler = umas.begin(); cycler < umas.end(); cycler++)
{
   string buf = *umas[i];
   if (buf[0] == c)
   {
      cout << buf << endl;
      checker += 1;
   }
   i = i + 1;
}
</code>

Так гораздо приятнее для глаза.

2. Очень советую внутри кода вашей программы пустыми строчками разделять для большей наглядности участки кода, выполняющие разные функции. Вот пример на основе простейшей процедуры расчета детерминанта квадратной матрицы:
Пример
<code class="cpp">int determinant (int matrix[SIZE][SIZE], int sz)
{
	int fdeterminant = 0; //Описание и инициализация основных переменных
        //ПУСТАЯ СТРОКА-РАЗДЕЛИТЕЛЬ                                                                             
	if (sz == 1)  //Если размер матрицы - 1
	{
		return matrix[0][0];
	}
        //ПУСТАЯ СТРОКА-РАЗДЕЛИТЕЛЬ
	if (sz == 2)  //Если размер матрицы - 2
	{
		fdeterminant = matrix[0][0]*matrix[1][1] - matrix[0][1]*matrix[1][0];
		return fdeterminant;
	}
        return 0;  //Остальную часть кода не привожу, для более компактного вида
}
</code>

Данный прием позволит вам быстрее искать те участки кода, в которых процесс тестирования выявил ошибки.

3. Всегда, хотя нет, не так — ВСЕГДА пишите комментарии к коду. Если вы привыкнете комментировать строчки вашего кода, это упростит жизнь не только вам, но и тем, кому возможно придется работать с вашим кодом, так как телепатов сейчас крайне мало. Пример комментирования вы можете посмотреть во втором пункте, в примере с расчетом детерминанта.

4. Учитесь правильно логически разбивать задачу на набор из более мелких задач.

5. Не перегружайте ваши процедуры и функции без надобности, для каждой мелкой задачи — своя функция.

6. «Правило вложенности», как я его называю: «Старайтесь избегать более третьего уровня вложенности циклов и/или условий друг в друга».

Пример к трём последним пунктамВам дали задачу: «Есть одномерный массив целых чисел А из n элементов, заполненный случайными числами в диапазоне от 50 до -1. Отсортируйте массив по возрастанию, если в нём будет хотя бы одно отрицательное число.»

Сначала применяем 4 пункт: есть массив, заполненный числами. Сортируем, если найдем отрицательное число. Следовательно, правильное разделение задачи на подзадачи будет следующим: заполнить массив случайными числами — сделать проверку — отсортировать. Далее просто выполняем наши подзадачи.

Если неправильно разделить задачу и объединить этап выполнения проверки и сортировку, мы также нарушим пункт 5 и «правило вложенности» (в случае, если сортировка будет выполняться «пузырьком», так как: цикл прохода по массиву — 1 уровень, проверка значений — 2 уровень вложенности, сортировка пузырьком содержит также 2 уровня вложенности, следовательно, если объединить эти этапы, мы получим 4-й уровень вложенности, что, в принципе, допустимо, но нежелательно, к тому же мы объединим 2 подзадачи в одну функцию, что тоже не есть хорошо).


Так же начинающим программистам на С++ очень рекомендую почитать книгу от Харви и Пола Дейтел «Как программировать на С». Там есть очень много примеров для самостоятельного изучения, а так же есть очень хорошие замечания по правильному стилю программирования и разбор некоторых типичных ошибок.

Ссылка для скачивания книги, формат книги — DJVU.


0 комментариев

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.