The Unity XR API is steadily evolving to make it easier to manage different XR devices to make your code more platform agnostic. However, the API is a mix of new and old code, and there aren't a lot of well documented best practices or examples.
I've created an example on GitHub demonstrating a method for utilizing Unity's XR API to handle device connections and controller input. It includes a Player class with controllers that are loosely coupled and mostly abstracted from the XR device currently connected, allowing for easier cross platform development.
This first version supports Unity 2019.1.0f2.