浅谈程序设计

代码星冰乐

专注成就未来

首页 归档 关于

浅谈程序设计

Apr 27, 2017 | ChanghuiN | 总结 | 阅读
文章目录
  1. 1. 我对程序的理解
  2. 2. 需要具备的能力
  3. 3. 架构设计
    1. 3.1. 需求分析
    2. 3.2. model
    3. 3.3. 业务接口
    4. 3.4. 业务实现
    5. 3.5. 优化
  4. 4. 算法、数据结构

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


由于版权原因,请阅读原文 --> 浅谈程序设计

关注我们

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

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

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

我对程序的理解

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

  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
原文链接:https://www.hchstudio.cn/article/2017/b467/
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。

分享
总结
大学四年南锣鼓巷一游
微信关注我们
分类
  • Android8
  • Go4
  • Java59
  • Kafka,Java1
  • Kotlin2
  • Linux1
  • MapReduce1
  • Python2
  • Raft1
  • Redis1
  • ThreadPoolExecutor1
  • go1
  • 工具1
  • 总结8
  • 旅游日记1
标签
Nginx ChanghuiN haifeiWu Android Java 设计模式 hexo Kotlin 算法 MySQL 源码解析 Python Redis golang web Kafka 配置中心 总结 性能优化 旅游日记 Shell Go 问题排查 译文 Docker Spring Boot 工具 学习笔记 WebFlux 性能测试 go 散列表 源码 netty Raft
最近文章
  • Kafka的日志复制机制
  • 从20到21
  • go 并发编程
  • 【译】了解Linux CPU负载-您何时应该担心?
  • Zookeeper 与分布式锁
  • 基于Redis的分布式锁到底安全吗?
  • 【译】Raft 学生指南
  • ThreadPoolExecutor 的简单梳理
  • MapReduce 的简单实现
  • 使用 Map 实现策略模式
福利专区
    免费SSL证书
      阿里云红包
        腾讯云专属福利
        Copyright © 2021 代码星冰乐. Powered by ChanghuiN. 版权所有 晋ICP备15001365号
        特别感谢: 云服务器服务商 、 CDN 服务商