C'è molta conversazione sulle migliori pratiche 1 nello sviluppo del software. Ho visto almeno tre punti principali ottenere molte discussioni sia su SE che altrove:
- Che cosa si qualifica come best practice e perché?
- Le migliori pratiche sono anche degne di essere discusse in primo luogo, perché è ragionevole affermare che nessuna pratica è una pratica "migliore"?
- Quando dovresti rinunciare a una buona pratica - o forse la migliore prassi - perché non sembra applicabile o a causa di vincoli esterni (tempo, denaro, ecc.) che rendono impraticabile il trade-off?
Qualcosa che sembra venire meno spesso, ma più che mai, è una nozione di buon senso nello sviluppo del software. L'esperienza recente mi ha riportato di nuovo in testa questa idea.
La mia impressione iniziale è che si tratta di una discussione diversa dalle migliori pratiche, ma con forse qualche impollinazione incrociata.
Quando penso al senso comune in generale, penso a una serie di regole che hai imparato o che ti hanno insegnato a darti una base per ragionare e prendere decisioni. Seguire il buon senso è un buon modo per evitare di sparare per tutta la gamba. Ma al di là di una linea di base piuttosto bassa, il buon senso lascia il posto alla necessità di prendere decisioni istruite, e le decisioni istruite possono persino scavalcare il buon senso quando le prove sembrano abbastanza convincenti. Potrei suonare un po 'sciolto con la definizione qui, ma penso che sia abbastanza vicino per guidare il mio esempio.
Quando penso al senso comune nello sviluppo del software, penso a tutte le regole dell'igiene di base per evitare che una base di codici decada rapidamente in un pasticcio incomprensibile. Ad esempio, cose come: non usare una singola struttura globale per mantenere e comunicare lo stato all'interno di un programma non banale; non usare variabili / metodi / nomi di classi che sono solo chiacchieroni casuali; cose che probabilmente assomigliano a ciò che siamo venuti a definire anti-schemi abbastanza da vicino. Dove applicare le migliori pratiche l'analogo pratico ai modelli di apprendimento, applicare il buon senso potrebbe essere visto come l'analogo pratico dell'apprendimento degli anti-schemi.
Con questo in mente, vorrei porre alcune domande sul fatto che vedere le risposte degli altri potrebbe aiutarmi a ragionare su questo.
Gli altri credono che ci sia una nozione di buon senso nello sviluppo del software? Sarebbe interessato conoscendo il ragionamento in ogni caso.
Se sì, è una nozione che vale la pena discutere? È qualcosa che dovremmo spingere tanto quanto a volte facciamo con le migliori pratiche? Vale la pena spingere ancora di più?
Se l'analogia con gli anti-pattern sembra ragionevole, la regola generale è che gli anti-pattern sono impiegati solo se non c'è altro modo, e anche allora solo in circostanze molto limitate. Quanto si dovrebbe essere flessibili nel consentire a un codebase di deviare dal senso comune? Sembra irragionevole che la risposta sia "non del tutto", perché a volte la convenienza richiede deviazioni. Ma sembra un argomento diverso rispetto a quando impiegare una "migliore pratica". Forse non lo è; se non la pensi così, mi piacerebbe sapere perché.
Questo è molto più aperto e forse meritevole di una domanda successiva a parte, che tipo di raccomandazioni vorresti indicare che sembrano questioni di buon senso?
Anche altri pensieri sono ben accetti.
1 Forse farei meglio a chiamarli "pattern di dominio ricorrenti", ma il nome "best practice" è abbastanza comune che tutti sanno cosa sono, anche se non sono d'accordo che lo sono. Se la parte "migliore" ti infastidisce, immagina di aver sostituito "le migliori pratiche" con qualcosa di meno autorevole.