终于可以写有一点意思的代码。接下来,会通过几个小例子,来学习java,不过开始之前,先说说按什么步骤来写程序, 每个人都有自己的开发习惯,此处也并非标准的步骤,所以此处也只是对像我一样的小白的一个参考。

按照惯例,看看这次的内容:

要进村啦--说一说程序开发流程


 

一、写一个程序的步骤

刚介入编程世界时,都是练语法,然后写个xx管理系统,都是想起来啥写啥,毫无章法可言,但要成为一个优秀程序员的,必须得有一套完整的程序开发流程,这会让你更快,更清晰的开发项目。

  1. 首先,你要知道你的程序要有哪些重要的类,确定下来。
  2. 明确一个类要干什么。
  3. 再细化,确定这个类的属性和重要的方法。
  4. 开始写代码,开始要先写测试的代码,用来测试你写的类和方法(为什么要先写测试代码呢?请看为什么)
  5. 写好测试代码,开始写真正的目标代码,一 一 完善你的类。
  6. 写好之后,测试代码。
  7. 调试和修改你的代码(如果不通过测试)、
  8. 明显前边已经完成了程序,这一步干什么呢?找辣妹举办庆功party.

写每个类时都是按照  "伪码 --> 测试代码 -->目标代码" 来写的,这是一个好方法,反正谁用谁知道,用了之后再也戒不掉。


二、为什么要先写测试代码呢?

这个思想来源于极限编程,Extreme Programming(简称XP),这样做可以是你编程更快更简单,我感觉还可以。通过测试代码,你知道的类的方法需要完成什么样功能才算合格,这就很简单啦,你只需让你的编写的类通过测试代码就可以啦,而且,以后有更好的技术实现当下功能时,不怕修改完代码,出现bug,只需通过你原来的测试就行啦,所谓的单元测试好像就是这样的。


 

三、一个小例子践行上边的编程思想

为什么不说XP了呢,这个不是一时能说完的,可以自己查资料。

写一个DotCom游戏,当然没有期望任何的图形界面,新手总是这样干,原来我也是如此啊,以后会有图形界面程序的。java是一种后端语言,组织着一个项目的逻辑关系,所以,还是多练练逻辑吧,不要妄想着用纯java做一个精美的界面。

这是一个攻击达康网络的游戏,感觉好高大上啊,然而它就是一个猜数字的小游戏。在7 x 7的格子上有三个达康公司,每个达康公司,占三个连续的格子。他们的位子随机生成,你通过猜(A0, 或F5),来判断你是否击中目标,没猜中,结果为"miss", 猜中"hit",如果把一个DotCom的三个坐标都猜中,结果为"kill".

要进村啦--说一说程序开发流程

 

 

 

 这个格子是不存在的,你知,我知,玩家知(不知有没有人玩)。不过,我们刚开始写一个真正有意义的程序吗,所以,我们降低难度,化2D为一维。就变成下边的样子啦。

要进村啦--说一说程序开发流程

一步一步来:

这个程序最主要的一个类是是什么?当然是这个DotCom啦。

它有什么主要的功能呢?是击打的对象,有自己的坐标,和检验自己是否被击中。

所以它的属性是:储存所在格子信息的 int[] localCells数组,和一个记录自己被击中几次的属性,int numOfHits。方法:检查自己是否被击中的方法:checkYourself(), 它是有参数的来接受玩家的猜测值,并且有返回结果。所以, String checkYourself(int userGuess).

总结一下主要的属性和方法:

  • attributes:int[] lockaCells ; int numOfHits;
  • methods:String checkYourself(int userGuess).

 当然,还有其他的方法,比如对属性的封装方法,setter(), getter(),这些都不是brain method,所以不提啦。

把主要的方法的伪码写出来:

 1 //不是正规的伪码,讲清楚流程就行
 2 checkYourself(userGuess):
 3     result = "miss"
 4     for(i:localCells)//循环,一一判断userGuess是否等于localCells中的值
 5         if userGuess == i
 6             numOfHits += 1
 7             result = "hit"
 8             break
 9     if numOfHits == 3
10         result = "kill"
11     return result

 

好啦,写real codes,but test codes firstly.

 1 public class Test {
 2     public static void main(String[] args) {
 3         SimpleDotCom dotCom = new SimpleDotGom();
 4         int[] localCells = {2, 3, 4};//指定DotCom的位置,真实游戏中,是随机生成的
 5         dotCom.setLocalCells(localCells);
 6         int guess = 2;//玩家猜的数字
 7         String result = dotCom.checkYourself(guess);//测试的方法
 8         System.out.println("result = " + result);
 9     }
10 }

 

 好啦,写SimpleDotCom:

 1 public class SimpleDotCom {
 2     private int[] localCells;
 3     private int numOfHits;
 4     public void setLocalCells(int[] localCells) {
 5         this.localCells = localCells;
 6     }
 7     public String checkYourself(int userGuess) {
 8         String result = "miss";
 9         for(int i : localCells) {
10             if ( i == userGuess) {
11                 result = "hit";
12                 numOfHits ++;
13                 break;
14             }
15         }
16         if (3 == numOfHits){//这是一个编程规范的一个小细节,不要不注意哦
17             result = "kill";
18         }
19              return result;
20     }
21 }

 

 看结果:

要进村啦--说一说程序开发流程

果然如自己所料啊,今天就到这里。其实这个程序bug多多,你可以试着找找并改改哈,下次,写个更好的。


 

说个细节问题。

大家都知道判断一个数是奇偶的方法,两种最常用的,num % 2 == 0 or num % 2 == 1,可能大家会有点疑惑,这不一样吗?是吗?

要进村啦--说一说程序开发流程

结果就是不一样:

要进村啦--说一说程序开发流程

但是python没有这个问题:

要进村啦--说一说程序开发流程

这是语言特性决定的,所以,以后要用 num % 2 == 0 来判断,不要在用 num % 2 == 1啦,这就是细节的力量。


 每日一句:

Life doesn't just happen for you; you receive everything in your life based on what you've given.

你今天的一切源于昨天,同样你明天的一切取决于今天的表现。

要进村啦--说一说程序开发流程

 

相关文章:

  • 2022-02-08
  • 2021-10-23
  • 2021-12-08
  • 2021-08-23
  • 2022-12-23
  • 2021-10-18
  • 2021-11-06
猜你喜欢
  • 2022-01-14
  • 2021-06-15
  • 2021-10-16
  • 2021-12-28
  • 2022-01-16
  • 2021-10-15
  • 2022-02-22
相关资源
相似解决方案