Come scegliere tra diversi modi di scrivere del codice?

0

Vorrei convalidare il punto in una coordinata cartesiana rettangolare bidimensionale. Ho trovato la seguente soluzione di espressioni regolari su stackoverflow ^(\-?\d+(\.\d+)?),\s*(\-?\d+(\.\d+)?)$  . Un'altra soluzione sta usando pochi controlli PHP:

    $xy = explode(",", "-3,3");
    $return = array(0,0);

    if(is_array($xy) && count($xy) == 2) {
        $return = $xy;
        foreach($xy as $digit) {
            if(!is_numeric($digit)) {
                $return = array(0,0);
                break;
            }
        }
    } 

Sebbene la soluzione dei secondi sia "più grande", preferisco questa per la leggibilità. Quali elementi dovrei usare per fare la scelta giusta tra queste due soluzioni?

    
posta Wojciech Szczurek 26.11.2014 - 21:55
fonte

1 risposta

3

Ecco alcuni punti che dovresti prendere in considerazione:

  • Readability : le espressioni regolari lunghe sono difficili da comprendere. Utilizza i commenti (e alla fine interrompi un'espressione lunga in più piccoli, se possibile) per renderla più facile da leggere. Allo stesso tempo, la parte del codice PHP nella tua domanda può (e dovrebbe) essere rifattorizzata per renderla più leggibile.

  • Leggibilità per i programmatori principianti : se la tua squadra ha programmatori per principianti, potrebbero essere completamente persi e inorriditi di fronte a una lunga espressione regolare. Allo stesso modo, i principianti potrebbero preferire lo stile imperativo troppo funzionale .

    In caso di dubbio, parla con la tua squadra. Chiedi se tutti stanno bene usando le espressioni regolari. Mostra questo (con commenti) e chiedi se lo capiscono. Se lavori con sviluppatori esperti, puoi anche aggiungere commenti, quindi introdurre un errore nell'espressione stessa e chiedere loro se notano qualcosa di sbagliato.

  • Prestazioni : misura ampiamente entrambe le soluzioni. Potrebbe essere che l'uno sia terribilmente lento rispetto ad un altro. Non indovinare-misura.

    Nota che se entrambi sono conformi alle tue aspettative, non dovresti prendere in considerazione l'elemento di prestazione. Ad esempio, se prevedi di eseguire il codice in 5 ms. E un pezzo di codice impiega 14 μs, mentre il secondo richiede 960 μs, non prendere il primo solo perché è più veloce.

  • Manutenzione : se prevedi che il codice venga modificato, pensaci due volte. Sarebbe facile modificare l'espressione regolare (una volta che è stata commentata correttamente)? È sicuro modificare il codice senza rompere nulla?

    Avere test di regressione garantisce di poter modificare il codice senza romperlo, ma non è questo il punto. Se il codice è difficile da modificare, nessuno oserà toccarlo, anche con i test di regressione.

Infine, devi ovviamente capire entrambi per scegliere quello giusto per te / il tuo progetto / la tua squadra. Ciò significa che:

  • Dovresti essere in grado di aggiungere commenti pertinenti all'espressione regolare,

  • Dovresti riuscire a vedere qualcosa di sbagliato nel codice PHP che hai copiato e in grado di refactarlo.

risposta data 26.11.2014 - 22:16
fonte