C'è molta conversazione sulle migliori pratiche 1 nello sviluppo del software. Ho visto almeno tre punti importanti discutere molto sia su SE che altrove:
- Cosa si qualifica come best practice e perché?
- Vale la pena discutere delle migliori pratiche in primo luogo, perché è ragionevole affermare che nessuna pratica è una "migliore" pratica?
- Quando dovresti rinunciare a una best practice - o forse la maggior parte delle best practice - perché non sembra applicabile o a causa di vincoli esterni (tempo, denaro, ecc.) Che rendono impraticabile il trade-off?
Qualcosa che sembra emergere molto meno spesso, ma più che mai, è una nozione di buon senso nello sviluppo del software. L'esperienza recente mi ha riportato di nuovo in mente questa nozione.
La mia impressione iniziale è che si tratta di una discussione diversa rispetto alle migliori pratiche, ma forse con qualche impollinazione incrociata.
Quando penso al buonsenso in generale, penso a una serie di regole che hai imparato o che ti hanno insegnato che ti danno una base per ragionare e prendere decisioni. Seguire il buon senso è un buon modo per evitare di sparare a tutta la gamba. Ma al di là di una base piuttosto bassa, il buon senso lascia il posto alla necessità di prendere decisioni educate e le decisioni istruite possono persino prevalere sul buon senso quando l'evidenza sembra abbastanza convincente. Potrei essere un po 'lento con la definizione qui, ma penso che sia abbastanza vicino da guidare il mio esempio.
Quando penso al buon senso nello sviluppo del software, penso a tutte le regole dell'igiene di base per impedire a una base di codice di decadere 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 semplicemente incomprensibili casuali; cose che probabilmente assomigliano molto a ciò che siamo chiamati a definire anti-pattern. Laddove applicare le migliori pratiche l'analogo pratico ai modelli di apprendimento, applicare il buon senso potrebbe essere visto come un analogo pratico dei modelli di apprendimento.
Con questo in mente, vorrei porre alcune domande per cui vedere le risposte degli altri potrebbe aiutarmi a ragionare su questo.
Altri credono che vi sia una nozione di buon senso nello sviluppo del software? Sarebbe interessato a conoscere il ragionamento in entrambi i modi.
In tal caso, vale la pena discuterne? È qualcosa che dovremmo spingere tanto quanto a volte facciamo con le migliori pratiche? Vale la pena spingere per qualcosa di ancora più difficile?
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 una base di codice di deviare dal senso comune? Sembra irragionevole che la risposta sia "per niente", perché a volte l'opportunità richiede deviazioni. Ma sembra un diverso tipo di argomento 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 degno di una domanda di follow-up tutta sua, che tipo di raccomandazioni indicheresti che sembrano questioni di buon senso?
Anche altri pensieri sono i benvenuti.
1 Forse farei meglio a chiamarli "modelli di dominio comunemente ricorrenti", ma il nome "best practice" è abbastanza comune da far sapere a tutti cosa sono, anche se non sono d'accordo. Se la parte "migliore" ti disturba, immagina di aver sostituito le "migliori pratiche" con un suono meno autorevole.