As we have seen from the exercise, Xamarin.Forms provides a solid approach to dramatically increase the amount of code reused across your mobile apps; it has many great features:
XAML is a great way to define user interfaces and allows you to create properties and assign event handlers in a convenient, concise way
The data binding capabilities are great and eliminate a lot of tedious mind-numbing code from being written
The DependencyService API provides a great way to access platform-specific capabilities
The Renderer architecture provides for ultimate customizability
However, at the time of writing this book, Xamarin.Forms is still somewhat immature, and there are some weaknesses:
There is no visual designer for the XAML code, so you have to construct your UI and run the app to see it visually rendered
Due to the newness of the framework, there is a limited number of examples available for reference, and many of the examples use code to construct the UI rather than XAML
Validation capabilities seem pretty weak
These criticisms should not be taken too strongly; cross-platform UI frameworks are tough to build, and I feel confident that Xamarin is on the right track and will evolve the framework rapidly.