Путь от говнокода к просветлению. Часть 1-2.

Уроки по PHP, Javascript и т.п.

Путь от говнокода к просветлению. Часть 1-2.

Сообщение alexei » 23 фев 2012, 00:00

1. Пишем понятный код.
Для начала код должен быть читаемый и понятным.
Зачем это нужно? Вы сейчас новичок в программировании и иногда Вам приходится обращаться за советам к более опытным. Читаемый и понятный код увеличит шанс на то, что Вам помогут.

Начну с имен переменных и названий функций.
Они должны быть написаны на английском языке и отражать их предназначение.
Если Вы не знаете англ. язык, то можно воспользоваться translate.google.com или его аналогом. У веб разработчика проблем с интернетом не должно быть.

Не пишите длинные и сложные названия. Вот, допустим, делаем блок достижения (achievements), даже при хорошем знании англ. Вы можете допустить ошубку, поэтому лучше воспользоваться awards (награды).

Переменные обычно пишут 2-мя способами. Приведу пример для счетчика пользователей:


Одна из ужасных вещей, когда слово class зарезервирован и программист пишет Class (с большой буквы).

Из этих 2-х вариантов выберите один и используйте только его (не смешивайте).

Индексы можно обозначать обозначать i,j,k. неизвестные переменные x,y,z и т.п.

Еще важный момент — это комментарии. Либо на англ языке, либо на русском, опять же без транслита. Лишние комментарии тоже плохо, вот пример:
  1. $("#friends").html(data).show(); //Загружает и отображает блок друзья.


Отступы и переносы:
1) Используйте хорошие редакторы кода, где можно есть горячие клавиши для быстрого формата кода.
2) Не пишите в одну строку. Разбивайте, пример:

  1. tmp = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  2. tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  3. tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  4. tmp += 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx';
  5.  
  6. tmp='xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'; //а вот так не надо

Вообще горизонтальная прокрутка не очень удобно.

3) Вот один из примеров оформления if else.
  1. if (json.user.side == 0) {
  2.     tmp_side = "Нейтральная";
  3. }
  4. else if (json.user.side > 0) {
  5.     tmp_side = "Свет (" + json.user.side + ")";
  6. }
  7. else {
  8.     tmp_side = "Тьма (" + ((-1) * json.user.side) + ")";
  9. }


2. Отсекаем лишнее.
Очень часто можно заметить, что объявляются лишние переменные, берутся лишние поля из базы используется тип на 4 байта, вместо одного.

1) Переменные следует объявлять не в начале функции, а где они будут нужны. Иногда переменные используются только в одной из веток оператора if, либо в самом конце функции. Им незачем висеть.
  1. //Плохой код
  2. var s=0;
  3. //.......... Много кода, где s не используется..........
  4. if(x=5)
  5. {
  6.     s=data[0];
  7. }
  8. else
  9. {
  10.     return s;
  11. }
  12.  
  13. //Хороший код
  14. //.......... Много кода, где s не используется..........
  15. if(x!="qwerty")
  16. {
  17.     return 0;
  18. }
  19. return data[0];
  20.  


2) Используете тип переменной, который Вам нужен, если храните пол пользователя в БД, то используете 1 байт, а не больше. Хотя, есть тип bit, который занимает 1 бит и если в БД 8 таких полей, то они вместе занимают 1 байт. Это на заметку, довольно редко так бывает.

3) Берите то, что нужно. Делая запрос к БД берите только те поля, которые вам нужны. Тоже касается и API запросам к ВК, зачем получать фамилию, когда нужно только имя.
  1. SELECT * FROM users WHERE level>5; // плохо
  2. SELECT name FROM users WHERE level>5; // хорошо


4) Не используете лишние циклы и рекурсию. Прежде, чем что-то делать подумайте, а оно здесь точно нужно?
  1. //плохой вариант
  2. for(var i=0; i<2; i++)
  3. {
  4.     Test(i);
  5. }
  6.  
  7. //хороший вариант
  8. Test(0);
  9. Test(1);



5) Не выполняйте лишние итерации, пример:
  1. // плохой вариант
  2. var tmp=0;
  3. for(var i=0; i<length; i++)
  4. {
  5.     if(data[i]>500)
  6.     {
  7.         tmp=data[i];
  8.     }
  9. }
  10.  
  11. // хороший вариант
  12. var tmp=0;
  13. for(var i=0; i<length; i++)
  14. {
  15.     if(data[i]>500)
  16.     {
  17.         tmp=data[i];
  18.         break;
  19.     }
  20. }
http://appslessons.com/ — Мой блог посвященный урокам приложений ВКонтакте

За это сообщение автора alexei поблагодарили - 3:
Александр, boombast1k, gpv123
Аватара пользователя
alexei
Разработчик
Разработчик
 
Автор темы
Сообщения: 836
Зарегистрирован: 21 янв 2010, 19:44
Откуда: Rostov-on-Don
Благодарил (а): 5 раз.
Поблагодарили: 54 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Вернуться в Уроки на другие темы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0

cron