2015 August 25

Android 结合流程图模块化编程

关于流程图的绘制,不需要多说,一般我们在学校用的较多的是算法流程图指导算法实现。但是今天在Leader指导下,才知道软件商业开发中厉害的系统流程图,结合系统流程图完成结构化程序设计,从抽象到具体,逐步精确化编程。在抽象到具体实现过程中按照功能模块化组装的方式进行,模块化代码填充。

按照这种方式写出来的代码,思维逻辑清晰,结构紧凑,不会出现随想随写的现象。这次在实现整个模块的过程中,最开始觉得自己的代码结构还比较清晰,自己也还能记住写到了哪里,但是随着代码功能的增加,代码总体的扩增导致自己思维开始出现零散点,有时候写了后面忘记了前面。

其实这种方式不是第一次接触了,只是以前感触没有这么深,自己废九牛二虎之力,费尽心思弄得自己焦头烂额,也没有高质量的解决问题,反倒自己觉得拖沓,同时一个复杂功能自己长时间完成不了正反馈周期延长化,又导致自己心情低落,这种种情景的累积,当这种模块化编程方式这个时候出现,对比实在太过于鲜明,参照按照功能模块分析的流程图,伪码结构化一一实现,再在伪码结构上精细化编程实现。

总结功能模块化编程实现整体过程,实质可以利用算法中的分治思想类比,将复杂模块逐步抽象,抽离出来一一实现,最终组合成整体系统:

  • 根据需求,分析系统流程图——此时的流程图可以看作是第一步拆分
  • 视情况判定是否已经可以进行第一步伪码编写,构建系统框架
  • 进一步拆分系统模块中较为复杂的部分,分析绘制流程图
  • 伪码编写的二次精细化伪码实现
  • ……

按照这类方式,拆分逐步完成,最后系统整体框架将跃然纸上,剩下的工作将是根据各个方法或者类单位所分析指定的细小功能模块。同时,在编程过程中主线将更加清晰,由于各个模块流程图的存在,以及伪码的存在,注释的编写工作也将大大简化。

比如此次我要完成的功能模块中可以拆分为视图的初始化加载显示,Json数据的读取解析,本地图片的选择与缓存显示,数据对象的后台拼装与发送提交。每个模块再细分化,视图如何一一合理展示,基于什么逻辑展示什么对应的视图,Json数据如何解析,解析之后对应到加载哪里,本地图片如何选取,选取了能够获取一串什么数据?获取了如何添加加载到视图………………通过这样的分析,整体的代码结构已然出现,进一步完成由抽象到具体的过程。

onCreate(){
    
    initView();

}

initView(){
    initSpinner();
     ......
}

initSpinner(){
    customedSpinnerAdapter();
    ..........
}

customedSpinnerAdapter(){
    ResdJsonToAdapter();//read data from Json to init the customed spinner
}

ReadJsonToAdaptr(){
    //get JsonObj From String ----IO  

    //IO Option

}

第一次这么清晰的感受到工程与学校实践的差距,要走的路还很长,虚心求教,大胆求证。

上一篇
下一篇
Loading Disqus comments...
Table of Contents