A programação declarativa pode aumentar significativamente a produtividade dos programadores. Em particular, a biblioteca DePro oferecida a sua atenção ao programar aplicativos cliente-servidor fornece um aumento de produtividade de 3-5 vezes em comparação com linguagens imperativas, como, por exemplo, java, kotlin.
A classe de aplicativo cliente-servidor é grande o suficiente. Inclui tipos de aplicativos como: m-commerce, comércio P2P, serviços, bancos e finanças, viagens, mensageiros instantâneos e redes sociais, condicionamento físico e saúde, etc.
Essa aceleração se deve ao fato de que na programação declarativa descrever apenas "O QUE precisa ser recebido?", Mas não "COMO fazer isso?".
Para ilustrar as diferenças entre programação declarativa e imperativa, considere o seguinte exemplo simples.
Na atividade mostrada na figura, há um fragmento (circulado por uma linha vermelha).

A marcação para esse fragmento é simples: existe apenas um RecyclerView com id recycler. A marcação para itens da lista está no arquivo item.xml. Os dados estão localizados em . Os nomes (id) dos elementos de marcação correspondem aos nomes correspondentes nos dados provenientes do servidor.
(). (MVP).
.
Item – , .
Adapter – RecyclerView.Adapter. , List. , , : getItemCount – ; onCreateViewHolder – View item.xml MyHolder; onBindViewHolder — MyHolder ( ). MyHolder .
Presenter — RxJava Retrofit. URL. iView ( MyFragment).
iView – MyFragment.
MyFragment – Fragment. . ( List.) , . , , , .
. , . — . URL, RecyclerView item.xml.
— , , . , :
recycler(URL, R.id.recycler, R.layout.item);
DePro. , :
component(TC.RECYCLER, model(URL), view(R.id.recycler, R.layout.item_news))
component – ; TC.RECYCLER – ( RecyclerView); model(URL) – , URL; view id recycler- .
, .
DePro . (, , , ...) .
. :
activity( , id )
: activity(“splash”, R.layout.activity_splash)
.
: fragment(“auth_phone”, R.layout.fragment_auth_phone)
. MVP.
:
.component(TYPE, model(...), view(...), navigator(...))
TYPE — , SPINNER, DRAWER, RECYCLER, MENU, MAP, PAGER .. model(...) . , , URL. view(...) , . navigator(...) . , navigator(start(R.id.video, YOUTUBE))
, R.id.video YOUTUBE. navigator- .
, :
activity(String name, int layoutId)
.component(TYPE, model(...), view(...), navigator(...))
. . .
.component(TYPE, model(...), view(...), navigator(...));
5 — 10 .
DePro :
- java (SLOC) 40-50 .
- ( XML — ) 15 — 20 .
- ( XML — ) 3 — 5 .
- 2 — 3 .
. Github.
No próximo artigo, descreveremos o ciclo completo de desenvolvimento de aplicativos usando a biblioteca DePro.