Путь от говнокода к просветлению. Часть 1-2.
Добавлено: 23 фев 2012, 00:00
1. Пишем понятный код.
Для начала код должен быть читаемый и понятным.
Зачем это нужно? Вы сейчас новичок в программировании и иногда Вам приходится обращаться за советам к более опытным. Читаемый и понятный код увеличит шанс на то, что Вам помогут.
Начну с имен переменных и названий функций.
Они должны быть написаны на английском языке и отражать их предназначение.
Если Вы не знаете англ. язык, то можно воспользоваться translate.google.com или его аналогом. У веб разработчика проблем с интернетом не должно быть.
Не пишите длинные и сложные названия. Вот, допустим, делаем блок достижения (achievements), даже при хорошем знании англ. Вы можете допустить ошубку, поэтому лучше воспользоваться awards (награды).
Переменные обычно пишут 2-мя способами. Приведу пример для счетчика пользователей:
Одна из ужасных вещей, когда слово class зарезервирован и программист пишет Class (с большой буквы).
Из этих 2-х вариантов выберите один и используйте только его (не смешивайте).
Индексы можно обозначать обозначать i,j,k. неизвестные переменные x,y,z и т.п.
Еще важный момент — это комментарии. Либо на англ языке, либо на русском, опять же без транслита. Лишние комментарии тоже плохо, вот пример:
Отступы и переносы:
1) Используйте хорошие редакторы кода, где можно есть горячие клавиши для быстрого формата кода.
2) Не пишите в одну строку. Разбивайте, пример:
Вообще горизонтальная прокрутка не очень удобно.
3) Вот один из примеров оформления if else.
2. Отсекаем лишнее.
Очень часто можно заметить, что объявляются лишние переменные, берутся лишние поля из базы используется тип на 4 байта, вместо одного.
1) Переменные следует объявлять не в начале функции, а где они будут нужны. Иногда переменные используются только в одной из веток оператора if, либо в самом конце функции. Им незачем висеть.
2) Используете тип переменной, который Вам нужен, если храните пол пользователя в БД, то используете 1 байт, а не больше. Хотя, есть тип bit, который занимает 1 бит и если в БД 8 таких полей, то они вместе занимают 1 байт. Это на заметку, довольно редко так бывает.
3) Берите то, что нужно. Делая запрос к БД берите только те поля, которые вам нужны. Тоже касается и API запросам к ВК, зачем получать фамилию, когда нужно только имя.
4) Не используете лишние циклы и рекурсию. Прежде, чем что-то делать подумайте, а оно здесь точно нужно?
5) Не выполняйте лишние итерации, пример:
Для начала код должен быть читаемый и понятным.
Зачем это нужно? Вы сейчас новичок в программировании и иногда Вам приходится обращаться за советам к более опытным. Читаемый и понятный код увеличит шанс на то, что Вам помогут.
Начну с имен переменных и названий функций.
Они должны быть написаны на английском языке и отражать их предназначение.
Если Вы не знаете англ. язык, то можно воспользоваться translate.google.com или его аналогом. У веб разработчика проблем с интернетом не должно быть.
Не пишите длинные и сложные названия. Вот, допустим, делаем блок достижения (achievements), даже при хорошем знании англ. Вы можете допустить ошубку, поэтому лучше воспользоваться awards (награды).
Переменные обычно пишут 2-мя способами. Приведу пример для счетчика пользователей:
Код: Выделить всё
count_users=10;countUsers=10;
Из этих 2-х вариантов выберите один и используйте только его (не смешивайте).
Индексы можно обозначать обозначать i,j,k. неизвестные переменные x,y,z и т.п.
Еще важный момент — это комментарии. Либо на англ языке, либо на русском, опять же без транслита. Лишние комментарии тоже плохо, вот пример:
Код: Выделить всё
$("#friends").html(data).show(); //Загружает и отображает блок друзья.
1) Используйте хорошие редакторы кода, где можно есть горячие клавиши для быстрого формата кода.
2) Не пишите в одну строку. Разбивайте, пример:
Код: Выделить всё
tmp = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; tmp='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //а вот так не надо
3) Вот один из примеров оформления if else.
Код: Выделить всё
if (json.user.side == 0) { tmp_side = "Нейтральная";}else if (json.user.side > 0) { tmp_side = "Свет (" + json.user.side + ")";}else { tmp_side = "Тьма (" + ((-1) * json.user.side) + ")";}
Очень часто можно заметить, что объявляются лишние переменные, берутся лишние поля из базы используется тип на 4 байта, вместо одного.
1) Переменные следует объявлять не в начале функции, а где они будут нужны. Иногда переменные используются только в одной из веток оператора if, либо в самом конце функции. Им незачем висеть.
Код: Выделить всё
//Плохой кодvar s=0;//.......... Много кода, где s не используется..........if(x=5){ s=data[0];}else { return s;} //Хороший код//.......... Много кода, где s не используется..........if(x!="qwerty"){ return 0;}return data[0];
3) Берите то, что нужно. Делая запрос к БД берите только те поля, которые вам нужны. Тоже касается и API запросам к ВК, зачем получать фамилию, когда нужно только имя.
Код: Выделить всё
SELECT * FROM users WHERE level>5; // плохоSELECT name FROM users WHERE level>5; // хорошо
Код: Выделить всё
//плохой вариантfor(var i=0; i<2; i++){ Test(i);} //хороший вариантTest(0);Test(1);
5) Не выполняйте лишние итерации, пример:
Код: Выделить всё
// плохой вариантvar tmp=0;for(var i=0; i<length; i++){ if(data[i]>500) { tmp=data[i]; }} // хороший вариантvar tmp=0;for(var i=0; i<length; i++){ if(data[i]>500) { tmp=data[i]; break; }}