SlideShare uma empresa Scribd logo
1 de 9
Baixar para ler offline
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

Mais conteúdo relacionado

Destaque

php: back to basics
php: back to basicsphp: back to basics
php: back to basicsFabio Mora
 
Linux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceLinux & Tools: per la piccola azienda e i freelance
Linux & Tools: per la piccola azienda e i freelanceFabio Mora
 
If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)If "Embrace Change" is Hard (@milano-xpug)
If "Embrace Change" is Hard (@milano-xpug)Fabio Mora
 
Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Tanti "piccoli rilasci" con Symfony2
Tanti "piccoli rilasci" con Symfony2Fabio Mora
 
CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013CoderDojo - Galliate, 20 aprile 2013
CoderDojo - Galliate, 20 aprile 2013Fabio Mora
 
The Crossword Game
The Crossword GameThe Crossword Game
The Crossword GameFabio Mora
 
Linux, sicurezza & social hacking
Linux, sicurezza & social hackingLinux, sicurezza & social hacking
Linux, sicurezza & social hackingFabio Mora
 
Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.Se “Embrace Change” è difficile.
Se “Embrace Change” è difficile.Fabio Mora
 
Esame di Stato: idee Hardware e Software
Esame di Stato: idee Hardware e SoftwareEsame di Stato: idee Hardware e Software
Esame di Stato: idee Hardware e SoftwareFabio Mora
 
It was just Open Source - TEDx Novara
It was just Open Source - TEDx NovaraIt was just Open Source - TEDx Novara
It was just Open Source - TEDx NovaraFabio Mora
 

Destaque (10)

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

Mais de Fabio Mora

Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Fabio Mora
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOpsFabio Mora
 
We don't talk about Agile anymore
We don't talk about Agile anymoreWe don't talk about Agile anymore
We don't talk about Agile anymoreFabio Mora
 
A quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingA quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingFabio Mora
 
Quick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingQuick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingFabio Mora
 
Progressive Feature Rollout
Progressive Feature RolloutProgressive Feature Rollout
Progressive Feature RolloutFabio Mora
 
2009 - Quotidiana Legalità
2009 - Quotidiana Legalità2009 - Quotidiana Legalità
2009 - Quotidiana LegalitàFabio Mora
 
LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?Fabio Mora
 
LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?Fabio Mora
 

Mais de Fabio Mora (9)

Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.Esperimenti Kanban: tra economia e teoria delle code.
Esperimenti Kanban: tra economia e teoria delle code.
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
We don't talk about Agile anymore
We don't talk about Agile anymoreWe don't talk about Agile anymore
We don't talk about Agile anymore
 
A quick introduction: Extreme Programming
A quick introduction: Extreme ProgrammingA quick introduction: Extreme Programming
A quick introduction: Extreme Programming
 
Quick Introduction: Extreme Programming
Quick Introduction: Extreme ProgrammingQuick Introduction: Extreme Programming
Quick Introduction: Extreme Programming
 
Progressive Feature Rollout
Progressive Feature RolloutProgressive Feature Rollout
Progressive Feature Rollout
 
2009 - Quotidiana Legalità
2009 - Quotidiana Legalità2009 - Quotidiana Legalità
2009 - Quotidiana Legalità
 
LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?LinuxDay 2009 - Quali programmi?
LinuxDay 2009 - Quali programmi?
 
LinuxDay 2009 - Cos'è Linux?
LinuxDay 2009 - Cos'è Linux?LinuxDay 2009 - Cos'è Linux?
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