Arduino è pensato per essere un modo semplice per persone non tecniche e quindi si nasconde il più possibile dalla semplice vista per essere semplice.
Per un semplice progetto funziona a spese di copiare le librerie qua e là e usando "IDE" di Arduino. Chiamare i programmi "schizzi" e manipolarlo per nasconderlo, che è in C ++. E così via e così via.
Se vuoi realizzare progetti più complicati, controllo della versione, buon ambiente e simili, devi abbandonare "semplicemente Arduino Way" e iniziare a utilizzare strumenti più potenti e complicati.
Personalmente uso
https://github.com/sudar/Arduino-Makefile
https://github.com/ladislas/Bare-Arduino-Project
e l'ho nei repository GIT.
In questo modo posso condividere le librerie tra progetti in gruppo, anche collegamenti a librerie al di fuori della struttura ad albero, nonché gits submodules, entrambi che consentono di avere librerie aggiornate di terze parti disponibili per tutti i progetti, anche quelli vecchi.
Uso ancora molto Arduino (come setup / loop, digitalRead e simili), ma uso anche costrutti g ++ "normali". Più tardi divergerò ancora di più con il semplice codice C / g ++ / .. probabilmente, usando qualche RTOS o giù di lì, ma ora le mie esigenze non sono ancora così lontane. (google "arduino rtos" Sto attualmente leggendo https://github.com/greiman/NilRTOS-Arduino )
Arduino non vuole essere comunque la "migliore pratica". È pensato per essere "un modo semplice e veloce per fare qualcosa, quando non sai nulla". E funziona, dato che chiunque e il suo cane possono iniziare con Arduino e, se interessati, può andare più lontano da solo, o può restare facile e divertirsi comunque.