Hoe schrijf je een nette, maar vooral overzichtelijke code?

  • Beste mede-ICT'ers,


    Ik kan aardig PHP, maar ik krijg altijd commentaar dat mijn code slordig is.
    Nu schrijf ik OOP, maar weet niet precies wanneer ik wat in een object/method zetten.


    Heeft iemand anders tips om code overzichtelijk te maken?


    Alvast bedankt!


    mvg,
    Stan

  • Onderstaande zal veel helpen:


    1. Het wordt netter als je elke accolade op een nieuwe regel.
    2. Commentaar erbij plaatsten, duidelijk getypte commentaar zodat iemand anders er ook wat aan heeft.


    Verder moet je altijd door vragen als iemand zegt dat je code slordig is, hij/zij kan bedoelen dat je onnodige code gebruikt, of dat het gewoon irritant lezen is.

  • Bedoelen ze dan slordig in de zin van jouw commentaar, identatie,..
    In dat geval zou ik eens coding convention voor OOP opzoeken en doorbladeren.


    Voor je object/method probleem, ik weet niet goed of het bij php ook zo is, maar bij software engineering, ga je je project eerst kort beschrijven in een aantal zinnen, met de fucties die je wil dat het moet kunnen uitvoeren en wat we ervan verwachten. Vervolgens ga je alle zelfstandige naamwoording in die tekst aanduiden, en dat zijn mogelijke objecten. De werkwoorden zijn mogelijke methods voor die objecten. Dit is een zeer high-level om u opsplitsing te maken, maar geeft normaal al een standaard idee waar je naar uit wilt gaan en hoe de relaties tussen je objecten zijn.


    Vervolgens goed letten op inheritance, hoe meer je dat 'logisch' kunt toepassen, hoe beter, maar zorg dat je het geheel niet moeilijker maakt dan nodig.

  • Citaat

    Het beste is om altijd HTML apart te houden van PHP.


    Ja, maar wat als ik bijvoorbeeld een table moet echo'en in een if statement?


    Citaat

    Bedoelen ze dan slordig in de zin van jouw commentaar, identatie,..
    In dat geval zou ik eens coding convention voor OOP opzoeken en doorbladeren.


    Voor je object/method probleem, ik weet niet goed of het bij php ook zo is, maar bij software engineering, ga je je project eerst kort beschrijven in een aantal zinnen, met de fucties die je wil dat het moet kunnen uitvoeren en wat we ervan verwachten. Vervolgens ga je alle zelfstandige naamwoording in die tekst aanduiden, en dat zijn mogelijke objecten. De werkwoorden zijn mogelijke methods voor die objecten. Dit is een zeer high-level om u opsplitsing te maken, maar geeft normaal al een standaard idee waar je naar uit wilt gaan en hoe de relaties tussen je objecten zijn.


    Vervolgens goed letten op inheritance, hoe meer je dat 'logisch' kunt toepassen, hoe beter, maar zorg dat je het geheel niet moeilijker maakt dan nodig.


    Bedankt! Ik ga eens op 'onderzoek' uit!

  • Hallo,


    Probeer keurig met tabs te werken.
    Voeg comments toe en gebruik Javadoc (maar dan voor php).
    Gebruik goeie benamingen, dit is een zeer belangerijk iets.
    Als een functie te lang wordt, splits deze in twee functies.
    Als een klasse teveel functies krijgt, kijk er dan naar of het niet eigenlijk twee objecten zijn.
    Mogelijk dat je omslachtige manieren of slordige manieren gebruikt om dingen te doen.


    Heb je voorbeeld code waar we feedback op kunnen geven?


    Edit na reacties:
    Zorg voor een template waar je enkel nog de variabelen in hoeft te zetten. Dat je alle berekeningen ervoor hebt gedaan. Als je een for loop moet doen dat er dan niet extra code nodig is in de template.


    Mvg,
    Tim


  • Ik zit nu op een laptopje, en mn werk staat ergens anders. Ik zal het binnenkort even posten!

  • Hallo Stan,


    Voornamelijk zijn dit keuzes die je voor jezelf maakt, en wat jij zelf prettig vindt werken. Dit is natuurlijk alleen van toepassing als je alleen aan een project werkt en deze in de toekomst niet door andere laat gebruiken.


    Anders kan ik je het volgende adviseren:


    Voor je daadwerkelijk één regel code neerzet in je document plan eerst wat je nodig hebt en denkt te gebruiken.
    Zoals de meeste onder ons weten een applicatie zal altijd onderdelen bevatten die niet prettig werken. Dit is hierdoor te voor 95% af te dekken. Zo voorkom je dat bepaalde code onduidelijk word en dek je jezelf in voor mogelijke aanvallen (zie bijv. http://nl.wikipedia.org/wiki/Use_case). Dit lijkt overigens veel tijd te kosten, alleen naar mate je project volgt zal dit veel tijd besparen!


    Schrijven is schrappen, ook in documentatie.
    Vaak is het probleem bij documentatie dat dit onduidelijk is, of dat er zelfs géén commentaar aanwezig is.
    Maak daarom de situatie duidelijk door dit heel uitgebreid op te schrijven. Hierna kun je altijd wanneer van toepassing bepaalde dingen die niet van belang zijn weg halen.


    Schrijf je code zo duidelijk mogelijk op.
    Vaak zie je in projecten dit soort stukken code...

    PHP
    <?php
    $foo = 8;
    if( $foo<10 )
        if( $foo>5 )
            echo "Greater than 5!";
        else
            echo "Less than 5!";
    else
        echo "Greater than 10!";
        echo "<br />Another note.";


    Dit is erg onduidelijk schrijf daarom alles volledig op:



    Volg een programmeer standaard.
    Er zijn bepaalde standaarden ontwikkeld voor het opbouwen van code. Kies hier gewoon één van uit en blijf daar voor jezelf in ontwikkelen. Zoek dit op via google en je vind hier genoeg over :)
    Ikzelf gebruik de programmeer stijl van Java/C# omdat ik dit gewend ben dit is voor iedereen verschillend, alleen voor elke programmeur wel duidelijk!

  • Ik heb nog even gezocht tussen wat werk, en heb een uitstekend voorbeeld kunnen vinden..
    Alsnog bedankt voor de vele reacties!



  • Bedankt, Zou je een voorbeeldje kunnen geven?

  • Hallo,


    Zelf ben ik van OO werken. Kun je dit onderverdelen in functies en objecten wat de leesbaarheid nog vele malen meer ten goede moet komen.


    Maar met dit kleine stukje kom ik uit op:



    Maar het liefste had ik dit in een OO omgeving gedaan. Maar met zo weinig code kan dat niet.


    Mvg,
    Tim

  • Dit vind ik meer overzichtelijk met if elses enzo

    PHP
    if (3>4) { //Kijk of 3 groter is dan vier, zoja returned hij true anders false *uitleg voor noobies*
            echo  '3 is groter dan 4'; //true
    } else {
            echo '4 is groter dan 3'; //false
    }


    Ik vind het erg vervelend als er spaties worden gebruikt in ( en ). Maar ik vind het ook erg vervelend als dat niet word gedaan bij .$blabla. dus . $blabla .

  • Of je de HTML en PHP code van elkaar scheidt heeft niets te maken met code stijl maar is gewoon een goed design principe. Je view wil je altijd apart houden, waarin die ook geschreven is.


    Ook de keuze voor procedureel, functioneel of object georiënteerd programmeren zegt ook niks over de code stijl. Als je PHP programmeert zou ik aanraden object georiënteerd te programmeren.


    Belangrijkste tip van mij kant is: Gebruik een IDE! Zelf gebruik ik Netbeans, en mijn code is perfect uitgelijnd, de accolades staan op hun plek, witregels worden goed geplaatst en spaties staan goed als ik op Ctrl + Alt + F heb gedrukt.


    Let daarnaast op dat je methoden niet langer worden dan +/- 20 regels code, zet de private methoden onderaan in je classes, en order daarnaast op belangrijkheid: de belangrijkste code eerst. Houdt ook zeker een code standaard aan. Zo beginnen classes met een hoofdletter, methoden met een kleine letter en worden constanten geschreven met hoofdletters gescheiden door underscores.


    Ah, en een verassing: Code commentaar moet je vooral niet teveel doen! Een mooi voorbeeld (Java), wat komt uit een project waar ik ongeveer 3 jaar geleden ook op zat:


    Code
    /**
    	 * Return the string applicationId.
    	 * @return The application id as a string format.
    	 */
    	public String getApplicationId() {
    		return applicationId;
    	}


    You don't say?! Tuurlijk return't de methode een applicationId! Dat zegt de methode naam namelijk al! En natuurlijk is dat een string! Dat staat er niet voor niets! Moraal van het verhaal: Noem je methoden, parameternamen en variabelen goed, dan hoef je ook niet zoveel van die saaie, en vooral domme Javadoc te schrijven.

  • Of je de HTML en PHP code van elkaar schijt ...


    haha winning :thumbup:


    ot: ik gebruik altijd veel enters in mijn script en comments
    als je begint met een nieuw stuk code zet het er dan bij.
    zo weet je precies waar je een stukje hebt staan en als er iets mis is in je script kun je het gemakkelijk terug vidnen.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!