Хочу рассказать Вам какие правила оформления кода сделают Ваш его более понятным и читабельным. В книгах по программированию этому моменту уделяют мало внимания и это негативно сказывается в дальнейшем, ведь программист сразу должен учиться писать красиво и правильно. Если Вы посмотрите код, который написал опытный программист и дилетант, то сразу увидите разницу.
1. На первом месте будут отступы по горизонтали. Для чего же нужны отступы? Чтобы лучше понять, давайте рассмотрим это на примере.
Внимательно посмотрите на код и отметьте то, что Вам не понравилось.
//Сортируем пузырьком строки двумерного массива #include <iostream> #include <iomanip> #include <stdlib.h> #include <time.h> void printMatrix(int[][10], const int); using namespace std; int main() { const int SIZE = 10; int matrix[SIZE][SIZE]; int temp; srand(time(NULL)); //заполняем массив случайным образом for(int i = 0; i < SIZE; i++) for(int j = 0; j < SIZE; j++) matrix[i][j] = 1 + rand() % 100; //сортируем пузырьком for(int N = 1; N < SIZE * SIZE; N++) { for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE - 1; j++) { if(matrix[i][j + 1] < matrix[i][j]) { temp = matrix[i][j + 1]; matrix[i][j + 1] = matrix[i][j]; matrix[i][j] = temp; } } } } printMatrix(matrix, SIZE); return 0; } //печать массива void printMatrix(int mx[][12], const int SIZE) { for(int i = 0; i < SIZE; i++) { cout << endl; for(int j = 0; j < SIZE; j++) cout << setw(4) << mx[i][j]; cout << endl; } }
И как Вам такой вид программы? Лично меня такое оформление исходного кода не располагает к его изучению, потому что его очень тяжело читать. А все из-за того, что нет отступов. Теперь рассмотрим форматированный код.
//Сортируем пузырьком строки двумерного массива #include <iostream> #include <iomanip> #include <stdlib.h> #include <time.h> void printMatrix(int[][10], const int); using namespace std; int main() { const int SIZE = 10; int matrix[SIZE][SIZE]; int temp; srand(time(NULL)); //заполняем массив случайным образом for(int i = 0; i < SIZE; i++) for(int j = 0; j < SIZE; j++) matrix[i][j] = 1 + rand() % 100; //сортируем пузырьком for(int N = 1; N < SIZE * SIZE; N++) { for(int i = 0; i < SIZE; i++) { for(int j = 0; j < SIZE - 1; j++) { if(matrix[i][j + 1] < matrix[i][j]) { temp = matrix[i][j + 1]; matrix[i][j + 1] = matrix[i][j]; matrix[i][j] = temp; } } } } printMatrix(matrix, SIZE); return 0; } //печать массива void printMatrix(int mx[][12], const int SIZE) { for(int i = 0; i < SIZE; i++) { cout << endl; for(int j = 0; j < SIZE; j++) cout << setw(4) << mx[i][j]; cout << endl; } }
Этот код более понятен, чем предыдущий, ведь любой блок четко выделяется на фоне остальных. Внимательно изучите, как здесь применяется форматирование и в дальнейшем соблюдайте эти правила. К хорошему тону нужно приучаться сразу или потом войдет в привычку.
P.S. Чтобы сделать отступ, достаточно нажать клавишу TAB. Если придерживаться стандартов, то 1 отступ = 4 пробелам.
2. На втором месте будут отступы, но уже вертикальные. На предыдущих примерах можно заметить разницу между присутствием и отсутствием. Логические блоки необходимо для большей ясности отделять 1 отступом. Логические блоки могут быть разными: подключение заголовочных файлов, объявление переменных, операторы выбора и циклы, функции и т.д.
3. На третьем месте будут комментарии. При выполнении сложных действий в программе, обязательно нужно комментировать эти участки кода, в первую очередь это нужно для себя, чтобы быстро вспомнить что Вы делали и, собственно говоря, для чего. Так же нужно не забывать о других программистах, если Вы работает в команде, то комментарии в коде — это самое необходимое.
4. Пробелы между символами в коде. Сравните 2 варианта кода ниже и, думаю, Вы поймете что я хотел сказать.
//печать массива void printMatrix(int mx[][12],const int SIZE) { for(int i=0;i<SIZE;i++) { cout<<endl; for(int j=0;j<SIZE;j++) cout<<setw(4)<<mx[i][j]; cout<<endl; } }
//печать массива void printMatrix(int mx[][12], const int SIZE) { for(int i = 0; i < SIZE; i++) { cout << endl; for(int j = 0; j < SIZE; j++) cout << setw(4) << mx[i][j]; cout << endl; } }
Как Вы могли заметить 2 вариант кода смотрится намного лучше. Одним словом, по стандарту после запятых должен быть пробел, между логическими и арифметическими блоками также.
5. Теперь перейдем к именованию объектов программы (функций, методов, классов, переменных и так далее).
Стиль именования
Все имена объектов должны быть обоснованными и должны указывать на то, какую информацию хранит в себе объект.
counter, increment - счетчик name, lastName - имя, фамилия phone - телефон city - город
Не стоит именовать объекты транслитом — это плохо. Лучше давать имена объектам на английском. Если это вызывает затруднения, то Вы можете воспользоваться онлайн-переводчиками. Я пользуюсь переводчиком от гугла, в последнее время они неплохо его доработали.
Неправильно — правильно
matrica - matrix stroka - str razmer - size maksimum - maximum, max parametr - value
Константы рекомендовано именовать в верхнем регистре.
SIZE, POINT, BOOK
Имена для переменных — это существительные, а для функций — глаголы или глагол и существительное, так как это действие. Примеры функций
playSong() printArray() readString()
Методы, которые что-нибудь возвращают, должны начинаться с префикса get (получить), а те, которые задают — set (установить).
getNext(); setNext();
Что такое верблюжья нотация
Выше были рассмотрены объекты с простыми именами. Очень часто необходимо называть объект несколькими словами. В таком случае применяют «верблюжью нотацию» (такая запись чем-то напоминает верблюжьи горбы). Несколько слов пишутся слитно, но при этом каждое слово, кроме самого первого, начинается с заглавной буквы.
lastName userName copyText() firstTimer mySecondBook
Что такое венгерская нотация
Венгерская нотация основана на добавлении префиксов к началу имени объекта. Такие префиксы указывают на тип объекта. Эта нотация не является частью стандарта языка и её можно не применять. Ниже Вы увидите пример, как нужно применять венгерскую нотацию.
string sLastName; int nBook, iMonth; bool bState; int* pCell, ptrRow; class CWocker; void vPrintMatrix();
Получайте новые статьи блога прямо себе на почту
Ваш сайт получил награду!