php: standards & fizz buzz

9
php: standards & tdd Zend Coding Standard & Fizz Buzz Fabio Mora @morafabio http://fabio.mora.name 1 giovedì 18 aprile 13

description

slides from a workshop - 2012 coding standars, zend, kata fizz buzz, test driven development

Transcript of php: standards & fizz buzz

Page 1: php: standards & fizz buzz

php: standards & tddZend Coding Standard & Fizz Buzz

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

1

giovedì 18 aprile 13

Page 2: php: standards & fizz buzz

Coding standards

• Linee guida per formattare codice e documentazione

• Servono sempre: progetti individuali e team

• Riguardano 4 ambiti: file formatting, naming conventions, coding syle, inline documentation

• Aiutano a mantenere alta la qualità del codice: più leggibilità, meno bug, più condivisione, più facile da mantenere

2

giovedì 18 aprile 13

Page 3: php: standards & fizz buzz

Coding standards in PHP

• PEARhttp://pear.php.net/manual/en/standards.php

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

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

• Drupalhttp://drupal.org/coding-standards/

3

giovedì 18 aprile 13

Page 4: php: standards & fizz buzz

Zend Coding Standards

4

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

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

Lunghezza della linea

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

Terminatori di linea

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

File Formatting

giovedì 18 aprile 13

Page 5: php: standards & fizz buzz

Zend Coding Standards

5

Classi• Solo caratteri alfanumerici, numeri permessi ma l’uso ne è scoraggiato, l’underscore è il separatore• La prima lettera di ogni nuova parola è maiuscola, il resto minuscolo

File • Solo caratteri alfanumerici, undersocre e dash “-”, nessuno spazio• L’unica estensione valida è .php, a parte per le view

Funzioni e Variabili

• Solo caratteri alfanumerici, numeri permessi ma l’uso ne è scoraggiato, underscore non permesso• La prima lettera minuscola, il resto prima maiuscola (camelCase)• Essere significativi e verbosi• Nelle classi, le funzioni private e protected iniziano con underscore• Variabili: nomi brevi ($n, $i...) permesse solo nei piccoli loop

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

Naming Conventions

giovedì 18 aprile 13

Page 6: php: standards & fizz buzz

Zend Coding Standards

6

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

Funzioni e Metodi

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

Coding Style

giovedì 18 aprile 13

Page 7: php: standards & fizz buzz

Zend Coding Standards

7

Tags PHP • Solo forma piena <?php ?>

Stringhe

• $a = 'Ciao' // No interpolazione, single quote• $a = "Ciao $nome" o "Ciao {$nome}" // Intepolazione, double quote• $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

Array

• No indici negativi• Uno spazio dopo ogni virgola• 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

Coding Style

giovedì 18 aprile 13

Page 8: php: standards & fizz buzz

Esercizio: Fizz Buzz

• Fizz Buzz è un gioco

• I giocatori iniziano a contare da uno e proseguono finchè:

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

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

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

8

giovedì 18 aprile 13

Page 9: php: standards & fizz buzz

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