Autor Zpráva
H13
Profil
Ahoj, zajímala by mě taková maličkost...

když rozebírám nějaký cizí php kód, např. nějakou třídu, ap., ve většině případů je styl kódu následovný:

foreach ($array as $value){
	if ($variable == 1){
		echo "1";
	}
}


Já (nejsem php programátor, ale pár řádků už jsem vytvořil) píšu kód následujícím způsobem
foreach ($array as $value)
{
	if ($variable == 1)
	{
		echo "1";
	}
}


Mám větší přehled (např. když je vnořeno hodně podmínek, nějakej ten foreach, atd.., protože mi notepad zobrazí přesně zarovnaně začátek a konec kódu...

Zajímalo by mě, zda kromě nějakého subjektivního pocitu, existuje důvod, proč zapisovat kód prvním způsobem (tipl bych, že ušetření dvou řádků to asi nebude)

díky Honza
Alphard
Profil
ne, je to jedno, já např. používám ještě třetí způsob (ten je z praktického hlediska trochu nevýhodný, ale mně se líbí)
piš to jak chceš, bude to fungovat stejně
pouze, pokud pracuješ v týmu, nebo očekáváš, že někdo bude předělávat tvé scripty, tak by asi bylo vhodné sjednotit to
Dranel
Profil
H13
Věř, že ty dva řádky v tom taky hrajou svou roli...
BetaCam
Profil
H13
Zajímalo by mě, zda kromě nějakého subjektivního pocitu, existuje důvod, proč zapisovat kód prvním způsobem.

No nikdy sem na tím nepřemýšlel, ale nedovedu si představit zrovna u tohodle případu rozdíl mezi těmito zápisy. Osobně používám zápis druhý protože mi přijde přehlednější. Podle mě je to jen o tom na co si damý člověk zvykne. Žádný funkční rozdíl v tom není.

Co se týče mě tak pokud otevřu cizí kód tak jedna z prvních věcí co udělám je, že si kód přeformátuju na syntaxi na kterou sem zvyklí.

Zvyky programátorů sou různe. Spousty věcí se daj zapsat více způsoby. Několik příkladů, které běžne vidim a píšu je jinak:

include ("foo.php");
já píši
include 'foo.php';
-----------------------------------------
echo ("text");
já píši
echo 'text';
-----------------------------------------
if ($abc == "")
já píši
if (empty($abc))
-----------------------------------------

if ($abc == "")
{
$xyz = TRUE;
}
else
{
$xyz = FALSE;
}
já píšu
(empty($abc) ? $xyz = TRUE : $xyz = FALSE)
------------------------------------------
<head><title><?php echo $title;?></title></head>
já píšu
echo '<head><title>'.$title.'</title></head>';
------------------------------------------
false
já píšu
FALSE


příkladů je mnoho, ale podle mě jde ve většině případů pouze o návyk či zlozvyk člověka co píše kód.
H13
Profil
Dranel
No to by mě celkem zajímalo, protože např. u takhle zapsaného kódu (první způsob) je kolikrát třeba 10 řádků komentářů (ovšem jestli parser komentáře nějak přeskakuje ???)

BetaCam
(empty($abc) ? $xyz = TRUE : $xyz = FALSE)


No tomuto se snažím vyhnout, protože když je podmínka složitější na více řádků, pak přestávám mít přehledost s takovýmto zápisem ...
BetaCam
Profil
No tomuto se snažím vyhnout, protože když je podmínka složitější na více řádků, pak přestávám mít přehledost s takovýmto zápisem ...

Jistě pokud je podmínka složitá použiji klasický zápis. Existuje ovšem dost případů kdy je klasický zápis naopak nepřehlednější a přináší sebou jen chaos a naopak ternární operátor vnáší do kódu přehlednost.
Str4wberry
Profil
Odpovídám Honzovi:
Osobně bych uvedený kód zapsal takto:
foreach ($array as $value){
	if ($variable == 1) echo "1";
}
Ta druhá ukázka mi nepřijde za mák přehlednější.

„protože mi notepad zobrazí přesně“
Nebylo by lepší použít nějaký editor, který zvýrazňuje klíčová slova a názvy funkcí?


Odpovídám BetaCam:
if ($abc = "") 
já píši 
if (empty($abc))
Každé je ale přece něco úplně jiného.
BetaCam
Profil
Odpovídám BetaCam:

if ($abc = "")
já píši
if (empty($abc))

Každé je ale přece něco úplně jiného.


Uff sypu si popel na hlavu. :)

Samozdřejmě

if ($abc == "") 
já píši 
if (empty($abc))
Keilew
Profil
První zápis je Javovský a já ho taky používám. Jsem na něj zvyklej.
H13
Profil
Str4wberry

foreach ($array as $value){
	if ($variable == 1) echo "1";
}


Ano, ale co když je podmínek 5, foreach ve foreach, podmínky mají else a else if , pak třeba i case, a celkem to má 300 řádků ...
Timy
Profil
Já používám druhý způsob, protože ty závorky pak lépe znázorňují celý blok, protože jsou akorát pod sebou. Je hned vidět, kde co končí a hlavně začíná. V prvním případě je každá závorka někde jinde, to se mi nelíbí.
b022d
Profil *
Já používám první, jednak je ten druhý příliš roztahaný a hůř se mi čte, zvlášť když potřebuji komplexnější přehled a jeden menší úsek kódu se mi nevejde na stránku, jednak i druhý krásně odděluje bloky - začáteční písmeno a koncová složená závorka. Ale pravda, je to jen můj pohled.

Stejně - tohle je v pořádku, horší by bylo míchat to obojí dohromady.
Měsíček
Profil
Mě osobně se líbí mít "uhlazené zápisy" tj ..

Jsou :

<?

dávám raději :

<?php

ne každý má zapnutou direktivitu a už mnoho lidí na tom pohořelo ..

místo :

class Trida{
$string="String";
}

mám radši :

class Trida{

public $string = "String";

}

...
b022d
Profil *
*i první krásně odděluje bloky
Alphard
Profil
protože pokud se nemýlím "echo" je funkce
není :-)
BetaCam
Profil
protože pokud se nemýlím "echo" je funkce

Opravdu se mýlíš jak říká Alphard echo je jazykový konstrukt.
Měsíček
Profil
To je vcelku zajímavé, protože každý tutorial a návod bere "echo" jako funkci, ale oficiální dokumentace php.net ne. Dobrá mažu ze svého příspěvku.
djlj
Profil
Měsíček
Tutoriály taky kolikrát píše kdejaký packal :).

A používám ten první zápis.
Aleš Janda
Profil
Osobně používám první zápis, ten druhý se mi zdá roztahaný, tudíž nepřehledný (na každém druhém řádku je jenom nějaká závorka), tudíž zápis byť krátkého kódu zabírá třeba celou stránku.

Osobně se mi líbí třeba syntaxe Pythonu, který složené závorky nepoužívá vůbec a bloky rozlišuje jen podle odsazení.

A ještě příklad
(empty($abc) ? $xyz = TRUE : $xyz = FALSE)

se mi zdá také příliš roztahaný, spíše bych napsal
$xyz = empty($abc);

resp.
$xyz = ($abc == '');
Keilew
Profil
Aleš Janda
Ternární operátor se hodí při jiných příležitostech:
echo "Vítej ".(($mod)?"Moderátore":"Uživateli");
Aleš Janda
Profil
Keilew
Tak ho samozřejmě také používám :-) ale použít ho na výsledek true/false se mi zdá ve většině případů zbytečné.
H13
Profil
Keilew
Aleš Janda

pánové, váš kód bych rozhodně nechtěl analyzovat, leda, že bych si dodělal vyšší dívčí :-)
daop
Profil *
Dobry den,
ja pisu kod presne prvnim zpusobem, je to pro me prehlednejsi, Vim ze musim dat za IF slozene zavorky { a tak je tam dam,
abych se nestratil v zavorkach, tak dusledne odsazuji kod....
Navic me v tom perfektne pomaha validator php pri psani kodu :), takze lahoda....


daop...
BetaCam
Profil
A ještě příklad

(empty($abc) ? $xyz = TRUE : $xyz = FALSE)

se mi zdá také příliš roztahaný, spíše bych napsal


Byl to pouze příklad. :) A popravdě v tu chvíly kdy sem to psal mě žádná jednoduší názorná podmínka nenapadla :)
DoubleThink
Profil *
Osobně se mi líbí třeba syntaxe Pythonu, který složené závorky nepoužívá vůbec a bloky rozlišuje jen podle odsazení.
Masochismus v té nečistší formě...

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0