Root / Assembly / ARCCore / AREnumType / DocumentationOnlyEnum / ARConcepts / _Member / AvoidingRepetition
|Description||Avoiding repetition, the overarching philosophy that inspired the rest of AgoRapide.|
By repetition we mean all kinds of tasks that are similar to each other, both:
1) Within an application and
2) Across different applications.
Some examples of 1) are documentation, logging, debugging and business reporting.
These are actually quite similar problem domains and therefore handled in AgoRapide by a lot of common code.
(see ARCQuery for more information about reports / queries).
Some examples of 2) are creation of database tables, creation of C# objects, implementing properties for objects, populating objects, validating properties (and handling the unknown / null / maybe scenarios), traversing entity relations, creating API-methods (building API endpoints), writing unit tests.
These are quite similar across applications and should not demand much ApplicationSpecificCode
Every time that we developers see such patterns of repetition we try to factor out the common component.
AgoRapide has been created for the purpose of making this process easier.
The advantages of this are self-evident: Less code, less complexity, easier debugging, more meaningful workdays as a programmer and so on and so on.
We do especially want to remove some of the friction resulting when working with a system where you know that some common functionality for dealing with a problem really should have been implemented. But since it was not available from the start it is too time-consuming to implement now, meaning that instead a lot of kludges get scattered all over the code in order to at least cover some emergency needs. It all ends up with an in-overall inefficient and costly to maintain system.
To quote Paul Graham 'The shape of a program should reflect only the problem it needs to solve'
(Paul Graham - Revenge of the Nerds, http://www.paulgraham.com/icad.html ).
By utilizing AgoRapide your application will hopefully accomplish this (but maybe we should have written AgoRapide in Lisp though).
'Fools ignore complexity. Pragmatists suffer it. Some can avoid it. Geniuses remove it.'
(Alan Perlis, Epigrams on Programming, 1982, ACM SIGPLAN Notices #58, https://en.wikiquote.org/wiki/Alan_Perlis#Epigrams_on_Programming,_1982 ).
However, we also have this gem, not to be forgotten:
'Everyone knows that debugging is twice as hard as writing a program in the first place. So if you're as clever as you can be when you write it, how will you ever debug it?'
(Brian Kernighan, The Elements of Programming Style, https://en.wikiquote.org/wiki/Brian_Kernighan ).
AgoRapide's level of abstraction is already close to this territory (about debugging is twice as hard). However, your resulting application will hopefully require much less cleverness thanks to AgoRapide, so at least you can debug your own code very easily (see also AssertionsAndDetailedExceptionMessages).
|LongDescription||In ARCAPI you will find a quite intruiging case with BaseController where the API-routing information is exposed with the same mechanism that answers REST queries.|
Generated 2020-10-13 11:11:01.066 UTC