程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> 要進村啦--說一說程序開發流程,進村程序開發

要進村啦--說一說程序開發流程,進村程序開發

編輯:JAVA綜合教程

要進村啦--說一說程序開發流程,進村程序開發


終於可以寫有一點意思的代碼。接下來,會通過幾個小例子,來學習java,不過開始之前,先說說按什麼步驟來寫程序, 每個人都有自己的開發習慣,此處也並非標准的步驟,所以此處也只是對像我一樣的小白的一個參考。

按照慣例,看看這次的內容:


 

一、寫一個程序的步驟

剛介入編程世界時,都是練語法,然後寫個xx管理系統,都是想起來啥寫啥,毫無章法可言,但要成為一個優秀程序員的,必須得有一套完整的程序開發流程,這會讓你更快,更清晰的開發項目。

寫每個類時都是按照  "偽碼 --> 測試代碼 -->目標代碼" 來寫的,這是一個好方法,反正誰用誰知道,用了之後再也戒不掉。


二、為什麼要先寫測試代碼呢?

這個思想來源於極限編程,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.

你今天的一切源於昨天,同樣你明天的一切取決於今天的表現。

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved