Computator.NET is a special kind of numerical software that is fast and easy to use but not worse than others feature-wise. It's features include: - Real and complex functions charts - Real and complex calculator - Real functions numerical calculations including different methods - Over 107 Elementary functions - Over 141 Special functions - Over 21 Matrix functions and operations - Scripting language with power to easy computations including matrices - You can declare your own custom functions with scripting language
GNU General Public License v3.0
234
stars
51
forks
source link
Implement MVVM pattern using ReactiveUI, get rid of MVP #21
MVP is nice for having testable presenter and flat views. However since most desktop and mobile application nowadays use MVVM it will be easier to share code between desktop and future mobile versions of Computator.NET by using MVVM with commond ViewModel and Model parts. There are at least 3 really useful libraries which help to implement MVVM correctly:
MVVM Light Toolkit
MvvmCross
ReactiveUI
Since nearly all our desktop UI code is WinForms (and WinForms is not really MVVM friendly) it should be nice for library of choice to have WinForms helpers and bindings. From those only ReactiveUI meets that requirement and it also works with Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Xamarin Forms, WPF, Windows Phone 8, Windows Store and Universal Windows Platform (UWP). It is more than enough for our needs and it should easily enable us to have mobile and desktop version of Computator.NET in the future.
Summary: move to MVVM using ReactiveUI.
Possible problems: custom controls - should they use MVVM as well? At least they should have internal ViewModel hidden from their API.
MVP is nice for having testable presenter and flat views. However since most desktop and mobile application nowadays use MVVM it will be easier to share code between desktop and future mobile versions of Computator.NET by using MVVM with commond ViewModel and Model parts. There are at least 3 really useful libraries which help to implement MVVM correctly:
Since nearly all our desktop UI code is WinForms (and WinForms is not really MVVM friendly) it should be nice for library of choice to have WinForms helpers and bindings. From those only ReactiveUI meets that requirement and it also works with Xamarin.iOS, Xamarin.Android, Xamarin.Mac, Xamarin Forms, WPF, Windows Phone 8, Windows Store and Universal Windows Platform (UWP). It is more than enough for our needs and it should easily enable us to have mobile and desktop version of Computator.NET in the future.
Summary: move to MVVM using ReactiveUI. Possible problems: custom controls - should they use MVVM as well? At least they should have internal ViewModel hidden from their API.