
Java廣泛的應用範圍與跨平台的特性,專為Java程式開發人員而設置的認證測驗 SCJP,更已成為最受程式設計人員歡迎的認證之一。書中結合Java程式語言概念,物件導向開發實務與SCJP認證命題,必能成為有志成為Java程式開發人員及考取SCJP認證者最佳指引!
電子書下載: 《Java物件導向程式設計與SCJP認證明解》

Java廣泛的應用範圍與跨平台的特性,專為Java程式開發人員而設置的認證測驗 SCJP,更已成為最受程式設計人員歡迎的認證之一。書中結合Java程式語言概念,物件導向開發實務與SCJP認證命題,必能成為有志成為Java程式開發人員及考取SCJP認證者最佳指引!
電子書下載: 《Java物件導向程式設計與SCJP認證明解》
2010年九月一日起,所有Java程式、甲骨文 Solaris、MySQL和昇陽 Solaris的開放式辦公認證等考試已重新出版,全部更名為Oracle甲骨文認證項目。這一變化將不會影響任何考試目標和甲骨文的堅定承諾,這些將繼續成為一些公認的成就最高的專業認證。
如果您目前持有現有的Sun認證且沒有過有效期,證書會將長期有效。您可以隨時升級您的認證技術的最新版本,以獲得一個Oracle專業認證新稱號。如果您在這一過程中準備考試或打算升級您的認證,考試形式和目標的每個考試都是一樣的,所以是沒有影響到那些已經取得的認證。如果你2010年九月一日以後參加考試,您將得到Oracle的專家稱號,並有權使用Oracle的標誌。
在9月1日至3日之間參加考試的考生可能會看到Sun和/或Oracle品牌的商品在註冊考試和考試過渡。 但是請注意:考試的編號(如 310-065 )和實際考試內容(問題、通過分數)將保持不變!請注意:考生參加這些考試9月1日起將獲得甲骨文公司專業的認證,即考試過後將替代Sun昇陽認證稱號。(Oracle官方說明:點此進入)
依據Oracle原廠資料公告,Sun昇陽系列考試科目費用,每科調整為美金125元。考生若欲報名考試,須直接跟VUE報名,已不需要購買考試券。相關考試請先向 VUE完成線上報名預約繳費 網址:www.pearsonvue.com/oracle
| Former Sun Certification Title | New Oracle Certification Title |
| JAVA TECHNOLOGY | |
| Sun Certified Java Associate | Oracle Certified Associate, Java SE 5/SE 6 |
| Sun Certified Java Programmer (SCJP) SE 5 | Oracle Certified Professional, Java SE 5 Programmer |
| Sun Certified Java Programmer (SCJP) SE 6 | Oracle Certified Professional, Java SE 6 Programmer |
| Sun Certified Java Developer (SCJD) | Oracle Certified Master, Java SE6 Developer |
| Sun Certified Web Component Developer (SCWCD) EE5 | Oracle Certified Professional, Java EE 5 Web Component Developer |
| Sun Certified Business Component Developer (SCBCD) EE5 | Oracle Certified Professional, Java EE 5 Business Component Developer |
| Sun Certified Developer for Java Web Services 5 (SCDJWS) | Oracle Certified Professional, Java EE 5 Web Services Developer |
| Sun Certified Enterprise Architect (SCEA) EE5 | Oracle Certified Master, Java EE 5 Enterprise Architect |
| Sun Certified Mobile Application Developer (SCMAD) | Oracle Certified Professional, Java ME 1 Mobile Application Developer |
| Sun Certified JSP and Servlet Developer for the Java EE6 Platform | Oracle Certified Professional, Java Platform, Enterprise Edition 6 JavaServer Pages and Servlet Developer |
| Sun Certified EJB Developer for the Java EE6 Platform | Oracle Certified Professional, Java Platform, Enterprise Edition 6 Enterprise JavaBeans Developer |
| Sun Certified JPA Developer for the Java EE6 Platform | Oracle Certified Professional, Java Platform, Enterprise Edition 6 Java Persistence API Developer |
| Sun Certified Developer for the Java Web Services for the Java EE6 | Oracle Certified Professional, Java Platform, Enterprise Edition 6 Web Services Developer |
| Sun Certified Developer for the JSF for the Java EE6 Platform | Oracle Certified Professional, Java Platform, Enterprise Edition 6 JavaServer Faces Developer |
| ORACLE SOLARIS | |
| Sun Certified Solaris Associate (SCSAS) | Oracle Certified Associate, Oracle Solaris 10 Operating System |
| Sun Certified System Administrator (SCSA) for Solaris OS 10 | Oracle Certified Professional, Oracle Solaris 10 System Administrator |
| Sun Certified Network Administrator (SCNA) for Solaris OS 10 | Oracle Certified Expert, Oracle Solaris 10 Network Administrator |
| Sun Certified Security Administrator (SCSECA) for Solaris OS 10 | Oracle Certified Expert, Oracle Solaris 10 Security Administrator |
| MYSQL, OPENOFFICE, ORACLE SOLARIS CLUSTER | |
| Sun Certified MySQL 5.0 Database Administrator (SCMDBA) | Oracle Certified Professional, MySQL 5.0 Database Administrator |
| Sun Certified MySQL 5.0 Developer (SCMDEV) | Oracle Certified Professional, MySQL 5.0 Developer |
| Sun Certified MySQL Associate (SCMA) | Oracle Certified Associate, MySQL 5.0/5.1/5.5 |
| Sun Certified MySQL 5.1 Cluster Database Administrator (SCMCDBA) | Oracle Certified Expert, MySQL 5.1 Cluster Database Administrator |
| Sun Certified System Administrator for Sun Cluster 3.2 | Oracle Certified Professional, Oracle Solaris Cluster 3.2 System Administrator |
| Sun Certified OpenOffice.org Calc Specialist | Oracle Certified Expert, OpenOffice.org Calc |
| Sun Certified OpenOffice.org Impress Specialist | Oracle Certified Expert, OpenOffice.org Impress |
| Sun Certified OpenOffice.org Writer Specialist | Oracle Certified Expert, OpenOffice.org Writer |
| Sun Certified Specialist for NetBeans IDE | Oracle Certified Expert, NetBeans Integrated Development Environment 6.1 Programmer |
恆逸目前是我認為是台灣最具權威的教育機構,在恆逸我們可以找到很多免費資訊。我現在分享一篇關於昇陽Sun Java認證體系介紹:點擊瀏覽原文
恆逸提供的Java系列主要認證課程,有SCJP/SCWCD/SCJD/SCBCD這幾項主要認證,每一項認證皆需通過Sun公司所規定的考試科目方可取得。
SCJP (Sun Certified Java Programmer)
Sun Certified Java Programmer(SCJP)即昇陽認證之Java程式設計師,此一基本認證是為有興趣展現對於Java程式設計語言基礎之熟悉程度的程式設計師所提供的。要取得本項認證的程式設計人員必須具備的能力包括使用Java SE,展示其熟悉基礎Java程式設計語言。

SCWCD (Sun Certified Web Component Developer)
本認證是為致力於使用JavaServer Pages與Servlet技術提供Web服務與動態Web內容的開發人員所提供的。針對已取得SCJP認證的Java程式設計人員,其必須專精於Web應用程式,及用於展示網路服務及動態網頁內容的Servlet與JSP技術。

SCJD (Sun Certified Java Developer)
SCJD此一以效能為基礎的認證是為有興趣使用Java SE展現對於Java程式設計語言之進階熟悉程度的開發者所提供的。要取得此項基於效能的認證,程式設計人員和開發人員必須具備的能力包括使用Java SE,展示其精通Java程式設計語言。如要通過認證,則必須完成程式撰寫測驗及筆試問答共兩個部份。

SCMAD (Sun Certified Mobile Application Developer)
本認證是為使用Java技術為行動電話或「智慧」裝置建立行動應用程式的開發人員所提供的。本項認證是針對已取得SCJP認證的Java程式設計人員,其必須專精於使用Java ME技術在cell phone或是其他Java相容裝置上開發應用程式。

SCDJWS (Sun Certified Developer for Java Web Services)
本認證是為使用Java技術元件為應用程式建立Web服務的開發者所提供的。本項認證是針對已取得SCJP認證的Java程式設計人員,其必須專精於Web Services與企業平台整合技術。

SCBCD (Sun Certified Business Component Developer)
本認證是為負責設計、開發、測試、部署及整合EJB應用程式之Enterprise JavaBeans (EJB)技術商業元件開發人員所提供的。本項認證是針對已取得SCJP認證的Java程式設計人員,在Java EE平台技術中,其必須專精於封裝商業邏輯的伺服端分散式元件應用程式。

原文網址:http://macspeed.net/wordpress/?p=13
1.0適用於所有SUN認證考試報名:SCJP、SCMAD、SCJA、SCDJWS、SCJD、SCJA、SCJD、SCWCD、SCBCD、SCEA、SCNA、SCSA等等。
2.SUN Voucher(認證卷)可以參考台灣Sun官方網站。
3.n認證體系與考試編號查詢:2010年Sun Java認證體系介紹。
4.SCJP 6.0試編號是310-065。決定考試日期,時間與考試地點,考試地點可以參考這裡,決定考試地點後,要記住考場代號,例如聯成電腦公館分校是TI17
5. 一個註冊好的Prometric帳號與密碼,如果還沒有Prometric帳號,先到這裡完成註冊
6. 開啟Prometric首頁
我今天發表這篇文章是爲了在此向各位澄清“SUN認證考試改版”的錯誤消息。原文:改版主要原因是因為sun被oracle給合併,現行的Java認證制度將改版將於3月開始考試。6月底舊版考試將取消,新版Java 7.0考試要推出線上程式實作。—–此文是收集網絡上關於SUN改版考試的猜測,並無事實依據。已經與2010年5月22日修改,由此給大家帶來的不便,我深表歉意。 如果您還遇到其他問題,請與我聯絡:MSN/Mail: itcert2008@hotmail.com
感谢Sun Microsystems, Taiwan Learning Services提出的錯誤修正。稍後我會繼續收集各類考試信息,以後將不會出現類似錯誤信息。請大大們繼續關注我的部落格。
描述來信:
——————————————————————————————————
~~~ Warning !! Notice!! ~~~
Sun Microsystems has postponed the release of Java Programmer Plus, namely the new hands on testing model, due to the transition to Oracle systems. As for now, Sun has no plan to change the current certification offerings. Your blog site is in error. Please don’t distribute a rumore to mass public market of Great China and clarify it on your blog immediatelly.
Sun Microsystems, Taiwan
Learning Services
———————————————————————————————————–
RE:來信
1. Java是目前使用最為廣泛的網絡編程語言之一。它具有簡單,面向對象,穩定,與平台無關,解釋型,多線程,動態等特點。
2.簡單Java語言簡單是指這門語言既易學有好用。不要將簡單誤解為這門語言很乾癟。你可能很贊同這樣的觀點英語要比阿了伯語言容易學。但這並不意味著英語就不能表達丰富的內容和深刻的思想,許多文學若貝爾獎的作品都是英文寫的。如果你學習過C++語言,你會感覺Java很眼熟,因為Java中許多基本語句的語法和C++一樣,像常用的循環語句,控制語句等和C++幾乎一樣,但不要誤解為Java是C++的增強版,Java和C++是兩種完全不同的語言,他們各有各的優勢,將會長期並存下去,Java語言和C++語言已成為軟件開發者應當掌握的語言。如果從語言的簡單性方面看,Java要比C++簡單,C++中許多容易混淆的概念,或者被Java棄之不用了,或者以一種更清楚更容易理解的方式實現,例如, Java不再有指針的概念。
3.面向對象基於對象的編程更符合人的思維模式,使人們更容易編寫程序。在實際生活中,我們每時每刻都與對像在打交道。我們用的鋼筆,騎的自行車,乘的公共汽車等。而我們經常見到的卡車,公共汽車,轎車等都會涉及以下幾個重要的物理量可乘載的人數,運行速度,發動機的功率,耗油量,自重,輪子數目等。另外,還有幾個重要的功能加速功能,減速功能,剎車,轉彎功能等。我們也可以把這些功能稱作是他們具有的方法,而物理量是它們的狀態描述。僅僅用物理量或功能不能很好的描述它們。在現實生活中,我們用這些共有的屬性和功能給出一個概念機動車類。一個具體的轎車就是機動車類的一個實例對象.Java語言與其它面向對象語言一樣,引入了類的概念,類是用來創建對象的模板,它包含被創建的對象的狀態描述和方法的定義。
4.與平台無關與平台無關是Java語言最大的優勢。其它語言編寫的程序面臨的一個主要問題是操作系統的變化,處理器升級以及核心系統資源的變化,都可能導致程序出現錯誤或無法運行。 Java的虛擬機成功地解決了這個問題,Java編寫的程序可以在任何安裝了Java虛擬機JVM的計算機上正確的運行,Sun公司實現了自己的目標“一次寫成,處處運行”。
5.解釋型我們知道C,C++等語言,都是只能對特定的CPU芯片進行編譯,生成機器代碼,該代碼的運行就和特定的CUP有關。例如,在C語言中,我們都碰到過類似下面的問題int型變量的值是10 ,那麼下面代碼的輸出結果是什麼呢printf(“%d,%d”,x,x=x+1 )如果上述語句的計算順序是從左到右,結果是10,11但是,有些機器會從右到左計算,那麼結果就是11,11.Java不像C++,它不針對特定的CPU芯片進行編譯,而是把程序編譯為稱做字節碼的一個“中間代碼”。字節碼是很接近機器碼的文件,可以在提供了Java虛擬機JVM的任何系統上被解釋執行。 Java被設計成為解釋執行的程序,即翻譯一句,執行一句,不產生整個的機器代碼程序。翻譯過程如果不出現錯誤,就一直進行到完畢,否則將在錯誤處停止執行。同一個程序,如果是解釋執行的,那麼它的運行速度通常比編譯為可執行的機器代碼的運行速度慢一些。但是,對Java來說,二者的差別不太大,Java的字節碼經過仔細設計,很容易便能使用JIT即時編譯方式編譯技術將字節碼直接轉化成高性能的本地機器碼,Sun公司在Java 2發行版中提供了這樣一個字節碼編譯器——JIT(Just In Time),它是Java虛擬機的一部分。 Java運行系統在提供JIT的同時仍具有平台獨立性,因而“高效且跨平台”對Java來說不再矛盾。如果把Java的程序比做“漢語”的話,字節碼就相當於“世界語”,世界語不和具體的“國家”關,只要這個“國家”提供了“翻譯”,就可以再快速地把世界語翻譯成本地語言。
6.多線程Java的特點之一就是內置對多線程的支持。多線程允許同時完成多個任務。實際上多線程使人產生多個任務在同時執行的錯覺,因為,目前的計算機的處理器在同一時刻只能執行一個線程,但處理器可以在不同的線程之間快速地切換,由於處理器速度非常快,遠遠超過了人接收信息的速度,所以給人的感覺好像多個任務在同時執行。 C++沒有內置的多線程機制,因此必須調用操作系統的多線程功能來進行多線程程序的設計。
7.安全當你準備從網絡上下載一個程序時,你最大的擔心是程序中含有惡意的代碼,比如試圖讀取或刪除本地機上的一些重要文件,甚至該程序是一個病毒程序等。當你使用支持Java的瀏覽器時,你可以放心地運行Java的小應用程序Java Applet ,不必擔心病毒的感染和惡意的企圖,Java小應用程序將限制在Java運行環境中,不允許它訪問計算機的其它部分。
8.動態Java程序的基本組成單元就是類,有些類是自己編寫的,有一些是從類庫中引入的,而類又是運行時動態裝載的,這就使得Java可以在分佈環境中動態地維護程序及類庫,而不像C++那樣,每當其類庫升級之後,相應的程序都必須重新修改,編譯。
(1)類名首字母應該大寫。字段、方法以及對象(句柄)的首字母應小寫。對於所有標識符,其中包含的所有單詞都應緊靠在一起,而且大寫中間單詞的首字母。例如: ThisIsAClassName
thisIsMethodOrFieldName
若在定義中出現了常數初始化字符,則大寫static final基本類型標識符中的所有字母。這樣便可標誌出它們屬於編譯期的常數。
Java包(Package)屬於一種特殊情況:它們全都是小寫字母,即便中間的單詞亦是如此。對於域名擴展名稱,如com,org,net或者edu等,全部都應小
寫(這也是Java 1.1和Java 1.2的區別之一)。
(2)為了常規用途而創建一個類時,請採取“經典形式”,並包含對下述元素的定義:
equals()
hashCode()
toString()
clone()(implement Cloneable)
implement Serializable
(3)對於自己創建的每一個類,都考慮置入一個main(),其中包含了用於測試那個類的代碼。為使用一個項目中的類,我們沒必要刪除測試代碼。若進行了任何形式的改動,可方便地返回測試。這些代碼也可作為如何使用類的一個示例使用。
(4)應將方法設計成簡要的、功能性單元,用它描述和實現一個不連續的類接口部分。理想情況下,方法應簡明扼要。若長度很大,可考慮通過某種方式將其分割成較短的幾個方法。這樣做也便於類內代碼的重複使用(有些時候,方法必須非常大,但它們仍應只做同樣的一件事情)。
(5)設計一個類時,請設身處地為客戶程序員考慮一下(類的使用方法應該是非常明確的)。然後,再設身處地為管理代碼的人考慮一下(預計有可能進行哪些形式的修改,想想用什麼方法可把它們變得更簡單)。
(6)使類盡可能短小精悍,而且只解決一個特定的問題。下面是對類設計的一些建議:
1.一個複雜的開關語句:考慮採用“多形”機制
2.數量眾多的方法涉及到類型差別極大的操作:考慮用幾個類來分別實現
3.許多成員變量在特徵上有很大的差別:考慮使用幾個類。
(7)讓一切東西都盡可能地“私有”——private。可使庫的某一部分“公共化”(一個方法、類或者一個字段等等),就永遠不能把它拿出。若強行拿出,就可能破壞其他人現有的代碼,使他們不得不重新編寫和設計。若隻公佈自己必須公佈的,就可放心大膽地改變其他任何東西。在多線程環境中 ,隱私是特別重要的一個因素——只有private字段才能在非同步使用的情況下受到保護。
(8)謹惕“巨大對象綜合症”。對一些習慣於順序編程思維、且初涉OOP領域的新手,往往喜歡先寫一個順序執行的程序,再把它嵌入一個或兩個巨大的對象裡。根據編程原理,對象表達的應該是應用程序的概念,而非應用程序本身。
(9)若不得已進行一些不太雅觀的編程,至少應該把那些代碼置於一個類的內部。
(10)任何時候只要發現類與類之間結合得非常緊密,就需要考慮是否採用內部類,從而改善編碼及維護工作(參見第14章14.1.2小節的“用內部類改進代碼”)。
有許多標準和實踐準則可適用於Java開發者,但此處要說的,是每個Java開發者需堅守的基本原則。
一、為代碼加註釋。雖然每個人都知道這點,但有時卻不自覺忘了履行,今天你“忘了”加註釋了嗎?雖然註釋對程序的功能沒什麼“貢獻”,但過一段時間,比如說兩星期之後或者更長,回過頭來看看自己的代碼,說不定已經記不住它是乾什麼的了。假如這些代碼是你個人的,那還算是走運了,不幸的是,當然了,大多數時候都是別人的不幸,很多時候大家都是在為公司寫代碼,寫代碼的人也許早已經離開了公司,但別忘了一句古話,有來有往嘛,為他人,也為我們自己,請為你的代碼加上註釋。
二、不要讓事情複雜化。程序員有時候總是對簡單問題想出複雜的解決方案,比如說,在只有五個用戶的程序中引入EJB、對程序實現了並不需要的框架(framework),之類的還有屬性文件、面向對象解決方案、多線程等等。為什麼要這樣做呢?也許我們並不知道是否這樣會更好,但這樣做也許可以學到一些新東西,或者讓自己更感愛好一些。假如是不知道為什麼這樣做,建議多請教經驗豐富的程序員,假如是為了個人的目的,麻煩讓自己更專業一點。
三、始終牢記——“少即是好(Less is more)並不總是對的”。代碼效率雖然很重要,但在許多解決方案中,編寫更少的代碼並不能改善這些代碼的效率,請看下面這個簡單的例子:
if(newStatusCode.equals(“SD”) && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0)) ||
(newStatusCode.equals(“OBS”) && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))){
newStatusCode = “NYP”;
}
能看明白if條件語句是乾什麼的嗎?能想出來是誰寫的這段代碼嗎?假如把它分成兩段獨立的if語句,是不是更輕易理解呢,下面是修改後的代碼:
if(newStatusCode.equals(“SD”) && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0))){
newStatusCode = “NYP”;
}else
if(newStatusCode.equals(“OBS”) && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))
{
newStatusCode = “NYP”;
}
是不是讀起來輕易多了呢,在此只是多加了一個if和兩個花括號,但代碼的可讀性與可理解性就一下子提高了一大截。
四、請不要硬編碼。開發者經常有意“忘記”或忽略掉這點,因為有些時候開發日程逼得實在太緊。其實,多寫一行定義靜態變量的代碼能花多少時間呢?
public class A {
public static final String S_CONSTANT_ABC = “ABC”;
public boolean methodA(String sParam1){
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1)){
return true;
}
return false;
}
}
現在,每次需要將“ABC”與其他變量進行比較時,不必記住實際代碼,直接引用A.S_CONSTANT_ABC就行了,而且在今後需要進行修改時,也可在一處修改,不會翻遍整個源代碼逐個修改了。
五、不要“創造”自己的框架(framework)。確切來說,有數以千計的各種框架存在,而且大多數是開源的,這些框架都是優秀的解決方案,可用於日常程序開發中,我們只需使用這些框架的最新版本就行了,至少表面上要跟上形勢吧。被大家廣為接受的最為明顯的一個例子就是Struts了,這個開源web框架非常適合用在基於web的應用程序中。是不是想開發出自己的Struts呢,還是省點力氣吧,回頭看看第二條——不要讓事情複雜化。另外,假如正在開發的程序只有3個窗口,就不要使用Struts了,對這種程序來說,不需要那麼多的“控制”。
六、不要使用println及字符串連接。通常為了調試方便,開發者喜歡在可能的所有地方都加上System.out.println,也許還會提醒自己回過頭來再來刪除,但有些時候,經常會忘了刪除或者不願意刪除它們。既然使用System.out.println是為了測試,那麼測試完之後,為什麼還要留著它們呢,因為在刪除時,很可能會刪除掉真正有用的代碼,所以不能低估System.out.println危害啊,請看下面的代碼:
public class BadCode {
public static void calculationWithPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i ) {
System.out.println(someValue = someValue i);
}
}
public static void calculationWithOutPrint(){
double someValue = 0D;
for (int i = 0; i < 10000; i ) {
someValue = someValue i;
}
}
public static void main(String [] n) {
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}
}
從測試中可以發現,方法calculationWithOutPrint()執行用了0.001204秒,作為對比,方法calculationWithPrint()執行可是用了10.52秒。
要避免浪費CPU時間,最好的方法是引入像如下的包裝方法:
public class BadCode {
public static final int DEBUG_MODE = 1;
public static final int PRODUCTION_MODE = 2;
public static void calculationWithPrint(int logMode){
double someValue = 0D;
for (int i = 0; i < 10000; i ) {
someValue = someValue i;
myPrintMethod(logMode, someValue);
}
}
public static void myPrintMethod(int logMode, double value) {
if (logMode > BadCode.DEBUG_MODE) { return; }
System.out.println(value);
}
public static void main(String [] n) {
BadCode.calculationWithPrint(BadCode.PRODUCTION_MODE);
}
}
另外,字符串連接也是浪費CPU時間的一個大頭,請看下面的示例代碼:
public static void concatenateStrings(String startingString) {
for (int i = 0; i < 20; i ) {
startingString = startingString startingString;
}
}
public static void concatenateStringsUsingStringBuffer(String startingString) {
StringBuffer sb = new StringBuffer();
sb.append(startingString);
for (int i = 0; i < 20; i ) {
sb.append(sb.toString());
}
}
在測試中可發現,使用StringBuffer的方法只用了0.01秒執行完畢,而使用連接的方法則用了0.08秒,選擇顯而易見了。
七、多關注GUI(用戶界面)。再三強調,GUI對商業客戶來說,與程序的功能及效率同等重要,GUI是一個成功程序的最基本部分,而很多IT經理往往都沒注重到GUI的重要性。在現實生活中,許多公司可能為了節省開支,沒有僱用那些有著設計“用戶友好”界面豐富經驗的網頁設計者,此時Java開發者只能依靠他們自身的HTML基本功及在此領域有限的知識,結果,很多開發出來的程序都是“計算機友好”甚於“用戶友好”。很少有開發者同時精通軟件開發及GUI設計,假如你在公司“不幸”被分配負責程序界面,就應該遵守下面三條原則:
1、 不要再發明一次輪子,即不做無用功。現有的程序可能會有類似的界面需求。
2、 先創建一個原型。這是非常重要一步,用戶一般想看到他們將使用的東西,而且可以先利用這個原型徵求用戶的意見,再慢慢修改成用戶想
要的樣子。
3、 學會換位思考。換句話來說,就是從用戶的角度來審查程序的需求。舉例來講,一個匯總的窗口可以跨頁或者不跨頁,作為一個軟件開發者,可能會傾向於不跨頁,因為這樣簡單一些。但是,從用戶的角度來看,可能不希望看到上百行數據都擠在同一頁上。
八、文檔需求不放鬆。每個商業需求都必須記錄在案,這可能聽上去像童話,似乎在現實生活中很難實現。而我們要做的是,不管開發時間多緊迫,不管最終期限多臨近,對每個商業需求都必須記錄在案。
九、單元測試、單元測試、單元測試。關於什麼是單元測試的最好方法,在此不便細說,只是強調,單元測試一定要完成,這也是編程中最基本的原則。當然了,假如有人幫你做單元測試自然是最好,假如沒有,就自己來做吧,當創建一個單元測試計劃時,請遵守以下三條最基本的原則:
1、 先於編寫類代碼之前編寫單元測試。
2、 記錄單元測試中的代碼註釋。
3、 測試所有執行要害功能的公有方法,這裡不是指set和get方法,除非它們是以自己獨特方式執行set和get方法。
十、質量,而不是數量。有些時候因為產品問題、期限緊迫、或一些預料之外的事情,導致經常不能按時下班,但一般而言,公司不會因為僱員經常加班而對之表揚和獎勵,公司只看重高質量的工作。假如遵守了前九條原則,你會發現自己寫出的代碼bug少且可維護性高,無形中質量提高了一大步。