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
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