浅谈程序设计

快要毕业了,这里为同学们分享一下我学习编程的过程以及我的一些关于程序设计的理解,希望会对你们今后的学习有所帮助。如果有不同的观点,欢迎评论留言~

我对程序的理解

根据我对程序的理解,把程序简单分为一下五个部分: 数据获取 –> 数据处理 –> 数据传输 –> 界面展示 –> 数据保存

  1. 数据获取:从数据库或者网络获取所需要的数据。
  2. 数据处理:把数据处理为用户可以看懂的数据,可能会用到算法数据结构(比如:高德地图的路线查询,就是把许多特征点的数据取出来,通过复杂的算法,计算出亮点之间的最短路径)。
  3. 数据传输:这里可能会涉及到一些基础的编程知识,同线程之间的数据传输、线程之间的数据传输、进程之间的数据传输、网络之间的数据传递等。
  4. 界面展示:把得到的数据展示给用户,网址用html、css、js,Android APP使用View、ViewGroup等。
  5. 数据保存:把用户行为或修改过的数据保存到本地数据库或者网络。

需要具备的能力

程序语言基础知识:用Java作为例子,有Java集合类、泛型、反射动态代理、并发基础 架构设计及设计模式:下面会具体说到 算法数据结构:全靠练~

架构设计

先来一张程序的大致架构,如图:

程序架构.jpg

  • model:也就是java benn
  • module:业务模块
  • interface:业务接口
  • Controller:控制器
  • UI:包含界面设计及代码实现

接下来说一下一个软件制作的大致流程分析:

需求分析

首先要对所做的东西进行需求分析,要明确一下几点:

  • 功能特色及业务分析
  • 明确具体功能
  • UI设计

model

model也就是java been,有些软件中,此部分也包含数据库的操作,视情况而定。 首先要尽可能的写出软件中用到的model。下图中是一个软件的用户类:

model.jpg

业务接口

要进行业务模块的详细划分,以及业务接口实现。 此部分多用于一些大项目,需要多人协作的,可能对于学生或者一些简单应用来说显的没有那么重要,但还是希望我们平时练习的时候多想这方面考虑,以锻炼我们编程的思维模式。

业务划分.jpg

业务实现

继承上面的业务接口,实现具体的业务功能,此出可以分配不同的业务给多人,以合作完成,并且可以根据已设计好的业务接口来完成Controller和UI部分。

网络访问接口实现.jpg

优化

对于一个新手来说,要做一个完成的系统的时候可能无从下手,也考虑不到架构这方面,那就先从你的个人理解去做吧,不过功能大概做出来之后,希望你们对它进行思考、重构、优化~ 优化包括一下几个方面:

  • 框架重构:MVC、MVP、MVVM等。
  • 业务变更:新增或者删除业务功能,使代码有良好的可拓展性,同学们可以多看一下与设计模式相关的书。
  • 性能优化:加载运行速度、内存分配、数据库优化等。

如果说一两个月可以完成一个软件,那么这个软件的维护时间至少在一两年,在优化项目的同时也可以让我们获取不少知识。我在校期间做过4、5个项目,但是都是做完之后就扔了,没有再去优化,Android的更新速度也快,以至于现在都不忍心看以前的代码,所以对以前做过的东西忘了很多,甚至都不知道一些关键功能是怎么实现的,虽然做了很多,但效果甚微… 建议同学们在校期间完成一到两个项目就可以,不管我们之前写的代码有多烂、但最好也要对其不断的进行重构、优化。优化的同时,可以自己总结出一个Lib包,其中可以包含:基类、工具类、常用控件封装等。

算法、数据结构

对于算法、数据结构,个人认为天赋只占10%,剩下的还需要我们自己多多练习,这里给大家一些学习资源,牛客网上也有相关题目

  1. 《剑指offer》
  2. 《程序员面试金典》
  3. LeetCode

作 者:ChanghuiN 原文链接:http://www.hchstudio.cn/article/2017/b467/ 版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏CSDN技术头条

如何为微服务选择数据库

作者 | Jeff Carpenter, InfoWorld 翻译 | Jackyrong 你的微服务架构需要多种数据模型。你是应该选择混合持久化呢还是多模型数...

256100
来自专栏腾讯移动品质中心TMQ的专栏

【Android场景化性能测试专栏】CPU耗电性能篇

承接《Android场景化性能测试-方向与框架篇》,本篇详述CPU耗电的具体测试方案和简单问题定位方法。

44810
来自专栏带你撸出一手好代码

极简主意编程

模拟几个工作场景 1 开发:新部署的程序在线上环境跑不起来,但是在测试环境运行正常,运维帮忙看看是不是环境安装有问题 运维:所有软件都是原模原样从测试机拷贝过来...

33160
来自专栏JAVA技术zhai

千万级流量的优化策略实战

性能优化涉及面很广。一般而言,性能优化指降低响应时间和提高系统吞吐量两个方面,但在流量高峰时候,性能问题往往会表现为服务可用性下降,所以性能优化也可以包括提高服...

67850
来自专栏开源优测

简单谈下性能测试

最近一直有人在QQ群或微信群或直接问我关于性能测试实践过程中的一些问题,归纳起来大体侧重以下几个方面: 看不懂或是没看报错信息 工具使用不熟,对很多参数的...

29750
来自专栏云计算D1net

私有云管理工具大比拼

本文,我们将对业内领先的第三方私有云管理工具进行比较,并为你的环境选择提出正确的建议。 随着越来越多的企业采用了私有云,对于相关管理软件的需求也变得迫切而明显。...

55540
来自专栏ThoughtWorks

性能测试问题与思考 | 洞见

性能测试对于大部分测试人员都是一个神秘地带,因为在很多公司,性能测试都是由一个性能测试团队来做,所以普通测试人员没有机会接触到真实的性能测试,因而很难学习到很多...

12520
来自专栏Python爬虫与算法进阶

Python分布式微博爬虫(源码分享)

项目地址:https://github.com/ResolveWang/weibospider 作者:resolvewang ? 关于本项目 实现内容包括用户信...

54560
来自专栏CSDN技术头条

浅析:如何构建稳定的系统

作者:Jesper L. Andersen 原文:How to build stable systems 译者:孙薇 准备工作 第一个决策是最简单却最为重要的...

23060
来自专栏小程序·云开发专栏

云开发初探 —— 更简便的小程序开发模式

小程序诞生以来,业界关注小程序前端的技术演进较多,因此众多小程序前端的框架、工具也应运而生,前端开发效率大大提高,而后台的开发技术则关注不多,痛点不少,具体痛在...

1.4K200

扫码关注云+社区

领取腾讯云代金券