Sei interessato ai nostri servizi di consulenza?

1 Clicca nella sezione contatti
2 Compila il form
3 Ti ricontattiamo

Se hai bisogno urgente del nostro intervento puoi contattarci al numero 370 148 9430

RENOR & Partners

I nostri orari
Lun-Ven 9:00AM - 18:PM

Prima i commenti, poi il codice

by Simone Renzi / Agosto 18, 2022
Post Image

In questo articolo voglio parlare di un argomento che mi sta molto a cuore e che molti sviluppatori sembrano lasciare in secondo piano. Questo argomento rappresenta, oltre che una innegabile “best practice” nel modo di sviluppare codice, anche una forma di rispetto nei confronti della comunità di sviluppatori e ingegneri che dovranno rimettere mano al codice scritto da qualcun altro: sto parlando dei commenti al codice.

Un mio carissimo Professore universitario, il Prof. Carlo Gaibisso, nelle sue lezioni di “Programmazione strutturata” in linguaggio C diceva sempre questa frase: “Si scrivono prima i commenti e poi il codice”.

Come dargli torto?

Nonostante quella dei programmatori sia una classe di “animali da palcoscenico” nel mondo dell’informatica, e nonostante la preparazione che uno sviluppatore possa avere, è un dato di fatto che sia sempre più facile e immediato leggere qualcosa che appartenga al nostro comune modo di comunicare. È molto più semplice leggere in Italiano di cosa si occupa un algoritmo piuttosto di comprendere cosa faccia un algoritmo scritto in codice; diviene tanto più complesso comprenderlo quanto più è complesso l’algoritmo.

Anche la programmazione orientata agli oggetti congloba la programmazione procedurale. All’interno dei metodi di una classe si programma in modo procedurale.

La programmazione procedurale è così chiamata perché il codice viene eseguito secondo una procedura. Posso scrivere procedure per qualsiasi cosa… Ad esempio se devo calcolare la successione di Fibonacci so che per calcolare il numero al passo n devo prendere il numero precedente e sommarlo a quello ancora precedente.
Pertanto la procedura sarà: partendo da S = 1 1,  f3 -> Prendo f2 lo sommo a f1, e ottengo

S = 1 1 2

Prendo f3 = 2 lo sommo a f2 = 1 e ottengo

S = 1 1 2 3

Prendo f4 = 3 lo sommo a f2 = 2 e ottengo

S = 1 1 2 3 5

Comprenderete che è molto più facile capire istantaneamente la definizione: “Per calcolare il numero ennesimo della successione di Fibonacci sommo i due precedenti” rispetto a fn = fn-1 + fn-2 specie se questa formula è scritta con variabili e cicli all’interno di un algoritmo informatico!

esempio in PHP per il calcolo della serie di Fibonacci senza commenti

<?php
class Fibonacci
{
    public static function calcolaSuccessione($n)
    {
        $n = $n - 2;
        $a = 1;
        $b = 1;
        echo $a . '<br>';
        echo $b . '<br>';
        for ($i = 0; $i < $n; $i++) {
            $c = $a + $b;
            echo $c . '<br>';
            $a = $b;
            $b = $c;
        }
    }
}

Fibonacci::calcolaSuccessione(1000);

esempio in PHP con i commenti

<?php

/** 
 * Fibonacci è una classe per il calcolo della successione di Fibonacci 
 * e la sua verifica
 *  
 * Fibonacci è una classe per il calcolo della successione di Fibonacci
 * la verifica del rapporto aureo attraverso il rapporto tra termini successivi
 * la verifica tramite il triangolo di tartaglia e la verifica tramite 
 * le uguaglianze di Cassini, Catalani e D'Ocagne
 * 
 * @author Simone Renzi
 * @version 1.0
 * @access public 
 * @see http://renor.it
 * 
 **/
class Fibonacci
{
    /** 
     * @method calcolaSuccessione - Metodo statico per calcolare la successione 
     * di Fibonacci per $n termini 
     * @param int $n - Il numero di iterazioni
     * @return void non ha valori di ritorno, stampa solamente a schermo i valori 
     * della serie ad ogni iterazione
     * @access public 
     **/

    public static function calcolaSuccessione($n)
    {
        //Avendo due parametri fissi li rimuovo dalle iterazioni
        $n = $n - 2;
        $a = 1;
        $b = 1;
        //Stampo i due parametri di partenza
        echo $a . '<br>';
        echo $b . '<br>';
        //Ciclo per $n 
        for ($i = 0; $i < $n; $i++) {
            //Calcolo il valore della successione al passo $n
            $c = $a + $b;
            //Stampo a schermo il valore
            echo $c . '<br>';
            //sposto i valori delle variabili
            //f2 diventa f1
            $a = $b;
            //f3 diventa f2, nella prossima iterazione verrà calcolato il nuovo f3
            $b = $c;
        }
    }
}

Fibonacci::calcolaSuccessione(1000);

Posso continuare ad applicare la procedura di prendere i due numeri precedenti all’infinito. Ovviamente calcolare una serie infinita di numeri richiede un tempo infinito quindi si opta per trovare la successione al termine dove è il numero di iterazioni per cui l’algoritmo dovrà eseguire la procedura.

Dalle immagini si nota che scrivere codice commentato in modo virtuoso richiede molte più righe e quindi più tempo ma in caso di manutenzione diventerà tutto estremamente più facile e veloce. Investiamo una piccola parte  del nostro tempo prima per non dover perdere intere giornate dopo.

Procedure

Posso applicare una procedura in qualsiasi contesto, anche per cucinare. Una ricetta altro non è che una procedura: prendere un pentolino, mettere 2 cucchiai di olio extravergine di oliva, aggiungere uno spicchio di aglio, un peperoncino piccante, accendere il fornello e cuocere a fuoco lento, ecc.

Le procedure sono insite all’interno delle funzioni e possono essere combinate tra loro per risolvere problemi più grandi. Tornando all’esempio di Fibonacci, un altro algoritmo potrebbe verificare che il rapporto tra due numeri consecutivi della serie di fibonacci approssima al crescere di sempre di più il rapporto aureo. Una ulteriore funzione potrebbe verificare che la successione ottenuta di n termini considerando la dei termini presenti su ciascuna diagonale del triangolo di tartaglia corrisponde alla successione di Fibonacci, ecc.

Al pari potrei dire che la procedura precedente utile per la preparazione del soffritto deve essere portata avanti al pari della procedure per cuocere la pasta.

Come avrete compreso una procedura si comprende meglio e in modo più veloce se ci sono commenti che ne descrivono i passi.

Si è soliti inserire prima i commenti e poi il codice perché questa pratica ci permette di scrivere codice molto velocemente senza dimenticarci nulla e lasciando agli altri programmatori che dovranno integrare altre funzioni di comprendere velocemente il famoso “cosa serve a cosa”. 

 

Simone Renzi

Scegli un'area

CONTATTACI

Ti risponderemo entro 24 ore

TORNA SU
Avvia Chat
1
Hai bisogno di aiuto immediato?
Ciao
Come posso aiutarti?