学生-社团匹配程序

项目流程:

1. 分析讨论

2. 分工合作

3. 代码规范

4. 编码实现

5. 模块结合

6. 测试修改

7. 数据样例

8. 心得体会

9. GitHub链接

结对队友:陈文举 031502109


1.分析讨论

(1)首先分析程序架构

分析结果如图:

(2)了解JSON后对我们编码的影响

JSON是一种数据交换格式,加载对应的6个jar包可以在JAVA上直接使用,所以在数据读入这一块的编码,选择JAVA会方便一些。

2.分工合作

如上图,我们把程序分成了 读写模块和 匹配算法模块

  • 读写模块

    读写模块需要用到JSON,很基础,算是必须要掌握的知识,但是是一项全新的知识,所以需要学习和接受新事物能力较强的人。
  • 匹配算法模块

    而匹配算法模块则需要逻辑思维和数学能力较强的人,所以我主动把这一项交给了我的“奖学金蝉联”队友。

3.代码规范

  • 因为这次我们采用了分开写模块的方式,最后还要拼合在一起才能完成一个完整的程序,之间肯定存在很多数据交换的联系,所以我们使用了一个叫 "TIM"的软件,它有在线多人编辑文档的功能,我们建立了一个“代码规范”文档,上面写了所有如第2点中提及的交换函数的命名以及对应的接口和返回值。

4.编码实现

由于这次Pair Work是在8天的国庆假期中进行的,所以放假前的游玩计划也都泡汤了,前三四天的确拿去玩了,以致于后期的编码工作中感到时间不够,又恰好队友宿舍多了一个空床位,就直接搬过去,开始了没日没夜的编码工作......

  • 几乎从零开始学JAVA

    在前期讨论完决定数据读写模块要用JAVA的时候其实内心已经有预想了,过程肯定是艰难的。在大二下学期期中有开始学习JAVA基础,JAVA对于面向对象的要求更高了,所以一开始学的很吃力,很多东西都理解不来。后来有因为学习数据库,就耽搁了...过了一个暑假几乎也全忘了...所以在开始学JSON之前还去恶补了一下JAVA,参考资料有(链接),还有最强大的即学即用的“百度”。

  • JSON格式、JSONObject、JSONArray

    JSON是一种轻量级的数据交换格式,与XML是同行。我学完之后的理解就是,它对于JAVA编码就相当于一样工具,它是JAVA里的一个类,实质上也是字符串,但跟String相比,比String多了处理“{}”、“[]”、“:”、“,”这些字符的能力,从而能方便我们从大量用JSON格式规范的数据里提炼出对象内容。

JSONObject是可实例化的类,如果一段有“{}”包裹着的JSON格式字符串,可以用JSONObject.fromObject("字符串")把字符串实例化成JSONObject对象。

public static void main(String[] args){
String str = "{\"string\":{\"zi\":\"fu\",\"chuan\":\"chuan\"}}";
JSONObject strobj = JSONObject.fromObject(str);

而JSONObject类里提供一个.getString("字符串")方法,可以提炼出“字符串”后的内容。

	System.out.println(strobj.getString("string"));
}

输出结果为:

{"zi":"fu","chuan":"chuan"}

而遇到有“[]”包裹着的JSON格式字符串,就可以把“[]”中的内容看做一个数组,用JSONArray.fromObject("字符串")把字符串当作实例存入到JSONArray类里。

5.模块结合

  • 实际上,这一步我们还在进行中,由于面向对象的思想还在学习中,很多应该独立出来的算法都没有独立出来,在模块的接口上也有很多没有对接好的地方,在具体的结合后也出现了很多bug,所以还在尽力完成中。

6.测试修改

测试修改目前只有我自己做数据读写模块的样例

7.数据样例

数据样例也只有我自己的

8.心得体会(本次作(aó)业(yè)学到的东西)

  • 之前

    在开始之前,有很多畏惧的东西,因为事情的复杂程度会让人心乱,看不到头就会觉得无比的难。来自某位大神的良言,如果觉得事情很难,那才有我们想挑战的动力,我们需要的是把大化小的能力,然后再想一想,并不觉得完成每一小步很难,差的就是开始做了。

  • 过程

  • 之后

    能用JAVA编码并且喜欢上了JAVA,学会了JSON,顺道知道了XML,结交了良友,多了一段日夜颠倒的奋战经历,离1W行代码又近了一小步,最重要的是知道了自己在这件事情上能花出多大的精力和热情,而且在面对很多人抱怨不喜欢自己所学专业的同时,我能说我并不后悔。

Pair Programming 2的更多相关文章

  1. Pair programming

    Pair programming is an agile software development technique in which two programmers work together a ...

  2. [tmux] Share a tmux session for pair programming with ssh

    By using ssh, you can share a tmux session, making pair programming much easier. We'll learn how to ...

  3. Crystal Clear Applied: The Seven Properties of Running an Agile Project (转载)

    作者Alistair Cockburn, Crystal Clear的7个成功要素,写得挺好. 敏捷方法的关注点,大家可以参考,太激动所以转载了. 原文:http://www.informit.com ...

  4. iOS项目分析及优化

    iOS项目分析及优化  来源:吴白的简书   从代码看一个程序员的笔力 从代码的整洁度上就可以看出一个程序员的实力,规范其实就是让你养成一种良好习惯的标杆,在此面前我们应该顺从.本篇我们以OC为例,统 ...

  5. 哪些问题是面试官经常问Java工程师的问题 ? --- 转自quora

    Which are the frequently asked interview questions for Java Engineers ? Vivek Vermani, www.buggybrea ...

  6. 招聘.NET开发人员(截止于2015-06-15)

    文章更新 2015-06-15 01:00AM: 感谢各位的支持,简历和解决方案接收截止.2015-06-08 08:30AM: 已经收到一些简历和解决方案,正在筛选中.职位仍然开放,欢迎发送简历及解 ...

  7. 关于分工的思考 (Thoughts on Division of Labor)

    Did you ever have the feeling that adding people doesn't help in software development? Did you ever ...

  8. 《Continuous Integration》读书笔记

    Trigger a Build whenever a change occurs. it can help us reduce assumptions on a projecvt by rebuild ...

  9. 大家是怎么做Code Review的?

    先说说我们公司现在的做法,一个团队被人为地分为两个阵营:Senior Developers和Junior Developers,比例差不多是1:1,Senior Developers就担负着对Juni ...

随机推荐

  1. 【精】EOS智能合约:system系统合约源码分析

    系统合约在链启动阶段就会被部署,是因为系统合约赋予了EOS链资源.命名拍卖.基础数据准备.生产者信息.投票等能力.本篇文章将会从源码角度详细研究system合约. 关键字:EOS,eosio.syst ...

  2. ProxySQL 配置详解及读写分离(+GTID)等功能说明 (完整篇)

    ProxySQL是灵活强大的MySQL代理层, 是一个能实实在在用在生产环境的MySQL中间件,可以实现读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行 cache,支持动态加载配 ...

  3. Maven教程(3)--Maven导入工程常见问题(编码、MavenArchiver、Lifecycle Mapping、maven install 没有反应)

    常见错误: 常见错误一:These projects must be migrated to correctly function in this version of MyEclipse 需要修改编 ...

  4. RocketMQ的broker启动失败解决

    RocketMQ的broker用如下命令启动: nohup sh bin/mqbroker -n localhost:9876 & 使用jps查看,系统非常卡顿,broker的名字也未显示.使 ...

  5. python学习笔记01--基础

    一.解释型语言 python是一门解释型语言,这意味着: l  编写过后的代码不用编译连接即可运行,节约调试时间 l  python的解释器在大多数系统中都有很好实现,所以编写的代码可以运行在任何系统 ...

  6. js判断字符串是否在数组中

    先加一个扩展函数: Array.prototype.contains = function (obj) {  var index = this.length;  while (index–) {   ...

  7. linq left join ,inner join ,crossjoin

    inner join : linq 默认使用Inner Join的链接方式,如下面的表达式一样: Left Join: 左链接返回左表的全部数据,以及右表中满足链接条件和不满足链接条件的数据,不满足的 ...

  8. Java文件编译出现 “编码 GBK 的不可映射字符”

    俗话说,温故而知新.本打算用dos回忆一下基础知识,没想到把自己绊倒了. 用Dos,当然就要回归原始,用记事本啦.下面用一个小练习,演示我遇到的绊脚石.之后,解决了简直笑死. 报错: Java文件编译 ...

  9. 【读书笔记】iOS-解析JSON

    JSON相比XML最显著的优点是不需要使用重量级的解析库,因为其本身就是面向数据的,而且非常容易转换成哈希字典.除此之外,JSON文档相比同样的XML文档更小.在网络宽带有限的情况下,你很容易在Iph ...

  10. Html/Css 初步认识笔记

    1.什么是 HTML ? HTML(HyperText Markup Language) 的学名是超文本标记语言. 标记用来表示网页内容要如何显示,自身不显示 .<我就是标记> 标记成对出 ...