Hallo,

Al meerdere malen loop ik hier tegenaan en ik ben benieuwd hoe jullie dit doen. Als je een aantal variabelen onder elkaar zet, lijn je deze dan netjes uit of niet?

Dus doe je gewoon dit:

<?php
$name = $user->getName();
$age = $user->getAge();
$gender = $user->getGender();
?>

Of doe je dit?

<?php
$name = $user->getName();
$age = $user->getAge();
$gender = $user->getGender();
?>

De laatste optie ziet er mooier uit, maar kost meer werk. De ene keer denk ik, ik doe het allemaal netjes. Dan denk ik weer, nee toch maar niet... en dan even later denk ik... toch maar wel :-)

Maar als ik het in PHP netjes doe, dan zou ik het in m'n css bestanden bijvoorbeeld ook netjes moeten doen... en dat is helemaal een boel werk! Dan zou je zoiets krijgen:


.eenclass {
  border     : 1px solid red;
  height     : 100%;
  margin-left: 15px;
  width      : 500px;
}


Kortom, ik ben benieuwd of jullie je variabelen wel of niet uitlijnen..!
Oké, thanks voor je toelichting.
Voorbeeld 2: duidelijker omdat de 'return' onderaan staat.
Voorbeeld 1 is korter, sneller, effectiever.
@Ozzie: je kunt qua duidelijkheid ook nog winnen door je 'coding style' aan te passen.

We schrijven functie 1 hier zo op:


<?php
public function get( $key ) 
{
  if( isset( $_SESSION['project_data'][$key] ))
    return $_SESSION['project_data'][$key];
  
  return false;
}
?>
Hmmm, dat is denk ik een kwestie van persoonlijke voorkeur John. Ik vind het er niet echt duidelijker op worden.

Eddy, waaom vind je voorbeeld 2 duidelijker? Klopt dat de return onderaan staat. Dat vind ik wel mooi, dat je maar 1 return hebt. Alleen kun je niet direct zien WAT er gereturned wordt, terwijl je dat in voorbeeld 1 wel kunt zien. Snap je wat ik bedoel?
John, vind je dat duidelijk? Ik vind dat altijd juist zeer onduidelijk, doordat je de brackets weghaalt kun je niet meer duidelijk zien wat er wel in de statement hoort en wat niet.

In de Symfony documentation zorg ik ervoor dat we zo consistent mogelijke code hebben die het best leesbaar is voor de lezers. Dat doe ik onder anderen door bij elke code de Symfony coding standards toe te passen. Op de pagina zie je bijna een overkoepelend voorbeeld van de standards.

Zover de PHP coding standards. Het indenten van variabelen doe ik niet in PHP.

Qua JS hou ik me ook ong. de PHP coding standards aan. Alleen het uitlijnen van variabelen doe ik wel. Bijv:
var foo = 'hello world',
    foobar = 12
    hello = ['a', 'b', 'c'];
// wordt
var foo    = 'hello world',
    foobar = 12,
    hello  = ['a', 'b', 'c'];

// of met hashtables:
var User = Base.extend({
    id   : 0,
    name : '',
    age  : 0,
    pass : '',
});


In CSS gebruik ik idiomatic.css als richtlijn, ik hou me er niet volledig aan. Het uitlijnen van properties/values doe ik hier niet, behalve als ik overga op one line scripting, voor kleine blokken:
.alignright  { float: right;   }
.alignleft   { float: left;    }
.aligncenter { margin: 0 auto; }


[offtopic]Het uitlijnen van dingen kun je in Vim heel makkelijk doen met Tabular.vim, een mooie plugin.
Voor Sublime Text 2 (aangezien dat de editor is waar iedereen verliefd op schrijnt te zijn) is er Sublime Alignment[/offtopic]
Wouter, welke van mijn voorbeelden vind jehet duidelijkst en waarom?

[size=xsmall]Toevoeging op 31/08/2012 10:18:28:[/size]

p.s. wat is hier zo bijzonder aan? ziet er een beetje vaag uit?http://www.sublimetext.com/
@wouter: We hebben daar lang over gesoebat wat we zouden doen :) Uiteindelijk hebben we ervoor gekozen om Zend te volgen.

m.b.t. de if met 1 regel wijken we daarvan af, in die zin dat we de regel waar de sluithaak staat wit laten, en dan dus ook geen openeningshaak gebruiken. We vonden witruimte duidelijker dan de haak.

Maar ik geef meteen toe: het is subjectief en persoonlijk.
Oké, de eerste 2 voorbeelden. De 2e zou misschien iets duidelijker zijn, aangezien je mooi alles in kolommen hebt. Je kan je daardoor iets beter concentreren op elke column of regel apart. Je zou ook sneller kunnen zien welke values het allemaal heeft.

Maar aan de andere kant zou ik het niet doen, kost teveel tijd vind ik en met een beetje meer concentratie heb je hetzelfde effect.

Voorbeelden nr 2. 1e voorbeeld is duidelijker. Je hebt dan een goed overzicht van welke value het heeft als de conditie true is en welke value het anders heeft.

Voorbeeld 3, helemaal mee eens.

Voorbeelden 4. De eerste. Je hebt kunt dan meteen zien wat er geretourneerd wordt. Bij voorbeeld 2 moet je eerst lezen welke waarde $value heeft en daarna wat er met die waarde gebeurd.

Je zou het ook allemaal heel simpel kunnen uittekenen hoe je ogen zich verplaatsen, je kunt dan erg snel zien of iets efficiënt is of niet:

Dit is jou laatste voorbeeldje. Je ziet dat je in voorbeeld 1 als de conditie true (rood) of false (oranje) is in beide gevallen maar 3 keer met je oog naar een positie moet bewegen.
In voorbeeld 2 is dit voor een true conditie 7 stappen en voor een false 5.

[offtopic]Wat er zo bijzonder aan is weet ik niet, alleen het is helemaal in om sublime text 2 te gebruiken, maar ik gebruik hem niet...[/offtopic]
Thanks Wouter, aantal oogbewegingen is een goede! Nooit aan gedacht :) Dat ga ik vaker gebruiken.

Wat betreft voorbeelden nr. 2... da's grappig. Zo deed ik het ook altijd (als het 1e voorbeeld)... maar manier 2 is toch ook wel fijn. Hangt een beetje van de situatie af denk ik. Als de value in 90% van de gevallen dezelfde waarde heeft, dan is dit zinvol:

<?php
$value = 'iets'
if ('er_gebeurt_iets_onverwachts') {
$value = 'andere waarde';
}
?>

Maar als je het niet weet, dan is een if/else beter denk ik. In voorbeeld 1 declareer je mogelijk onnodig een variabele met de verkeerde waarde die je vervolgens dan weer gaat overschrijven. Tja, wat is wijsheid.
Sorry voor de late reactie, maar waarom niet gewoon zo?

<?php
public function get($key) {
return isset($_SESSION['project_data'][$key]) ? $_SESSION['project_data'][$key] : false;
}
?>

Reageren