SlideShare a Scribd company logo
php: standards & tdd
                              Zend Coding Standard & Fizz Buzz

                       Fabio Mora   @morafabio   http://fabio.mora.name




     1

giovedì 18 aprile 13
Coding standards


                       • Linee guida per formattare codice e
                         documentazione
                       • Servono sempre: progetti individuali e team
                       • Riguardano 4coding syle,formatting, naming
                         conventions,
                                       ambiti: file
                                                   inline
                         documentation
                       • Aiutanopiùmantenere meno bug, più del
                         codice:
                                 a
                                   leggibilità,
                                                alta la qualità
                         condivisione, più facile da mantenere

     2

giovedì 18 aprile 13
Coding standards in PHP


           • PEAR
             http://pear.php.net/manual/en/standards.php

           • Zend
             http://framework.zend.com/manual/en/coding-standard.html

           • Symfony
             http://symfony.com/doc/current/contributing/code/standards.html

           • Drupal
             http://drupal.org/coding-standards/



     3

giovedì 18 aprile 13
Zend Coding Standards
                                        File Formatting

                            • Nei file che contengono solo PHP mai il tag di chiusura ?>
              Generale      • Direttiva __HALT_COMPILER() proibita tranne che negli installer

                      • L’indentazione equivale a 4 spazi
         Indentazione • Sono permessi i tab ma preferiti gli spazi

            Lunghezza • Obiettivo ultimo è di scrivere linee lunghe 80 caratteri
            della linea • La lunghezza massima consentita è di 120 caratteri

          Terminatori • L’unico terminatore di lineaApple eèCRLF (0x0D 0x0A) di Microsoft
                                                     valido quello Unix: LF (0x0A)
                      • Gli standard CR (0x0D) di
            di linea  non sono validi


     4

giovedì 18 aprile 13
Zend Coding Standards
                                       Naming Conventions
                              • Solo caratteri alfanumerici, numeri permessi ma l’uso ne è
                              scoraggiato, l’underscore è il separatore
                  Classi      • La prima lettera di ogni nuova parola è maiuscola, il resto
                              minuscolo
                              • Solo caratteri alfanumerici, undersocre e dash “-”, nessuno spazio
                       File   • L’unica estensione valida è .php, a parte per le view
                              • Solo caratteri alfanumerici, numeri permessi ma l’uso ne è
                              scoraggiato, underscore non permesso
            Funzioni e        • La prima lettera minuscola, il resto prima maiuscola (camelCase)
             Variabili        • Essere significativi e verbosi
                              • Nelle classi, le funzioni private e protected iniziano con underscore
                              • Variabili: nomi brevi ($n, $i...) permesse solo nei piccoli loop

                              • Solo caratteri alfanumerici, numeri e underscore.
               Costanti       • Sempre maiuscolo, l’underscore separa le parole

     5

giovedì 18 aprile 13
Zend Coding Standards
                                            Coding Style


                        • Le parentesi graffe sotto il nome della classe
                        • Una classe per file, l’inserimento di altro codice è scoraggiato
               Classi   • Nome classe, interfacce, eredi sulla stessa linea se possibile
                        • Scoraggiato l’uso di variabili pubbliche e del costrutto var




                    • Le parentesi graffe sotto il nome
         Funzioni e • Funzioni in global scope sono scoraggiate
          Metodi • Nome e argomenti se possibile sulla stessa riga
                    • Uso delle funzioni: gli argomenti attuali separati da virgola e uno spazio



     6

giovedì 18 aprile 13
Zend Coding Standards
                                             Coding Style

          Tags PHP • Solo forma piena <?php ?>

                     • $a = 'Ciao' // No interpolazione, single quote
                     • $a = "Ciao $nome" o "Ciao {$nome}" // Intepolazione, double quote
            Stringhe • $a = "SELECT `id`, `name`" // Evitare l’escape con backslash
                     • $a = 'Ciao' . ' ' . 'Ciao' // Concatenando, uno spazio prima e uno dopo,
                         se si va a capo concatenando, il punto ad inizio linea



                         • No indici negativi
                         • Uno spazio dopo ogni virgola
               Array     • Se si va a capo, la prima lettera allineata al primo elemento sopra, in
                         alternativa chiudere l’indentazione allo stesso livello del nome variabile
                         • Per array associative a capo dopo ogni k => v


     7

giovedì 18 aprile 13
Esercizio: Fizz Buzz


                       • Fizz Buzz è un gioco
                       • Iproseguono finchè:a contare da uno e
                           giocatori iniziano

                        • quando unsi dice “Fizz”
                            suo posto
                                        numero è divisibile per 3, al

                        • quando unsi dice “Buzz”
                            suo posto
                                        numero è divisibile per 5, al

                        • quando lo è sia per 3 che per 5 si dice
                            “FizzBuzz”


     8

giovedì 18 aprile 13
Esercizio: Test Driven Development



                       1. Scrivere il test ed eseguirlo (rosso)
                       2. Superare il test (verde)
                       3. Refactoring del codice (verde)




     9

giovedì 18 aprile 13

More Related Content

PDF
Le Espressioni Regolari e gli Automi
PDF
Nomi Dei Caratteri Della Tastiera
PDF
Perchè Agile? Cambiamenti culturali work in progress.
PDF
cambiare punto di vista
PDF
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
PDF
Shazam to Spotify - spike/demo web project
PDF
L’elefante nella stanza! [con LiquidO™]
PDF
Continuous Delivery di una WebApp - by example
Le Espressioni Regolari e gli Automi
Nomi Dei Caratteri Della Tastiera
Perchè Agile? Cambiamenti culturali work in progress.
cambiare punto di vista
L’elefante nella stanza! [con LiquidO™] - Codemotion 2014
Shazam to Spotify - spike/demo web project
L’elefante nella stanza! [con LiquidO™]
Continuous Delivery di una WebApp - by example

Viewers also liked (10)

PDF
php: back to basics
PDF
Linux & Tools: per la piccola azienda e i freelance
PDF
If "Embrace Change" is Hard (@milano-xpug)
PDF
Tanti "piccoli rilasci" con Symfony2
PDF
CoderDojo - Galliate, 20 aprile 2013
PDF
The Crossword Game
ODP
Linux, sicurezza & social hacking
PDF
Se “Embrace Change” è difficile.
ODP
Esame di Stato: idee Hardware e Software
PDF
It was just Open Source - TEDx Novara
php: back to basics
Linux & Tools: per la piccola azienda e i freelance
If "Embrace Change" is Hard (@milano-xpug)
Tanti "piccoli rilasci" con Symfony2
CoderDojo - Galliate, 20 aprile 2013
The Crossword Game
Linux, sicurezza & social hacking
Se “Embrace Change” è difficile.
Esame di Stato: idee Hardware e Software
It was just Open Source - TEDx Novara
Ad

Similar to php: standards & fizz buzz (20)

PDF
PHP, non lo stesso vecchio linguaggio
PPT
PHP: strutture di controllo e funzioni
PDF
Formato istruzioni e direttive 8086
PPT
Introduzione al linguaggio PHP
PPT
Php Funzioni Built In Barbiera 97
PDF
Pe a2 perl-documentazione
PDF
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
PDF
Laboratorio Programmazione: Visibilita' e tipi di dato
ODP
Espressioni regolari
PDF
Spaghetti code refactoring
PDF
pugBO #10 PSR e Composer
PPT
Corso di php01
PDF
WordCamp Italia 2021: da zero a PHP
PDF
Vb.net
PDF
Slide evento Code Refactoring JavaScript
ODP
PDF
Ruby in 25 minuti
ODP
Creare un proprio linguaggio di programmazione per il web e applicazioni desk...
PDF
Sviluppo web dall'antichità all'avanguardia e ritorno
KEY
Pycrashcourse3.1
PHP, non lo stesso vecchio linguaggio
PHP: strutture di controllo e funzioni
Formato istruzioni e direttive 8086
Introduzione al linguaggio PHP
Php Funzioni Built In Barbiera 97
Pe a2 perl-documentazione
Introduzione al Perl (BMR Genomics) - Lezione 1 Agosto 2014
Laboratorio Programmazione: Visibilita' e tipi di dato
Espressioni regolari
Spaghetti code refactoring
pugBO #10 PSR e Composer
Corso di php01
WordCamp Italia 2021: da zero a PHP
Vb.net
Slide evento Code Refactoring JavaScript
Ruby in 25 minuti
Creare un proprio linguaggio di programmazione per il web e applicazioni desk...
Sviluppo web dall'antichità all'avanguardia e ritorno
Pycrashcourse3.1
Ad

More from Fabio Mora (9)

PDF
Esperimenti Kanban: tra economia e teoria delle code.
PDF
La Unix Way vista da un DevOps
PDF
We don't talk about Agile anymore
PDF
A quick introduction: Extreme Programming
PDF
Quick Introduction: Extreme Programming
PDF
Progressive Feature Rollout
PDF
2009 - Quotidiana Legalità
PDF
LinuxDay 2009 - Quali programmi?
PDF
LinuxDay 2009 - Cos'è Linux?
Esperimenti Kanban: tra economia e teoria delle code.
La Unix Way vista da un DevOps
We don't talk about Agile anymore
A quick introduction: Extreme Programming
Quick Introduction: Extreme Programming
Progressive Feature Rollout
2009 - Quotidiana Legalità
LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Cos'è Linux?

php: standards & fizz buzz

  • 1. php: standards & tdd Zend Coding Standard & Fizz Buzz Fabio Mora @morafabio http://fabio.mora.name 1 giovedì 18 aprile 13
  • 2. Coding standards • Linee guida per formattare codice e documentazione • Servono sempre: progetti individuali e team • Riguardano 4coding syle,formatting, naming conventions, ambiti: file inline documentation • Aiutanopiùmantenere meno bug, più del codice: a leggibilità, alta la qualità condivisione, più facile da mantenere 2 giovedì 18 aprile 13
  • 3. Coding standards in PHP • PEAR http://pear.php.net/manual/en/standards.php • Zend http://framework.zend.com/manual/en/coding-standard.html • Symfony http://symfony.com/doc/current/contributing/code/standards.html • Drupal http://drupal.org/coding-standards/ 3 giovedì 18 aprile 13
  • 4. Zend Coding Standards File Formatting • Nei file che contengono solo PHP mai il tag di chiusura ?> Generale • Direttiva __HALT_COMPILER() proibita tranne che negli installer • L’indentazione equivale a 4 spazi Indentazione • Sono permessi i tab ma preferiti gli spazi Lunghezza • Obiettivo ultimo è di scrivere linee lunghe 80 caratteri della linea • La lunghezza massima consentita è di 120 caratteri Terminatori • L’unico terminatore di lineaApple eèCRLF (0x0D 0x0A) di Microsoft valido quello Unix: LF (0x0A) • Gli standard CR (0x0D) di di linea non sono validi 4 giovedì 18 aprile 13
  • 5. Zend Coding Standards Naming Conventions • Solo caratteri alfanumerici, numeri permessi ma l’uso ne è scoraggiato, l’underscore è il separatore Classi • La prima lettera di ogni nuova parola è maiuscola, il resto minuscolo • Solo caratteri alfanumerici, undersocre e dash “-”, nessuno spazio File • L’unica estensione valida è .php, a parte per le view • Solo caratteri alfanumerici, numeri permessi ma l’uso ne è scoraggiato, underscore non permesso Funzioni e • La prima lettera minuscola, il resto prima maiuscola (camelCase) Variabili • Essere significativi e verbosi • Nelle classi, le funzioni private e protected iniziano con underscore • Variabili: nomi brevi ($n, $i...) permesse solo nei piccoli loop • Solo caratteri alfanumerici, numeri e underscore. Costanti • Sempre maiuscolo, l’underscore separa le parole 5 giovedì 18 aprile 13
  • 6. Zend Coding Standards Coding Style • Le parentesi graffe sotto il nome della classe • Una classe per file, l’inserimento di altro codice è scoraggiato Classi • Nome classe, interfacce, eredi sulla stessa linea se possibile • Scoraggiato l’uso di variabili pubbliche e del costrutto var • Le parentesi graffe sotto il nome Funzioni e • Funzioni in global scope sono scoraggiate Metodi • Nome e argomenti se possibile sulla stessa riga • Uso delle funzioni: gli argomenti attuali separati da virgola e uno spazio 6 giovedì 18 aprile 13
  • 7. Zend Coding Standards Coding Style Tags PHP • Solo forma piena <?php ?> • $a = 'Ciao' // No interpolazione, single quote • $a = "Ciao $nome" o "Ciao {$nome}" // Intepolazione, double quote Stringhe • $a = "SELECT `id`, `name`" // Evitare l’escape con backslash • $a = 'Ciao' . ' ' . 'Ciao' // Concatenando, uno spazio prima e uno dopo, se si va a capo concatenando, il punto ad inizio linea • No indici negativi • Uno spazio dopo ogni virgola Array • Se si va a capo, la prima lettera allineata al primo elemento sopra, in alternativa chiudere l’indentazione allo stesso livello del nome variabile • Per array associative a capo dopo ogni k => v 7 giovedì 18 aprile 13
  • 8. Esercizio: Fizz Buzz • Fizz Buzz è un gioco • Iproseguono finchè:a contare da uno e giocatori iniziano • quando unsi dice “Fizz” suo posto numero è divisibile per 3, al • quando unsi dice “Buzz” suo posto numero è divisibile per 5, al • quando lo è sia per 3 che per 5 si dice “FizzBuzz” 8 giovedì 18 aprile 13
  • 9. Esercizio: Test Driven Development 1. Scrivere il test ed eseguirlo (rosso) 2. Superare il test (verde) 3. Refactoring del codice (verde) 9 giovedì 18 aprile 13