Cik bieži Jums gadās kodā saskarties ar (vai pat pašam rakstīt) šādu kodu ?

<?php
if ($row['type'] == 1) {
	// ...
} elseif ($row['type'] == 2) {
	// ...
}
?>


Šis būtu tāds klasisks piemērs sevis nedokumentējošam kodam. Lai zinātu, kas tad īsti ir tips #1 un tips #2, mums būtu vai nu jāpēta pārējais kods, kas, iespējams, varētu dot kaut kādas norādes, ko tie nozīmē; vai arī jāmeklē, kur tas būtu aprakstīts dokumentācijā. Visticamāk, ka otrais variants nebūtu iespējams.

Tātad - lai izvairītos no šādas situācijas, ir ieteicams definējēt šos tipu (vai jebko citu) veidus kā konstantes. Un salīdzināšanā izmantojiet tās. Ideja nav jauna - es tikai to reklamēju tālāk. Atzīšos - pats ļoti daudz esmu grēkojis ar hard-coded vērtībām kodā (savai aizstāvībai gan varu teikt, ka parasti mēģinu nokomentēt, ko tad tie cipari nozīmē).

Konstanšu izmantošana izskatītos aptuveni šādi:

<?php
define('MYAPP_TYPE_FIRST, 1);
define('MYAPP_TYPE_SECOND', 2);

if ($row['type'] == MYAPP_TYPE_FIRST) {
	// ...
} elseif ($row['type'] == MYAPP_TYPE_SECOND) {
	// ...
}
?>

Protams, konstanšu nosaukumi reālā dzīvē būtu aprakstošāki - tādi kas reāli aprakstītu vērtības būtību. Šeit vairāk par FIRST un SECOND nevarēju izdomāt :). MYAPP_ prefiks ir paredzēts, lai būtu mazāka iespēja, ka konstante varētu konfliktēt ar kādu citu konstanti (piemēram, ja aplikācija tiek likta kopā no dažādiem moduļiem, tad tā varētu būt diezgan liela iespēja). Mazākām aplikācijām tas varētu arī nebūt tik būtiski.

PS. Rakstot šo rakstu, mans FF izdomāja aiziet atpūsties jeb nokārties. Biju pārsteigts cik labi strādā FF “Session Restore” fīča - raksts nebija pazudis. :)