In-Portal Developers Guide

This is a wiki-based Developers Guide for In-Portal Open Source CMS. The purpose of this guide is to provide advanced users, web developers and programmers with documentation on how to expand, customize and improve the functionality and the code the In-Portal software. Please consider contributing to our documentation writing effort.

K4:Правила хорошего тона

From In-Portal Developers Guide

Jump to: navigation, search
Стандарты в программировании Стандарты в программировании
Статьи в этой категории
Image:Infobox Icon.gif Плохие программисты получаются из тех, которые не хотят следовать традициям в программировании.

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

  • называть константы заглавными буквами;
  • использовать именованные константы вместо магических чисел (напр. STATUS_ACTIVE);
  • объявлять переменные перед использованием;
  • говорящие названия переменных (атрибутов, классов, методов, названий полей в базе и т.п.);
  • данные в dropdown полях сортировать в алфавитном порядке;
  • никогда не верить данным пользователя (never trust user data), т.е. всегда экранировать данные из форм.

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

Примеры

плохо: хорошо:
foreach ($fields as $f) {
	...
}
  • не понятно что в переменной $f
foreach ($fields as $field) {
	...
}
if ($cond == 'and') {
	return 1;
}
else 
	return '';
  • у переменной $cond сокращённое название
  • не поставлены фигурные скобки в else
if ($cond == 'and') {
	return 1;
}
else {
	return '';
}