客户端-服务器应用程序的Android声明式编程

声明式编程可以显着提高程序员的生产力。特别是,当对客户端-服务器应用程序进行编程时DePro库引起您的注意,与命令式语言(例如Java,kotlin)相比,生产率提高了3-5倍。


客户端-服务器应用程序类足够大。它包括以下类型的应用程序:移动商务,P2P贸易,服务,银行和金融,旅行,即时通讯和社交网络,健身和健康等。


这种加速是由于这样的事实:在声明性编程中仅描述“我应该得到什么?”,而不是“如何做到这一点”。


为了说明声明式和命令式编程之间的区别,请考虑以下简单示例。


在图中所示的活动中,有一个片段(用红线圈出)。


图片

该片段的标记很简单;只有一个带有id recycler的RecyclerView。列表项的标记在item.xml文件中。数据位于标记元素的名称(id)与来自服务器的数据中的相应名称匹配。


(). (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.


在下一篇文章中,我们将描述使用DePro库进行应用程序开发的整个周期。


All Articles