導航:首頁 > 編程語言 > java語言編程規范

java語言編程規范

發布時間:2022-08-18 08:32:25

① 哈哈哈哈,我真的想知道java怎麼學習

第一步:首先要做好學習前的准備工作:java語言一般用於大型的伺服器程序開發,所有有必要了解如下內容:Unix開發環境Unix系統原理、Unix開發環境、Unix常用命令。熟練掌握Unix常用命令;熟練構建下的Java開發環境。

第二步:然後進入Java語言基礎的學習階段,學習任何一門語言都要打好基礎,曾經學過高級程序語言(C,C++等)來說,java語言基礎有自己的特點,但是基本規律都是相通的,如:演算法基礎、常用數據結構、企業編程規范。掌握常見的數據結構和實用演算法;培養良好的企業級編程習慣。

第三步:掌握java語言基礎後接下來就是面向對象語言的共性:Java面向對象面向對象特性:封裝、繼承、多態等。掌握面向對象的基本原則以及在編程實踐中的意義;掌握Java面向對象編程基本實現原理。

第四步:JDK核心API語言核心包、異常處理、常用工具包、集合框架。熟練掌握JDK核心API編程技術;理解API設計原則;具備熟練的閱讀API文檔的能力;JavaSE核心異常處理、多線程基礎、IO系統、網路編程、Swing組件、JVM性能調優(JVM內存結構剖析、GC分析及調優、JVM內存參數優化)、Java泛型、JDK新特性。熟練掌握JavaSE核心內容,特別是IO和多線程;初步具備面向對象設計和編程的能力;掌握基本的JVM優化策略。XML XML語法、XML解析(SAX、DOM)、Dom4j組件、Digester組件。熟練掌握XML語法規則;理解DOM模型;熟悉Java對XML的各種解析方式。

2
java怎麼學習

系統的學習Java編程的基礎

如果真的想成為Java程序員,那麼學習Java時就不要東一片、西一片的學習,要全面的、系統的學習Java編程基礎,包括AWT、Swing這些不是經常用到的 內容也要學習,深刻的理解面向對象(Object-Oriented)的編程思想,掌握封裝(Encapsulation)、繼承(Inheritance)、多態(Polymorphism)三大特性,把面向對象的思想運用到實際的代碼編寫中。

掌握常用的API用法

每一門成熟的編程語言都會向用戶提供豐富的應用編程介面(Application programming Interface),也就是通常所說的API,熟練掌握這些API,無疑會極大的提高我們編碼的效率,但是Java提供的API實在是太多了點,全部掌握很難實現,而且也沒有必要,我們只要熟練掌握常用的API就好,不常用的API用到的時候,再在API文檔中查找用法即可。

通讀官方語言教程和規范

發布編程語言的官方,一般都會在其官方網站上提供官方語言教程(Tutorials)和規范(Specification),Java的官方網站當然也不例外。Oracle提供的Java Tutorials官方教程是很好的入門讀物,系統全面還帶有示例演示,非常易學,看到很多Java的初學者還在滿網路的找教程,殊不知最好的教程就在官方網站上等著呢,即使是Java老司機也可以在裡面發現自己以前的知識遺漏點。Java Specification 語言規范是更進一步的讀物,裡面解釋了語言的內部規范,比較難以讀懂,但是初讀時不要強求讀懂所有的內容,適當的囫圇吞棗,多讀幾遍可能就理解了。而對於要求更高的Java程序員,可以讀讀JVM Specification,Java虛擬機規范。

借鑒Java重要類的官方源代碼

Java是一門開源的編程語言,下載其JDK(Java Development Kit,Java開發 工具包)時,會自帶Java的源代碼壓縮包src.zip,解壓後就可以查看Java自帶類的源代碼,這些源代碼都是Java大神們寫的,非常有學習意義。這也是學習Java語言相對於其它閉源開發語言的一大優勢。

3
java怎麼樣學習

1、扎實的基礎

數據結構、離散數學、編譯原理,這些是所有計算機科學的基礎,如果不掌握它們,很難寫出高水平的程序。程序人人都會寫,但當你發現寫到一定程度很難再提高的時候,就應該想想是不是要回過頭來學學這些最基本的理論。不要一開始就去學OOP,即使你再精通OOP,遇到一些基本演算法的時候可能也會束手無策。因此多讀一些計算機基礎理論方面的書籍是非常有必要的。

2、豐富的想像力

不要拘泥於固定的思維方式,遇到問題的時候要多想幾種解決問題的方案,試試別人從沒想過的方法。豐富的想像力是建立在豐富的知識的基礎上,除計算機以外,多涉獵其他的學科,比如天文、物理、數學等等。開闊的思維對程序員來說很重要。

3、最簡單的是最好的

這也許是所有科學都遵循的一條准則,復雜的質能轉換原理在愛因斯坦眼裡不過是一個簡單得不能再簡單的公式:E=mc2.簡單的方法更容易被人理解,更容易實現,也更容易維護。遇到問題時要優先考慮最簡單的方案,只有簡單方案不能滿足要求時再考慮復雜的方案。

4、不鑽牛角尖

當你遇到障礙的時候,不妨暫時遠離電腦,看看窗外的風景,聽聽輕音樂,和朋友聊聊天。當我遇到難題的時候會去玩游戲,當負責游戲的那部分大腦細胞極度亢奮的時候,負責編程的那部分大腦細胞就得到了充分的休息。當重新開始工作的時候,我會發現那些難題現在竟然可以迎刃而解。

4
java怎樣學習

it行業目前流行的面向對象編程語言就是C++和Java。所以基本上鎖定這兩個方向就可以了,而且完全可以同時掌握。

掌握Java的精華特性而且一定要知道為什麼。比如,Interface和multi-thread。用interface是更好的多繼承的模型,而多線程則是設計到語言一級的重要特性。要完全理解interface是為什麼,用多線程又有幾種常用的編程模型。

理解了語言的特性是為什麼了之後,就可以試著上升到設計這個層次,畢竟學習語言是要用的。目前比較好的開發模式是採用自定向下的面向對象的設計,加上MVC的模式。首先要找出最頂層的對象(這往往是最難的),然後一層一層往下遞歸,記住每次應符合7+/-2的原則,因為我們人的短記憶就是這樣。一般有圖形用戶界面的應從界面開始設計。

有了基本設計模型後,可以學一些設計模式(Design Pattern)。這是目前證明很有效的。比如體系結構模式(Layering分層,Pipe/Filter管道或過濾器),設計模式(有很多,比如對象池Object Pool、緩沖池Cache等),編程模式(比如Copy-on-Write)。懂了這些模式之後,就會對系統的整體結構有很好的把握,而學術上也有傾向一個系統完全可以由各種模式組合而成。前面提到的MT實際上就有好幾種模式,掌握後就不用自己花很多時間去試了。另外一個很重要的領域就是並行和分布式計算領域,大概有20種

② 從入門到精通,學Java你需要注意這幾點!

Java從入門到精通學習應該怎麼做呢?做好哪些事情可以更快的入門Java編程?今天就讓小編來幫你梳理一下~

Java編程語言是一種可以撰寫跨平台應用軟體的面向對象的程序設計語言。Java編程技術具有卓越的通用性、高效性、平台移植性和安全性,廣泛應用於個人PC、數據中心、游戲控制台、科學超級計算機、行動電話和互聯網,同時擁有全球最大的開發者專業社群。在全球雲計算和移動互聯網的產業環境下,Java更具備了顯著優勢和廣闊前景。

No.1

找一本好的書本教材

好的教材,可以讓你更快更好的進入Java的世界。在校學生的話,你們的教材通常都是不錯的也可以到職坐標的優才商城選擇合適的教材。

No.2

學好基本語法,弄清Java的特點

學習Java,說白了,就是學習它的語法、功能、結構等。然後按照它的語法編寫代碼。Java語法是學習的根本。開始學習時,可能有些難懂。沒關系,這很正常。多看多問,多實踐,慢慢的你就入門了。

No.3

沒有捷徑,一定要多動手實踐

學習Java,和學數學一樣,在學懂理論後,一定要實踐。學習Java不能搭便車。有時候,語法和例子很簡單,很容易看懂,但到自己動手寫的時候,又是另一種感覺。只有多動手編程,哪怕是簡單的小程序,重復實現書上簡單的例子,也是在積累和提高。動手編碼離不開編程工具的支持。


No.4

學習編程規范,編程中堅持遵守

俗話說,無規矩不成方圓。編程是一個將思維邏輯變為代碼,讓計算機來執行的過程。特別需要規范。無論是變數、函數命名還是代碼格式,都需要一致規范。這樣便於代碼的閱讀和修改。代碼的規范性,在代碼質量中占據著重要的比重。


No.5

給代碼添加足夠的注釋說明

代碼注釋的作用,毫不誇張的說,就像旅遊景點的指示牌。我們在編程時,對自己的想法十分清楚。但一段時間之後呢,或者讓別人來閱讀代碼呢。如果注釋豐富,讀代碼就大體可以用讀注釋來代替了。

注意,注釋要對那些有一定難度的語句、過程方法或結構等的注釋,非常淺顯易懂的就不需要注釋啦。養成對難懂代碼注釋的習慣吧。

No.6

多看別人的代碼


對同一種功能的實現,可以有很多種編碼方式。多讀別人的代碼,非常有利用開拓思路,提高編碼的靈活性。甚至經常可以從別人的代碼中得到啟發,產生靈感,創作出優秀的代碼。

No.7

代碼盡量寫的簡單,易於理解

代碼的簡單性、正確性是最重要的。不要為了追求高效率而寫出晦澀難懂的代碼。後續閱讀和修改代碼時,你會為晦澀的代碼付出很多代價。記住,盡量將代碼寫成初學 Java就能讀懂的,那麼你的代碼就十分的優美了。

No.8

學習設計模式

設計模式就是高手們總結的一些關於編程方法的總結,這對新手來說非常的有用。學習設計模式,可以提高我們編程的靈活度以及設計的合理性。不僅 Java,其他編程語言,如C#、C++中,設計模式也在大行其道。所以,你沒有理由錯過高手們總結的編程精華。

No.9

喜歡它,並堅持走下去

Java的學習,容易入門,卻難以精通。永遠不要因為害怕困難,而減少你對它的興趣。每年都有很多人在學習Java,因為它很強大。如果你能堅持下去,那麼你也是強大的。


No.10

選擇一套體系完善的課程

在完善的課程體系中學習非常重要,這有助於你掌握系統的Java編程知識和技能,而且好的課程會幫助你前期打好基礎,後期有針對性地使你快速提升,這對Java新手來說十分有效。比如雲和數據的Java大數據企業直通班,不僅有國際名師在線指導,還有牛人大咖全程面授,「六位一體」、「X+12」雙重教學模式,打造一流完善的課程體系,可以給你全方位因材施教的教學指導。

關於我們學校簡介

③ Java初學者入門指南!

很多Java編程初學者在剛接觸Java語言程序的時候,不知道該學習掌握哪些必要的基礎知識。小編總結了零基礎學習Java編程語言的幾個基礎知識要點。希望能夠對剛入門的Java新手有幫助。

1先了解什麼是Java的四個方面

初學者先弄清這些Java的基本概念也是必不可少的,死記硬背肯定是不行的,重在理解,理解它們之間的區別與聯系,分別有哪些應用。想想這些代碼中用到了哪些知識點。不要一味地照著書本敲代碼。而不去理解。

1.Java編程語言,即語法。

2.Java文件格式,即各種文件夾、文件的後綴。

3.Java虛擬機(JVM),即處理*.class文件的解釋器。

4.Java應用程序介面(Java API)。

2掌握靜態方法和屬性

靜態方法和屬性用於描述某一類對象群體的特徵,而不是單個對象的特徵。Java中大量應用了靜態方法和屬性,這是一個通常的技巧。但是這種技巧在很多語言中不被頻繁地使用。

理解靜態方法和屬性對於理解類與對象的關系是十分有幫助的,在大量的Java規范中,靜態方法和屬性被頻繁使用。因此學習者應該理解靜態方法和屬性。Java在方法和屬性的調用上是一致的,區別只表現在聲明的時候,這和c++是不同的。

3初學者還需明白JAVA的三個技術平台的關系

Java分為三個體系,分別為Java SE(J2SE,Java2 Platform Standard Edition,標准版)。JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企業版)。Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。

要知道java是分兩部分的:一個是編譯,一個是運行。

javac:負責的是編譯的部分,當執行javac時,會啟動java的編譯器程序。對指定擴展名的.java文件進行編譯。 生成了jvm可以識別的位元組碼文件。也就是class文件,也就是java的運行程序。

java:負責運行的部分.會啟動jvm.載入運行時所需的類庫,並對class文件進行執行.一個文件要被執行,必須要有一個執行的起始點,這個起始點就是main函數。

4掌握JAVA代碼的基本格式

1、Java注釋盡可能全面

對於方法的注釋應該包含詳細的入參和結果說明,有異常拋出的情況也要詳細敘述:類的注釋應該包含類的功能說明、作者和修改者。

2、多次使用的相同變數最好歸納成常量

多處使用的相同值的變數應該盡量歸納為一個常量,方便日後的維護。

3、盡量少的在循環中執行方法調用

盡量在循環中少做一些可避免的方法調用,這樣可以節省方法棧的創建。例如:

for(int i=0;i<list.size();i++){

System.out.println(i);

}

可以修改為:

for(int i=0,size=list.size();i<size;i++){

System.out.println(i);

}

4、常量的定義可以放到介面中

④ java編程是什麼

Java(計算機編程語言),深入了解Java開發?
Java語言是SUN(Stanford University Network,斯坦福大學網路公司)公司1995年推出的一門高級編程語言,起初主要應用在小型消費電子產品上,後來隨著互聯網的興起,Java語言迅速崛起(Java applet 可以在瀏覽器中運行),成為大型互聯網項目的首選語言。
從首次發布開始,Java就躍到了 Internet 編程的前沿。後續的每一個版本都進一步鞏固了這一地位。如今,Java依然是開發基於 Web 的應用程序的最佳選擇。此外,Java還是智能手機變革的推手,Android 編程採用的就是Java語言。
Java可分為3個體系,即JavaSE、JavaEE 和JavaME。下面千鋒重慶Java的小編簡單介紹下這3個體系。
1、JavaSE
JavaSE(JavaPlatform Standard Edition,Java平台標准版)以前稱為J2SE,它允許開發和部署在桌面、伺服器、嵌入式環境和實時環境中使用的Java應用程序。JavaSE包含了支持JavaWeb服務開發的類,並為JavaEE 提供基礎,如Java語言基礎、JDBC操作、I/O 操作、網路通信以及多線程等技術。圖所示為JavaSE的體系結構。

2、JavaEE
JavaEE(JavaPlatform Enterprise Edition,Java平台企業版)以前稱為J2EE。企業版本幫助開發和部署可移植、健壯、可伸縮且安全的伺服器端Java應用程序。JavaEE是在JavaSE基礎上構建的,它提供Web服務、組件模型、管理和通信API,可以用來實現企業級的面向服務體系結構(Service Oriented Architecture,SOA)和Web 2.0應用程序。
3、JavaME
JavaME(JavaPlatform Micro Edition,Java平台微型版)以前稱為 J2ME,也叫 K-JAVA。JavaME 為在移動設備和嵌入式設備(比如手機、PDA、電視機頂盒和列印機)上運行的應用程序提供一個健壯且靈活的環境。
JavaME包括靈活的用戶界面、健壯的安全模型、豐富的內置網路協議以及對可以動態下載的聯網和離線應用程序。基於JavaME 規范的應用程序 只需編寫一次就可以用於許多設備,而且可以利用每個設備的本機功能。

⑤ java編碼規范有哪些

這個就有點多了,可以借鑒比較成熟公司的編碼規范看看,一般規范,比如代碼命名規范,常量定義,集合處理,異常處理,注釋等等。

⑥ 零基礎學習Java編程需要知道的十二個步驟!


一、學習前的准備工作

java語言一般用於大型的伺服器程序開發,所有有必要了解如下內容:Unix開發環境Unix系統原理、Unix開發環境、Unix常用命令。熟練掌握Unix常用命令;熟練構建下的Java開發環境。

二、Java語言基礎的學習階段學習

任何一門語言都要打好基礎,曾經學過高級程序語言(C,C++等)來說,java語言基礎有自己的特點,但是基本規律都是相通的,如:演算法基礎、常用數據結構、企業編程規范。掌握常見的數據結構和實用演算法;培養良好的企業級編程習慣。

三、面向對象語言的共性

Java面向對象面向對象特性:封裝、繼承、多態等。掌握面向對象的基本原則以及在編程實踐中的意義;掌握Java面向對象編程基本實現原理。

四、JDK核心API語言核心包、異常處理、常用工具包、集合框架

熟練掌握JDK核心API編程技術;理解API設計原則;具備熟練的閱讀API文檔的能力;JavaSE核心異常處理、多線程基礎、IO系統、網路編程、Swing組件、JVM性能調優(JVM內存結構剖析、GC分析及調優、JVM內存參數優化)、Java泛型、JDK新特性。熟練掌握JavaSE核心內容,特別是IO和多線程;初步具備面向對象設計和編程的能力;掌握基本的JVM優化策略。XML XML語法、XML解析(SAX、DOM)、Dom4j組件、Digester組件。熟練掌握XML語法規則;理解DOM模型;熟悉Java對XML的各種解析方式。

五、SQL語言SQL語句基礎和提高、SQL語句調優

熟練的掌握SQL語句;掌握一定的資料庫查詢技巧及SQL語句優化技巧。Oracle資料庫開發Oracle體系結構及系統管理、Oracle資料庫高級編程、資料庫設計基礎。掌握Oracle體系結構及核心編程技術。

六、連接資料庫:JDBCJDBC核心API(Connection、Statement、ResultSet)、JDBC優化技術(緩存技術、批處理技術、連接池技術)

理解JDBC作為規范的設計原則;熟練掌握JDBC API;具備使用JDBC對資料庫進行高效訪問的能力。

七、軟體工程基礎軟體過程和軟體活動

需求設計、概要設計、詳細設計基本原則和文檔規范;配置管理的基本概念和必要性;CVS基本操作;Ant簡介理解軟體過程的普遍概念和基本的軟體活動;理解迭代的意義;掌握Ant、CVS等常用配置管理及部署工具。

八、OOAD及設計模式面向對象基本設計原則、工廠模式、策略模式、適配器模式、代理模式等、門面模式

理解面向對象設計的一般原則;理解重用的意義;掌握常見的設計模式。

九、HTML/CSSHTML基本文檔結構、掌握CSS基礎語法、關於HTML文檔塊、鏈接、列表、表格、表單等

掌握

十、Ajax基礎、XHR對象、Ajax設計模式、JSON技術

掌握Ajax的基本通信原理;掌握基於XML和JSON的Ajax數據規則。

十一、JavaScript框架JQuery、JQuery插件、DWR

掌握JQuery核心API;了解JQuery基本設計原則;了解多種JQuery插件;掌握DWR的基本原理及應用技巧。

十二、ssh三大框架的學習

這是企業實際應用的框架模型:

1,Struts 2.1.6 Struts2核心控制流程、Ognl、Action、Interceptor、,Result、FreeMarker、Struts2標記庫、Struts2擴展、Struts2應用技巧(輸入驗證、消息國際化、文件上傳和下載、防止重復提交等)。熟練掌握Struts2核心要件,特別是Interceptor和Result;掌握基於模板技術的Struts2 UI組件;掌握基於Ognl的數據共享方式、掌握Struts2各種定製及擴展方式;熟練掌握基於Struts2的Web開發技巧。

2,Hibernate 3.2.1 ORM概念、Hibernate核心API、Hibernate實體映射技術、Hibernate關系映射技巧、HQL查詢、OSCache及Hibernate緩存技術。重點掌握Hibernate多種關聯映射技巧及其實用背景,做到在合適的時候使用合適的關聯方式;掌握多種Hibernate查詢技巧及優化技術。

3,Spring 2.5 Spring Ioc基礎、Ioc注入技巧、對象高級裝配(自動裝配、模板裝配、組件掃描特性、FactoryBean、對象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事務及安全管理;Spring整合Hibernate、Spring整合Struts、Spring MVC簡介。深入理解Ioc和AOP的基本原理和實現方式;熟練掌握SpringIoc及AOP實現方式;熟練掌握Spring事務管理;熟練掌握Spring與其他組件的整合技術。




⑦ java。。。

Java是一門面向對象編程語言,不僅吸收了C++語言的各種優點,還摒棄了C++里難以理解的多繼承、指針等概念,因此Java語言具有功能強大和簡單易用兩個特徵。Java語言作為靜態面向對象編程語言的代表,極好地實現了面向對象理論,允許程序員以優雅的思維方式進行復雜的編程 [1]  。
Java具有簡單性、面向對象、分布式、健壯性、安全性、平台獨立與可移植性、多線程、動態性等特點 [2]  。Java可以編寫桌面應用程序、Web應用程序、分布式系統和嵌入式系統應用程序等 [3]  。
外文名Java現公司Oracle推出時間1995年5月
目錄
1 發展歷程
2 編程開發
▪ 編程環境
▪ 編程工具
3 語言特點
4 工作原理
5 語言基礎
▪ 基本數據結構
▪ 關鍵字
▪ 運算符
▪ 程序舉例
6 語言標准
7 語言規范
8 技術應用
9 學習指南
▪ 考試
▪ 教材
10 語言評價
▪ 發展前景
▪ 貢獻及影響力
發展歷程
編輯
JAVA
20世紀90年代,硬體領域出現了單片式計算機系統,這種價格低廉的系統一出現就立即引起了自動控制領域人員的注意,因為使用它可以大幅度提升消費類電子產品(如電視機頂盒、麵包烤箱、行動電話等)的智能化程度。Sun公司為了搶占市場先機,在1991年成立了一個稱為Green的項目小組,帕特里克、詹姆斯·高斯林、麥克·舍林丹和其他幾個工程師一起組成的工作小組在加利福尼亞州門洛帕克市沙丘路的一個小工作室裡面研究開發新技術,專攻計算機在家電產品上的嵌入式應用。
由於C++所具有的優勢,該項目組的研究人員首先考慮採用C++來編寫程序。但對於硬體資源極其匱乏的單片式系統來說,C++程序過於復雜和龐大。另外由於消費電子產品所採用的嵌入式處理器晶元的種類繁雜,如何讓編寫的程序跨平台運行也是個難題。為了解決困難,他們首先著眼於語言的開發,假設了一種結構簡單、符合嵌入式應用需要的硬體平台體系結構並為其制定了相應的規范,其中就定義了這種硬體平台的二進制機器碼指令系統(即後來成為「位元組碼」的指令系統),以待語言開發成功後,能有半導體晶元生產商開發和生產這種硬體平台。對於新語言的設計,Sun公司研發人員並沒有開發一種全新的語言,而是根據嵌入式軟體的要求,對C++進行了改造,去除了留在C++的一些不太實用及影響安全的成分,並結合嵌入式系統的實時性要求,開發了一種稱為Oak的面向對象語言。
由於在開發Oak語言時,尚且不存在運行位元組碼的硬體平台,所以為了在開發時可以對這種語言進行實驗研究,他們就在已有的硬體和軟體平台基礎上,按照自己所指定的規范,用軟體建設了一個運行平台,整個系統除了比C++更加簡單之外,沒有什麼大的區別。1992年的夏天,當Oak語言開發成功後,研究者們向硬體生產商進行演示了Green操作系統、Oak的程序設計語言、類庫和其硬體,以說服他們使用Oak語言生產硬體晶元,但是,硬體生產商並未對此產生極大的熱情。因為他們認為,在所有人對Oak語言還一無所知的情況下,就生產硬體產品的風險實在太大了,所以Oak語言也就因為缺乏硬體的支持而無法進入市場,從而被擱置了下來。
1994年6、7月間,在經歷了一場歷時三天的討論之後,團隊決定再一次改變了努力的目標,這次他們決定將該技術應用於萬維網。他們認為隨著Mosaic瀏覽器的到來,網際網路正在向同樣的高度互動的遠景演變,而這一遠景正是他們在有線電視網中看到的。作為原型,帕特里克·諾頓寫了一個小型萬維網瀏覽器WebRunner。 

⑧ 哪位高手賜教java和jsp,等編程規范

1.struts

struts框架具組件模塊化靈性重用性優點同簡化基於MVCweb應用程序發

優點:
Struts跟Tomcat、Turbine等諸Apache項目源軟體優點使發者能更深入解其內部實現機制
除外Struts優點主要集體現兩面:Taglib頁面導航TaglibStruts標記庫靈用能提高發效率另外目前內JSP發者言除使

用JSP自帶用標記外少發自標記或許Struts起點
關於頁面導航我認今發展向事實做使系統脈絡更加清晰通配置文件即握整系統各部間聯系於期維護著

莫處尤其另批發者接手項目種優勢體現更加明顯

另外struts業界"標准"(功案例)習資源豐富HTML標簽非優秀

缺點:
TaglibStruts優勢於初者言卻需要持續習程甚至打亂網頁編寫習慣習慣覺真棒
StrutsMVCController三獲結構更加清晰同增加系統復雜度
ActionForms使用便、進行單元測試(StrutsTestCase能用於集)

【IT168技術文檔】
Struts跟Tomcat、Turbine等諸Apache項目源軟體優點使發者能更深入解其內部實現機制 Struts放源碼框架創建使發者

構建基於Java ServletJavaServer Pages(JSP)技術Web應用更加容易Struts框架放者提供統標准框架通使用Struts作基礎發者能夠更專注

於應用程序商業邏輯Struts框架本身使用Java ServletJavaServer Pages技術種Model-View-Controller(MVC)實現.
具體講,Struts優點:

1. 實現MVC模式結構清晰,使發者關注業務邏輯實現.

2. 豐富tag用 ,Struts標記庫(Taglib)能靈用則能提高發效率另外目前內JSP發者言除使用JSP自帶用標記外少發

自標記或許Struts起點

3. 頁面導航.頁面導航今發展向事實做使系統脈絡更加清晰通配置文件即握整系統各部間聯系於期維護

著莫處尤其另批發者接手項目種優勢體現更加明顯

4. 提供Exception處理機制 .

5. 資料庫鏈接池管理

6. 支持I18N

缺點:
、 轉展示層需要配置forward每轉展示層相信數都直接轉jsp涉及轉向需要配置forward十展示層jsp需要配置十struts

且包括候目錄、文件變更需要重新修改forward注意每修改配置要求重新部署整項目tomcate伺服器必須重新啟伺服器業務

變更復雜頻繁系統操作簡單想像現幾十百同線使用我系統家想像我煩惱

二、 Struts Action必需thread-safe式僅僅允許實例處理所請求所action用所資源都必需統同步引起線程安全問題

三、 測試便. Struts每Action都同Web層耦合起測試依賴於Web容器單元測試難實現Junit擴展工具Struts TestCase實現

單元測試

四、 類型轉換. StrutsFormBean所數據都作String類型使用工具Commons-Beanutils進行類型轉化轉化都Class級別且轉化類型

配置類型轉化錯誤信息返給用戶非困難

五、 Servlet依賴性強. Struts處理Action必需要依賴ServletRequest ServletResponse所擺脫Servlet容器

六、 前端表達式語言面.Struts集JSTL所主要使用JSTL表達式語言獲取數據JSTL表達式語言Collection索引屬性面處理顯弱

七、 Action執行控制困難. Struts創建Action想控制執行順序非困難甚至要重新寫Servlet實現功能需求

八、 Action 執行前處理. Struts處理Action候基於classhierarchies難action處理前進行操作

九、 事件支持夠. struts實際表單Form應Action類(或DispatchAction)換句說:Struts實際表單能應事件struts種事

件式稱application eventapplication eventcomponent event相比種粗粒度事件

Struts重要表單象ActionForm種象代表種應用象至少包含幾欄位些欄位Jsp頁面表單input欄位表單應事件所

我需要事件粒度細化表單些欄位說欄位應事件單純使用Struts太能通結合JavaScript轉彎實現

2.Hibernate
Hibernate放源代碼象關系映射框架JDBC進行非輕量級象封裝使Java程序員隨所欲使用象編程思維操縱資料庫
Hibernate應用任何使用JDBC場合既Java客戶端程序實用Servlet/JSPWeb應用使用具革命意義Hibernate應用EJBJ2EE架構

取代CMP完數據持久化重任
數發機構經採取創建各自獨立數據持久層旦底層數據結構發改變修改應用其餘部使適應種改變代價十巨Hibernate適填補

空白Java應用提供易用、高效率象關系映射框架hibernate輕量級持久性框架功能卻非豐富

優點:
a.Hibernate 使用 Java 反射機制 位元組碼增強程序實現透明性
b.Hibernate 性能非輕量級框架 映射靈性色
c.支持各種關系資料庫各種復雜關系

缺點:限制您所使用象模型(例持久性類能映射表)其獨界面憐市場份額讓安盡管Hibernate 其強發展力減輕

些風險其源持久性框架些都沒 Hibernate 市場沖擊力

面貼情緒點激希望諒解我批評Hibernate快帖面觀點實讓我覺荒謬管覺Hibernate吧吧我唯覺

遺憾文論壇面找Hibernate真高水平評價TSS關於Hibernatehot thread跟幾百貼其包括Hibernate作者GavinLiDO JDO

CTO於JDOHibernate些激烈爭論我曾經耐看遍仍沒發現針Hibernate真力攻擊些所謂攻擊非針Hibernate沒GUI配置工

具沒商業公司支持沒標准化等等些站住腳理由

補充幾點我意見:

、HibernateJDBC輕量級象封裝獨立象持久層框架App ServerEJB沒必聯系Hibernate用任何JDBC使用場合例Java

應用程序資料庫訪問代碼DAO介面實現類甚至BMP面訪問資料庫代碼意義說HibernateEB范疇東西存非即彼關系

二、HibernateJDBC密切關聯框架所Hibernate兼容性JDBC驅資料庫都定關系使用Java程序App Server沒任何關系存

兼容性問題

三、Hibernate能用直接Entity Bean做比放整J2EE項目框架才能比較並且即使放軟體整體框架看Hibernate做JDBC替代者現

Entity Bean替代者現讓我再列我已經列n框架結構:

傳統架構:
1) Session Bean Entity Bean DB
解決性能障礙替代架構:
2) Session Bean DAO JDBC DB
使用Hibernate提高面架構發效率架構:
3) Session Bean DAO Hibernate DB

面3架構析:
1、內存消耗:採用JDBC架構2疑省內存Hibernate架構3EB架構1差

2、運行效率:JDBC代碼寫非優化JDBC架構運行效率高實際項目點幾乎做需要程序員非精通JDBC運用Batch語句調整

PreapredStatementBatch SizeFetch Size等參數及必要情況採用結集cache等等般情況程序員做點Hibernate架構表現快運行

效率EB架構效率差遠

3、發效率:JBuilder支持及簡單項目EB架構發效率高JDBCHibernate差項目特別持久層關系映射復雜情況Hibernate效

率高驚JDBCEB架構能失敗

4、布式安全檢查集群負載均衡支持
由於SB做Facade3架構沒區別

四、EBHibernate習難度哪

EB難度哪復雜XML配置文件於EB運用稍微慎嚴重性能障礙所難需要習EJB設計模式避性能問題需要習App ServerEB

配置優化EB運行效率做EB發工作程序員部精力都放EB性能問題反沒更精力關注本身主要投入精力考慮象持久層設計

Hibernate難哪Hibernate本身復雜實際Hibernate非簡單難Hibernate太靈

用EB實現持久層候發現EB實太笨拙笨拙根本沒選擇余所根本用花費精力設計案平衡案壞費腦筋考慮

選擇哪案唯案擺面前能做沒選擇

Hibernate相反太靈相同問題至少設計十幾種案解決所特別犯難究竟用用呢些案間底區別呢運行原

理同運行效率哪比較光主鍵七八種案供選擇難難集合屬性用Set用List用Bag底哪效率高難

難查詢用iterator用list哪區別難難復合主鍵直接hbm面配置自定義CustomerType哪種比較些難難

於表選擇單映射象映射父象映射兩1:1象情況用哪種案比較難難

列表直列直想再看止面前擺著數眼花繚亂案候覺幸福呢悲哀呢負責程序員定

仔細研究每種案區別每種案效率每種案適用場合覺已經陷入進拔用EB第秒種已經做決定根本沒選擇比說集

合屬性能用CollectionHibernateBagListSet間猶豫決甚至搞清楚程序都沒辦寫

3. Spring
源項目且目前非躍;基於IoC(Inversion of Control反向控制)AOP構架層j2ee系統框架強迫必須每層 必須使用Spring

模塊化允許根據自需要選擇使用某模塊;實現優雅MVC同數據訪問技術提供統 介面採用IoC使容易實現bean裝

配提供簡潔AOP並據實現Transcation Managment等等
優點
a. Spring能效組織間層象管否選擇使用EJB僅僅使用Struts或其J2EE API特製frameworkSpring致力於解決剩問題
b. Spring能消除許工程見Singleton使用根據我經驗問題降低系統測試性面向象程度
c. 通種同應用程序項目間致處理配置文件Spring能消除各種各自定義格式屬性文件需要曾經某類要尋找哪魔般屬性項或系統屬

性解讀Javadoc甚至源編碼Spring僅僅需要看看類JavaBean屬性Inversion of Control使用(面討論)幫助完種簡化
d. 通介面編程類編程代價幾乎減少沒Spring能夠促進養編程習慣
e. Spring設計讓使用創建應用盡能少依賴於APIsSpring應用數業務象沒依賴於Spring
f. 使用Spring構建應用程序易於單元測試
g. Spring能使EJB使用實現選擇,應用架構必選擇能選擇用POJOs或local EJBs實現業務介面卻影響調用代碼
h. Spring幫助解決許問題需使用EJBSpring能提供種EJB替換物適用於許web應用例Spring能使用AOP提供聲明性事務管理通EJB容器

僅僅需要與單資料庫打交道甚至需要JTA實現
i. Spring數據存取提供致框架,論使用JDBCO/R mapping產品(Hibernate)
Spring確實使能通簡單行解決辦解決問題價值

缺點:使用數、jsp要寫代碼、控制器於靈缺少公用控制器

⑨ java編程規范!!!

名稱 Java語言編碼規范(Java Code Conventions)
簡介 本文檔講述了Java語言的編碼規范,較之陳世忠先生《c++編碼規范》的浩繁詳盡,此文當屬短小精悍了。而其中所列之各項條款,從編碼風格,到注意事項,不單只Java,對於其他語言,也都很有借鑒意義。因為簡短,所以易記,大家不妨將此作為handbook,常備案頭,逐一對驗。
1 介紹
1.1 為什麼要有編碼規范
1.2 版權聲明
2 文件名
2.1 文件後綴
2.2 常用文件名
3 文件組織
3.1 Java源文件
3.1.1 開頭注釋
3.1.2 包和引入語句
3.1.3 類和介面聲明
4 縮進排版
4.1 行長度
4.2 換行
5 注釋
5.1 實現注釋的格式
5.1.1 塊注釋
5.1.2 單行注釋
5.1.3 尾端注釋
5.1.4 行末注釋
5.2 文擋注釋
6 聲明
6.1 每行聲明變數的數量
6.2 初始化
6.3 布局
6.4 類和介面的聲明
7 語句
7.1 簡單語句
7.2 復合語句
7.3 返回語句
7.4 if,if-else,if else-if else語句
7.5 for語句
7.6 while語句
7.7 do-while語句
7.8 switch語句
7.9 try-catch語句
8 空白
8.1 空行
8.2 空格
9 命名規范
10 編程慣例
10.1 提供對實例以及類變數的訪問控制
10.2 引用類變數和類方法
10.3 常量
10.4 變數賦值
10.5 其它慣例
10.5.1 圓括弧
10.5.2 返回值
10.5.3 條件運算符"?"前的表達式"?"前的表達式
10.5.4 特殊注釋
11 代碼範例
11.1 Java源文件範例

1 介紹(Introction)

1.1 為什麼要有編碼規范(Why Have Code Conventions)

編碼規范對於程序員而言尤為重要,有以下幾個原因:

- 一個軟體的生命周期中,80%的花費在於維護
- 幾乎沒有任何一個軟體,在其整個生命周期中,均由最初的開發人員來維護
- 編碼規范可以改善軟體的可讀性,可以讓程序員盡快而徹底地理解新的代碼
- 如果你將源碼作為產品發布,就需要確任它是否被很好的打包並且清晰無誤,一如你已構建的其它任何產品

為了執行規范,每個軟體開發人員必須一致遵守編碼規范。每個人。

1.2 版權聲明(Acknowledgments)

本文檔反映的是Sun MicroSystems公司,Java語言規范中的編碼標准部分。主要貢獻者包括:Peter King,Patrick Naughton,Mike DeMoney,Jonni Kanerva,Kathy Walrath以及Scott Hommel。

本文檔現由Scott Hommel維護,有關評論意見請發至[email protected]

2 文件名(File Names)

這部分列出了常用的文件名及其後綴。

2.1 文件後綴(File Suffixes)

Java程序使用下列文件後綴:

文件類別 文件後綴
Java源文件 .java
Java位元組碼文件 .class

2.2 常用文件名(Common File Names)

常用的文件名包括:

文件名 用途
GNUmakefile makefiles的首選文件名。我們採用gnumake來創建(build)軟體。
README 概述特定目錄下所含內容的文件的首選文件名

3 文件組織(File Organization)

一個文件由被空行分割而成的段落以及標識每個段落的可選注釋共同組成。超過2000行的程序難以閱讀,應該盡量避免。"Java源文件範例"提供了一個布局合理的Java程序範例。

3.1 Java源文件(Java Source Files)

每個Java源文件都包含一個單一的公共類或介面。若私有類和介面與一個公共類相關聯,可以將它們和公共類放入同一個源文件。公共類必須是這個文件中的第一個類或介面。

Java源文件還遵循以下規則:

- 開頭注釋(參見"開頭注釋")
- 包和引入語句(參見"包和引入語句")
- 類和介面聲明(參見"類和介面聲明")

3.1.1 開頭注釋(Beginning Comments)

所有的源文件都應該在開頭有一個C語言風格的注釋,其中列出類名、版本信息、日期和版權聲明:

/*
* Classname
*
* Version information
*
* Date
*
* Copyright notice
*/

3.1.2 包和引入語句(Package and Import Statements)

在多數Java源文件中,第一個非注釋行是包語句。在它之後可以跟引入語句。例如:

package java.awt;

import java.awt.peer.CanvasPeer;

3.1.3 類和介面聲明(Class and Interface Declarations)

下表描述了類和介面聲明的各個部分以及它們出現的先後次序。參見"Java源文件範例"中一個包含注釋的例子。

類/介面聲明的各部分 註解
1 類/介面文檔注釋(/**……*/) 該注釋中所需包含的信息,參見"文檔注釋"
2 類或介面的聲明
3 類/介面實現的注釋(/*……*/)如果有必要的話 該注釋應包含任何有關整個類或介面的信息,而這些信息又不適合作為類/介面文檔注釋。
4 類的(靜態)變數 首先是類的公共變數,隨後是保護變數,再後是包一級別的變數(沒有訪問修飾符,access modifier),最後是私有變數。
5 實例變數 首先是公共級別的,隨後是保護級別的,再後是包一級別的(沒有訪問修飾符),最後是私有級別的。
6 構造器
7 方法 這些方法應該按功能,而非作用域或訪問許可權,分組。例如,一個私有的類方法可以置於兩個公有的實例方法之間。其目的是為了更便於閱讀和理解代碼。

4 縮進排版(Indentation)

4個空格常被作為縮進排版的一個單位。縮進的確切解釋並未詳細指定(空格 vs. 製表符)。一個製表符等於8個空格(而非4個)。

4.1 行長度(Line Length)

盡量避免一行的長度超過80個字元,因為很多終端和工具不能很好處理之。

注意:用於文檔中的例子應該使用更短的行長,長度一般不超過70個字元。

4.2 換行(Wrapping Lines)

當一個表達式無法容納在一行內時,可以依據如下一般規則斷開之:

- 在一個逗號後面斷開
- 在一個操作符前面斷開
- 寧可選擇較高級別(higher-level)的斷開,而非較低級別(lower-level)的斷開
- 新的一行應該與上一行同一級別表達式的開頭處對齊
- 如果以上規則導致你的代碼混亂或者使你的代碼都堆擠在右邊,那就代之以縮進8個空格。

以下是斷開方法調用的一些例子:

someMethod(longExpression1, longExpression2, longExpression3,
longExpression4, longExpression5);

var = someMethod1(longExpression1,
someMethod2(longExpression2,
longExpression3));

以下是兩個斷開算術表達式的例子。前者更好,因為斷開處位於括弧表達式的外邊,這是個較高級別的斷開。

longName1 = longName2 * (longName3 + longName4 - longName5)
+ 4 * longname6; //PREFFER

longName1 = longName2 * (longName3 + longName4
- longName5) + 4 * longname6; //AVOID

以下是兩個縮進方法聲明的例子。前者是常規情形。後者若使用常規的縮進方式將會使第二行和第三行移得很靠右,所以代之以縮進8個空格

//CONVENTIONAL INDENTATION
someMethod(int anArg, Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}

//INDENT 8 SPACES TO AVOID VERY DEEP INDENTS
private static synchronized horkingLongMethodName(int anArg,
Object anotherArg, String yetAnotherArg,
Object andStillAnother) {
...
}

if語句的換行通常使用8個空格的規則,因為常規縮進(4個空格)會使語句體看起來比較費勁。比如:

//DON』T USE THIS INDENTATION
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) { //BAD WRAPS
doSomethingAboutIt(); //MAKE THIS LINE EASY TO MISS
}

//USE THIS INDENTATION INSTEAD
if ((condition1 && condition2)
|| (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}

//OR USE THIS
if ((condition1 && condition2) || (condition3 && condition4)
||!(condition5 && condition6)) {
doSomethingAboutIt();
}

這里有三種可行的方法用於處理三元運算表達式:

alpha = (aLongBooleanExpression) ? beta : gamma;

alpha = (aLongBooleanExpression) ? beta
: gamma;

alpha = (aLongBooleanExpression)
? beta
: gamma;

5 注釋(Comments)

Java程序有兩類注釋:實現注釋(implementation comments)和文檔注釋(document comments)。實現注釋是那些在C++中見過的,使用/*...*/和//界定的注釋。文檔注釋(被稱為"doc comments")是Java獨有的,並由/**...*/界定。文檔注釋可以通過javadoc工具轉換成HTML文件。

實現注釋用以注釋代碼或者實現細節。文檔注釋從實現自由(implementation-free)的角度描述代碼的規范。它可以被那些手頭沒有源碼的開發人員讀懂。

注釋應被用來給出代碼的總括,並提供代碼自身沒有提供的附加信息。注釋應該僅包含與閱讀和理解程序有關的信息。例如,相應的包如何被建立或位於哪個目錄下之類的信息不應包括在注釋中。

在注釋里,對設計決策中重要的或者不是顯而易見的地方進行說明是可以的,但應避免提供代碼中己清晰表達出來的重復信息。多餘的的注釋很容易過時。通常應避免那些代碼更新就可能過時的注釋。

注意:頻繁的注釋有時反映出代碼的低質量。當你覺得被迫要加註釋的時候,考慮一下重寫代碼使其更清晰。

注釋不應寫在用星號或其他字元畫出來的大框里。注釋不應包括諸如製表符和回退符之類的特殊字元。

5.1 實現注釋的格式(Implementation Comment Formats)

程序可以有4種實現注釋的風格:塊(block)、單行(single-line)、尾端(trailing)和行末(end-of-line)。

5.1.1 塊注釋(Block Comments)

塊注釋通常用於提供對文件,方法,數據結構和演算法的描述。塊注釋被置於每個文件的開始處以及每個方法之前。它們也可以被用於其他地方,比如方法內部。在功能和方法內部的塊注釋應該和它們所描述的代碼具有一樣的縮進格式。

塊注釋之首應該有一個空行,用於把塊注釋和代碼分割開來,比如:

/*
* Here is a block comment.
*/

塊注釋可以以/*-開頭,這樣indent(1)就可以將之識別為一個代碼塊的開始,而不會重排它。

/*-
* Here is a block comment with some very special
* formatting that I want indent(1) to ignore.
*
* one
* two
* three
*/

注意:如果你不使用indent(1),就不必在代碼中使用/*-,或為他人可能對你的代碼運行indent(1)作讓步。

參見"文檔注釋"

5.1.2 單行注釋(Single-Line Comments)

短注釋可以顯示在一行內,並與其後的代碼具有一樣的縮進層級。如果一個注釋不能在一行內寫完,就該採用塊注釋(參見"塊注釋")。單行注釋之前應該有一個空行。以下是一個Java代碼中單行注釋的例子:

if (condition) {

/* Handle the condition. */
...
}

5.1.3 尾端注釋(Trailing Comments)

極短的注釋可以與它們所要描述的代碼位於同一行,但是應該有足夠的空白來分開代碼和注釋。若有多個短注釋出現於大段代碼中,它們應該具有相同的縮進。

以下是一個Java代碼中尾端注釋的例子:

if (a == 2) {
return TRUE; /* special case */
} else {
return isPrime(a); /* works only for odd a */
}

5.1.4 行末注釋(End-Of-Line Comments)

注釋界定符"//",可以注釋掉整行或者一行中的一部分。它一般不用於連續多行的注釋文本;然而,它可以用來注釋掉連續多行的代碼段。以下是所有三種風格的例子:

if (foo > 1) {

// Do a double-flip.
...
}
else {
return false; // Explain why here.
}

//if (bar > 1) {
//
// // Do a triple-flip.
// ...
//}
//else {
// return false;
//}

5.2 文檔注釋(Documentation Comments)

注意:此處描述的注釋格式之範例,參見"Java源文件範例"

若想了解更多,參見"How to Write Doc Comments for Javadoc",其中包含了有關文檔注釋標記的信息(@return, @param, @see):

http://java.sun.com/javadoc/writingdoccomments/index.html

若想了解更多有關文檔注釋和javadoc的詳細資料,參見javadoc的主頁:

http://java.sun.com/javadoc/index.html

文檔注釋描述Java的類、介面、構造器,方法,以及欄位(field)。每個文檔注釋都會被置於注釋定界符/**...*/之中,一個注釋對應一個類、介面或成員。該注釋應位於聲明之前:

/**
* The Example class provides ...
*/
public class Example { ...

注意頂層(top-level)的類和介面是不縮進的,而其成員是縮進的。描述類和介面的文檔注釋的第一行(/**)不需縮進;隨後的文檔注釋每行都縮進1格(使星號縱向對齊)。成員,包括構造函數在內,其文檔注釋的第一行縮進4格,隨後每行都縮進5格。

若你想給出有關類、介面、變數或方法的信息,而這些信息又不適合寫在文檔中,則可使用實現塊注釋(見5.1.1)或緊跟在聲明後面的單行注釋(見5.1.2)。例如,有關一個類實現的細節,應放入緊跟在類聲明後面的實現塊注釋中,而不是放在文檔注釋中。

文檔注釋不能放在一個方法或構造器的定義塊中,因為Java會將位於文檔注釋之後的第一個聲明與其相關聯。

6 聲明(Declarations)

6.1 每行聲明變數的數量(Number Per Line)

推薦一行一個聲明,因為這樣以利於寫注釋。亦即,

int level; // indentation level
int size; // size of table

要優於,

int level, size;

不要將不同類型變數的聲明放在同一行,例如:

int foo, fooarray[]; //WRONG!

注意:上面的例子中,在類型和標識符之間放了一個空格,另一種被允許的替代方式是使用製表符:

int level; // indentation level
int size; // size of table
Object currentEntry; // currently selected table entry

6.2 初始化(Initialization)

盡量在聲明局部變數的同時初始化。唯一不這么做的理由是變數的初始值依賴於某些先前發生的計算。

6.3 布局(Placement)

只在代碼塊的開始處聲明變數。(一個塊是指任何被包含在大括弧"{"和"}"中間的代碼。)不要在首次用到該變數時才聲明之。這會把注意力不集中的程序員搞糊塗,同時會妨礙代碼在該作用域內的可移植性。

void myMethod() {
int int1 = 0; // beginning of method block

if (condition) {
int int2 = 0; // beginning of "if" block
...
}
}

該規則的一個例外是for循環的索引變數

for (int i = 0; i < maxLoops; i++) { ... }

避免聲明的局部變數覆蓋上一級聲明的變數。例如,不要在內部代碼塊中聲明相同的變數名:

int count;
...
myMethod() {
if (condition) {
int count = 0; // AVOID!
...
}
...
}

6.4 類和介面的聲明(Class and Interface Declarations)

當編寫類和介面是,應該遵守以下格式規則:

- 在方法名與其參數列表之前的左括弧"("間不要有空格
- 左大括弧"{"位於聲明語句同行的末尾
- 右大括弧"}"另起一行,與相應的聲明語句對齊,除非是一個空語句,"}"應緊跟在"{"之後

class Sample extends Object {
int ivar1;
int ivar2;

Sample(int i, int j) {
ivar1 = i;
ivar2 = j;
}

int emptyMethod() {}

...
}

- 方法與方法之間以空行分隔

7 語句(Statements)

7.1 簡單語句(Simple Statements)

每行至多包含一條語句,例如:

argv++; // Correct
argc--; // Correct
argv++; argc--; // AVOID!

7.2 復合語句(Compound Statements)

復合語句是包含在大括弧中的語句序列,形如"{ 語句 }"。例如下面各段。

- 被括其中的語句應該較之復合語句縮進一個層次
- 左大括弧"{"應位於復合語句起始行的行尾;右大括弧"}"應另起一行並與復合語句首行對齊。
- 大括弧可以被用於所有語句,包括單個語句,只要這些語句是諸如if-else或for控制結構的一部分。這樣便於添加語句而無需擔心由於忘了加括弧而引入bug。

7.3 返回語句(return Statements)

一個帶返回值的return語句不使用小括弧"()",除非它們以某種方式使返回值更為顯見。例如:

return;

return myDisk.size();

return (size ? size : defaultSize);

7.4 if,if-else,if else-if else語句(if, if-else, if else-if else Statements)

if-else語句應該具有如下格式:

if (condition) {
statements;
}

if (condition) {
statements;
} else {
statements;
}

if (condition) {
statements;
} else if (condition) {
statements;
} else{
statements;
}

注意:if語句總是用"{"和"}"括起來,避免使用如下容易引起錯誤的格式:

if (condition) //AVOID! THIS OMITS THE BRACES {}!
statement;

7.5 for語句(for Statements)

一個for語句應該具有如下格式:

for (initialization; condition; update) {
statements;
}

一個空的for語句(所有工作都在初始化,條件判斷,更新子句中完成)應該具有如下格式:

for (initialization; condition; update);

當在for語句的初始化或更新子句中使用逗號時,避免因使用三個以上變數,而導致復雜度提高。若需要,可以在for循環之前(為初始化子句)或for循環末尾(為更新子句)使用單獨的語句。

7.6 while語句(while Statements)

一個while語句應該具有如下格式

while (condition) {
statements;
}

一個空的while語句應該具有如下格式:

while (condition);

7.7 do-while語句(do-while Statements)

一個do-while語句應該具有如下格式:

do {
statements;
} while (condition);

7.8 switch語句(switch Statements)

一個switch語句應該具有如下格式:

switch (condition) {
case ABC:
statements;
/* falls through */
case DEF:
statements;
break;

case XYZ:
statements;
break;

default:
statements;
break;
}

每當一個case順著往下執行時(因為沒有break語句),通常應在break語句的位置添加註釋。上面的示例代碼中就包含注釋/* falls through */。

7.9 try-catch語句(try-catch Statements)

一個try-catch語句應該具有如下格式:

try {
statements;
} catch (ExceptionClass e) {
statements;
}

一個try-catch語句後面也可能跟著一個finally語句,不論try代碼塊是否順利執行完,它都會被執行。

try {
statements;
} catch (ExceptionClass e) {
statements;
} finally {
statements;
}

8 空白(White Space)

8.1 空行(Blank Lines)

空行將邏輯相關的代碼段分隔開,以提高可讀性。

下列情況應該總是使用兩個空行:

- 一個源文件的兩個片段(section)之間
- 類聲明和介面聲明之間

下列情況應該總是使用一個空行:

- 兩個方法之間
- 方法內的局部變數和方法的第一條語句之間
- 塊注釋(參見"5.1.1")或單行注釋(參見"5.1.2")之前
- 一個方法內的兩個邏輯段之間,用以提高可讀性

8.2 空格(Blank Spaces)

下列情況應該使用空格:

- 一個緊跟著括弧的關鍵字應該被空格分開,例如:

while (true) {
...
}

注意:空格不應該置於方法名與其左括弧之間。這將有助於區分關鍵字和方法調用。
- 空白應該位於參數列表中逗號的後面
- 所有的二元運算符,除了".",應該使用空格將之與操作數分開。一元操作符和操作數之間不因該加空格,比如:負號("-")、自增("++")和自減("--")。例如:
a += c + d;
a = (a + b) / (c * d);

while (d++ = s++) {
n++;
}
printSize("size is " + foo + "\n");

- for語句中的表達式應該被空格分開,例如:
for (expr1; expr2; expr3)

- 強制轉型後應該跟一個空格,例如:
myMethod((byte) aNum, (Object) x);
myMethod((int) (cp + 5), ((int) (i + 3)) + 1);

9 命名規范(Naming Conventions)

命名規范使程序更易讀,從而更易於理解。它們也可以提供一些有關標識符功能的信息,以助於理解代碼,例如,不論它是一個常量,包,還是類。

標識符類型 命名規則 例子
包(Packages) 一個唯一包名的前綴總是全部小寫的ASCII字母並且是一個頂級域名,通常是com,e,gov,mil,net,org,或1981年ISO 3166標准所指定的標識國家的英文雙字元代碼。包名的後續部分根據不同機構各自內部的命名規范而不盡相同。這類命名規范可能以特定目錄名的組成來區分部門(department),項目(project),機器(machine),或注冊名(login names)。 com.sun.eng
com.apple.quicktime.v2
e.cmu.cs.bovik.cheese
類(Classes) 命名規則:類名是個一名詞,採用大小寫混合的方式,每個單詞的首字母大寫。盡量使你的類名簡潔而富於描述。使用完整單詞,避免縮寫詞(除非該縮寫詞被更廣泛使用,像URL,HTML) class Raster;
class ImageSprite;
介面(Interfaces) 命名規則:大小寫規則與類名相似 interface RasterDelegate;
interface Storing;
方法(Methods) 方法名是一個動詞,採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。 run();
runFast();
getBackground();
變數(Variables) 除了變數名外,所有實例,包括類,類常量,均採用大小寫混合的方式,第一個單詞的首字母小寫,其後單詞的首字母大寫。變數名不應以下劃線或美元符號開頭,盡管這在語法上是允許的。
變數名應簡短且富於描述。變數名的選用應該易於記憶,即,能夠指出其用途。盡量避免單個字元的變數名,除非是一次性的臨時變數。臨時變數通常被取名為i,j,k,m和n,它們一般用於整型;c,d,e,它們一般用於字元型。 char c;
int i;
float myWidth;
實例變數(Instance Variables) 大小寫規則和變數名相似,除了前面需要一個下劃線 int _employeeId;
String _name;
Customer _customer;
常量(Constants) 類常量和ANSI常量的聲明,應該全部大寫,單詞間用下劃線隔開。(盡量避免ANSI常量,容易引起錯誤) static final int MIN_WIDTH = 4;
static final int MAX_WIDTH = 999;
static final int GET_THE_CPU = 1;

10 編程慣例(Programming Practices)

10.1 提供對實例以及類變數的訪問控制(Providing Access to Instance and Class Variables)

若沒有足夠理由,不要把實例或類變數聲明為公有。通常,實例變數無需顯式的設置(set)和獲取(gotten),通常這作為方法調用的邊緣效應 (side effect)而產生。

一個具有公有實例變數的恰當例子,是類僅作為數據結構,沒有行為。亦即,若你要使用一個結構(struct)而非一個類(如果java支持結構的話),那麼把類的實例變數聲明為公有是合適的。

與java語言編程規范相關的資料

熱點內容
pythonclass使用方法 瀏覽:221
移動加密軟體去哪下載 瀏覽:281
php彈出alert 瀏覽:207
吉林文檔課件加密費用 瀏覽:131
感測器pdf下載 瀏覽:284
隨車拍app綁定什麼設備 瀏覽:896
方維團購系統源碼 瀏覽:991
linux反彈shell 瀏覽:158
列印機介面加密狗還能用嗎 瀏覽:299
二板股票源碼 瀏覽:448
度人經pdf 瀏覽:902
怎麼配置android遠程伺服器地址 瀏覽:960
java程序員看哪些書 瀏覽:943
什麼app可以免費和外國人聊天 瀏覽:797
pdf手寫筆 瀏覽:182
別永遠傷在童年pdf 瀏覽:990
愛上北斗星男友在哪個app上看 瀏覽:421
主力散戶派發源碼 瀏覽:671
linux如何修復伺服器時間 瀏覽:61
榮縣優途網約車app叫什麼 瀏覽:479