2008-09-17 54 views
0

我必須爲學生提供Java編程挑戰,我們必須提出一些技術標準來判斷他們的Java應用程序。 基於代碼和文檔,比較和判斷應用程序的最佳方法是什麼?應該使用什麼標準來判斷和比較Java應用程序?

編輯給有關的挑戰更多的細節: 學生們應該不斷提升自己選擇的基礎上的JavaME爲我們的設備(多功能-打印機)之一的應用。該應用程序將在設備上運行,並應使用我們的SDK/J提供的功能,並將通過市場營銷和支持(我的部門)進行評估。他們將在第一步使用模擬器,並且如果他們有資格參加決賽,將會提供真實設備。

回答

1

如果挑戰有一個目標,如寫某種而成的遊戲程序,那麼顯然第一標準應該是如何的目標是通過審查程序來完成。第二個標準(當然對於學生項目)應該是代碼的可讀性和結構。有沒有複製/粘貼的證據?那麼爲什麼不是該部分變成一個函數/子程序/程序?

額外的信用點是使用特別新穎的方法(但如果他們是不明顯的,他們必須有足夠的作者的同行保持它記錄!),以提高效率或功能的代碼。

2

您可以在許多不同的方面判斷出來,我特別找:

使用方法,在需要的地方

學生不應該被複制和粘貼功能;他們應該知道何時創建一個方法,包含什麼。

數據結構的使用

我見過的人使用一個數組來存儲應該是什麼成員變量。例如,

foo[0] = 'icewolf'; 
foo[1] = '119' 

icewolf是你的用戶名,119是你的聲譽得分。學生應改用

String username; 
int reputation; 

或類似的東西。

接口,抽象類,具體類

學生應瞭解什麼時候使用它。如果這是一個Web應用程序,並且他們發現自己實現的doPost方法與每個類中的doGet相同,那麼他們應該創建一個超類,doPost默認只調用doGet。

的代碼的可讀性

從編寫代碼來解釋每一個平凡的聲明勸阻學生。鼓勵學生記錄非平凡的陳述。

我會付的極大關注到他們的設計和完成。我個人會更多地指出一個應用程序,該應用程序的設計比設計更清晰,易於理解,而且遍佈各處。

1

其中很多取決於他們在研究什麼,以及您期望他們提供什麼。

如果他們正在研究成爲程序員,我會讓他們提出一套要求和一份設計文件,其中說明了選擇的方法來滿足這些要求。也讓他們提供一組測試代碼。

之後,

  • 是否功能滿足要求?
  • 設計精良(OO明智)嗎?
  • 算法選擇得好嗎?
  • 他們執行得好嗎?
  • 變量/方法/類命名是否正確完成?
  • 測試的覆蓋率是否良好?
  • 它正確使用Java的功能嗎? (仿製藥等)
  • 代碼是否有很好的評論(非明顯和描述性)?
  • 它通過測試套件嗎?
  • 代碼是否可讀?
  • 它是否可維護?
  • 它解決了相關問題嗎?
  • 該應用程序是否有趣?

混搭根據自己的喜好

2

我認爲答案取決於什麼Java編程挑戰賽。

如果所有項目都試圖解決類似的問題,您是否可以自動化測試,並根據性能進行某種比較?

如果項目必須符合API,是否有一些自動化測試可以針對每個項目運行,誰通過了大多數勝利。

如果這是一個開放式的挑戰,那麼你應該能夠選擇最酷的一個。獲取所有放在網站上的項目,並查看哪些獲得最多的點擊....聽起來有點像沒有0898號碼的極客因素。

我想一個公平的,但耗時的測試會讓你坐和代碼審查項目。

無論是開放還是封閉的挑戰,都有一些工具可以針對代碼庫運行以測量代碼質量。例如JDepends,Clover(單元測試覆蓋)等,但這些都是非常主觀的。

2

您可以使用棉絨檢查器,如CheckStyle,PMDFindBugs。創建一個你認爲他們的代碼應該匹配的配置文件,並查看你獲得了多少違規。

我認爲任何客觀的衡量標準都必須與一些主觀的衡量標準一致,正如許多其他海報所建議的。

+0

Checkstyle不是一個選項,因爲每個應用程序都應在1小時內進行判斷,以保證對每個人都公平。但通常這是個好主意。 – FrankS 2008-09-17 17:54:17

相關問題