浅谈结对编程

浅谈结对编程


结对编程

  结对编程,是一种敏捷软件开发的方法,极限编程的组成部分。结对编程技术是指两位程序员肩并肩地坐在同一台电脑前合作完成同一个设计、同一个算法、同一段代码或同一组测试。一人充当“执行”角色,只负责编程。另外则负责“观察者”(或“导航”),检测bug和把控整体设计。两个程序员具有相同的缺点和盲点的可能性很小,所以当我们采用结对编程的时候会获得一个强大的解决方案。而这个解决方案恰恰是其它软件工程方法学中所没有的。

  由于自己长时间都习惯了一个人编程,所以在这次结对编程的初期在做项目的过程中就显得比较尴尬,经常是一个人编程,另一个人就不知所措的坐在那里,也不知道该干点什么说点什么。但是随着项目的推进,在编程的过程中会遇到一些问题,两个人的对于项目的讨论也就慢慢变得多了起来。在很多的实现思路都有很激烈的碰撞,经过一系列的讨论最后达成一个一致得答案。通过讨论之后的实现要比自己一个人实现的时候更加顺畅了,因为讨论之后的实现在整体思路上就没有太大的问题了,而自己一个人编程就很容易遇到实现到一半发现走进了死胡同走不出来了,然后只能够把代码推翻重写。

  从结对编程以来,我个人感觉受益是很大的,因为结对编程能够让一部分功能的实现趋近于最优的方式。举个例子来说吧,最开始我个人想的是对于每一个算式,都实例化一个相对应的计算类实例,因为对于每一个算式他的输出结果(分数或小数)是和算式本身相关的,而这个输出结果只有在计算类中进行判别比较直接(省时间),所以我就想在计算类中存储一个算式是否含小数。但是我的partner听了我的想法后就立马否决了,他说完全可以通过传参的方法在计算的时候标志输出结果的形式,而不需要对每一个算式都实例化,因为程序同一时间只对一个算式进行处理,所以只需要设置一个参量标志每次计算时的结果是否要输出小数即可。听了他的陈述后我觉得很有道理,所以最后计划将计算类实现为静态类的形式。在别的函数中直接调用其中的实现。


项目进展

  目前项目实现了如下的功能:

  •   UI初步搭建完毕
  •   数类已全部实现
  •   计算类实现了一半的功能
时间: 2024-10-13 16:20:47

浅谈结对编程的相关文章

iOS开发--浅谈CocoaAsyncSocket编程

Socket就是一种特殊的文件.它是一个连接了两个用户的文件,任何一个用户向Socket里写数据,另一个用户都能看得到,不管这两个用户分布在世界上相距多么遥远的角落,感觉就像坐在一起传纸条一样. 这么讲Socket应该更容易理解吧?这种抽象是非常重要的,因为它屏蔽了更底层的东西,我就想写个程序发送下数据,为什么要关系物理层怎么传输呢,对吧. 所以有了Socket的概念之后,我们在两个客户端之间发送消息可能就是这样的: 指定对方的地址 打开一个和对方连接的Socket 把Socket当成普通的文件

浅谈中文编程

刚刚接触了中文编程,我感觉挺新鲜.可是美国一会,我就觉得,中文编程实在是不咋滴,比起什么C.C++差的不是一两个档次那么简单,说实在的就是一个天上,一个地上.至于哪个是天,哪个是地那就不用我多说了了. 中文编程起步说实在比较晚,比C/C++/Java晚的不是一点两点,而是几十年.中文编程不仅起步晚,而且中文编程语言还非常单一,单一到什么地步?我想很多人都都会觉得很不可思议,因为知道现在2015年,中文编制语言只有一种,那就是易语言.也许很多人会觉得中文编程会降低中国程序员的开发难度,提高开发效率

day10 浅谈面向对象编程

面向对象编程:第一步找名词,名词是问题域中的. 第二步概括名词设计成类.某些名词可以浓缩包含到其它名词中,成为其属性. 第三步找动词,动词也是问题域中的.   第四步概括动词设计成方法.动作的产生往往是对象身上发生的,根据动词动作的产生归纳到所属对象. 第五步根据需求确立方法的参数和返回值.如果在调用的地方,不需要值的返回或者返回的值后面根本用不到,则使用void.反之,如果方法调用的地方需要返回值或者后面其它地方需要用到该方法的结果,则设置相应的返回类型.如果方法中要使用其它地方传进来的值数据

虚拟世界(代码)--浅谈面向对象编程感触

不知不觉已经来到北京一年了,接触编程也一年了,或许我已经不再是那个连HelloWord都要写了N遍都不理解的低级菜鸟了(因为现在是中级了!!~~依旧是菜鸟) 在之前从来没有接触过编程,也不知道什么面向对象编程,面向过程编程.我的代码人生就是从这面向对象编程开始的. 面向对象编程,接触了C#和Java两种编程语言,感触良多(说实话,我现在已经快记不得老师讲过的有哪些重点了).我根据自己所了解的谈谈这段时间的收获. 一.什么是面向对象编程? 最初,老师告诉我们C#和Java都是面向对象编程的语言.那

浅谈MapReduce编程模型

以Wordcount程序为例,简单描述MapReduce程序的编程模型. MapReduce程序组成 MapReduce程序一般分成三个部分: 一个程序主引导部分: 一个Map程序部分: 一个Reduce部分. 主引导部分用来设置MapReduce(以下简称 “ MR” )程序的一些非业务逻辑属性,例如最终生成jar包时指定MR框架执行该程序的入口.MR程序的map和reduce部分是哪个(一个jar包中可能封装了多个程序).map和reduce部分的输出参数类型.输入数据的来源(路径)和输出数

浅谈网络编程

目录 网络编程 C/S架构和B/S架构 网络协议(osi七层协议) tcp/ip五层协议分析 物理层 数据链路层 网络层 传输层 应用层 socket 网络编程 C/S架构和B/S架构 C:client 客户端 S:server 服务端 如:电脑上装的qq,微信等等 B:browser 浏览器 S:server 服务端 如:京东,天猫,7k7k等等 B/S架构的本质也是C/S S 端: ? 1.有固定的ip ? 2.稳定一直在运行,支持并发 网络协议(osi七层协议) 互联网协议按照功能不同分为

浅谈 JavaScript 编程语言的编码规范

对于熟悉 C/C++ 或 Java 语言的工程师来说,JavaScript 显得灵活,简单易懂,对代码的格式的要求也相对松散.很容易学习,并运用到自己的代码中.也正因为这样,JavaScript 的编码规范也往往被轻视,开发过程中修修补补,最终也就演变成为后续维护人员的恶梦.软件存在的长期价值直接与编码的质量成比例.编码规范能帮助我们降低编程中不必要的麻烦.而 JavaScript 代码是直接发送给客户浏览器的,直接与客户见面,编码的质量更应该受到关注. 本文浅谈 JavaScript 编程中关

js---OOP浅谈

js---OOP浅谈 对象化编程-------简单地去理解就是把javascript能涉及到的范围分成各种对象,对象下面再次划分对象.编程出发点多是对象,或者说基于对象.所说的对象既包含变量,网页,窗口等等 对象的含义          对象可以是文字,表单等等.对象包含一下属性-------对象的某些特定的性质方法-------对象能做的事情事件-------能响应发生在对象上的事情     注意:对象只是一种特殊的数据 2.  基本对象                 我们一般划分的角度还是

五 浅谈CPU 并行编程和 GPU 并行编程的区别

前言 CPU 的并行编程技术,也是高性能计算中的热点,也是今后要努力学习的方向.那么它和 GPU 并行编程有何区别呢? 本文将做出详细的对比,分析各自的特点,为将来深入学习 CPU 并行编程技术打下铺垫. 区别一:缓存管理方式的不同 GPU:缓存对程序员不透明,程序员可根据实际情况操纵大部分缓存 (也有一部分缓存是由硬件自行管理). CPU:缓存对程序员透明.应用程序员无法通过编程手段操纵缓存. 区别二:指令模型的不同 GPU:采用 SIMT - 单指令多线程模型,一条指令配备一组硬件,对应32