Android開發(fā)規(guī)范

一:介紹

1:為什么需要編碼規(guī)范

編碼規(guī)范對于程序員而言尤為重要领虹,有以下幾個原因:

  • 一個軟件的生命周期中捆探,80%的花費在于維護
  • 幾乎沒有任何一個軟件揍移,在其整個生命周期中只损,均由最初的開發(fā)人員來維護
  • 編碼規(guī)范可以改善軟件的可讀性,可以讓程序員盡快而徹底地理解新的代碼
  • 如果你將源碼作為產(chǎn)品發(fā)布包各,就需要確任它是否被很好的打包并且清晰無誤摘仅,一如你已構(gòu)建的其它任何產(chǎn)品

二:命名

1.包命名

命名規(guī)則:一個唯一包名的前綴總是全部小寫的ASCII 字母并且是一個頂級域名,通常是com问畅,edu娃属,gov,mil护姆,net矾端,org。包名的后續(xù)部分根據(jù)不同機構(gòu)各自內(nèi)部的命名規(guī)范而不盡相同卵皂。這類命名規(guī)范可能以特定目錄名的組成來區(qū)分部門 (department) 秩铆,項目(project),機器(machine)灯变,或注冊名(login names)殴玛。

例如: com.huaerlala.cu.activitys

規(guī)約:包命名必須以com.hymobile開始,后面跟有項目名稱(或者縮寫),再后面為模塊名或?qū)蛹壝Q添祸。

如:com.huaerlala.項目縮寫.模塊名 --> com.huaerlala.nloc.bookmark
如:com.huaerlala.項目縮寫.層級名 --> com.huaerlala.nloc.activities
2.類和接口命名

命名規(guī)則:類名是個一名詞滚粟,采用大小寫混合的方式,每個單詞的首字母大寫刃泌。盡量使你的類名簡潔而富于描述坦刀。使用完整單詞愧沟,避免縮寫詞(除非該縮寫詞被更廣泛使用蔬咬,像 URL鲤遥,HTML)
接口一般要使用able、ible林艘、er 等后綴

例如: class Raster;  class ImageSprite; ImagePagerChangeListener

類命名規(guī)范:

Activity      -->     LoginActivity
Fragment      -->     HomeFm
Model         -->     BaseModel
Parser        -->     BaseParser
Util          -->     DataUtils
View          -->     HWebView


其余略

3:方法的命名

命名規(guī)則:方法名是一個動詞盖奈,采用大小寫混合的方式,第一個單詞的首字母小寫狐援,其后單詞的首字母大寫钢坦。

例如: public void run(); public String getBookName();

類中常用方法的命名:
類的獲取方法(一般具有返回值)一般要求在被訪問的字段名前加上get,

如getFirstName()啥酱,getLastName()爹凹。

一般來說,get前綴方法返回的是單個值镶殷,find前綴的方法返回的是列表值禾酱。
類的設置方法(一般返回類型為void):被訪問字段名的前面加上前綴 set,

 如setFirstName(),setLastName().

類的布爾型的判斷方法一般要求方法名使用單詞 is或has 做前綴绘趋,

如isPersistent()颤陶,isString()。

或者使用具有邏輯意義的單詞陷遮,例如equal 或equals滓走。
類的普通方法一般采用完整的英文描述說明成員方法功能,第一個單詞盡可能采用動詞帽馋,首字母小寫搅方,

如openFile(),addCount()绽族。
4:變量命名

命名規(guī)則:第一個單詞的首字母小寫姨涡,其后單詞的首字母大寫。變量名不應以下劃線或美元符號開頭项秉,盡管這在語法上是允許的绣溜。變量名應簡短且富于描述。變量名的選用應該易于記憶娄蔼,即怖喻,能夠指出其用途。盡量避免單個字符的變量名岁诉,除非是一次性的臨時變量锚沸。臨時變量通常被取名為 i,j涕癣,k哗蜈,m 和 n,它們一般用于整型;c距潘,d炼列,e,它們一般用于字符型音比。

例如:String bookName; 

規(guī)約:變量命名也必須使用駝峰規(guī)則俭尖,但是首字母必須小寫,變量名盡可能的使用名詞或名詞詞組洞翩。同樣要求簡單易懂稽犁,不允許出現(xiàn)無意義的單詞。

如:String bookName;  正確!
如:String bookNameString; 錯誤骚亿!
5:成員變量命名

同變量命名已亥,但不要在私有變量前添加m字樣!

6:常量命名

命名規(guī)則:類常量的聲明来屠,應該全部大寫虑椎,單詞間用下劃線隔開。

例如:static final int MIN_WIDTH = 4; 
例如:static final int MAX_WIDTH = 999; 
例如:static final int GET_THE_CPU = 1;  
7:異常命名

自定義異常的命名必須以Exception為結(jié)尾的妖。已明確標示為一個異常绣檬。

8:layout 命名

規(guī)約:layout xml 的命名必須以 全部單詞小寫,單詞間以下劃線分割嫂粟,并且使用名詞或名詞詞組娇未,即使用 模塊名_功能名稱 來命名。

如:knowledge_gained_main.xml正確
如:list_book.xml錯誤星虹!

規(guī)約:ListView 或者RecyclerView的item:
模塊名_list_item 來命名零抬。

如:mine_list_item.xml
9:id 命名

規(guī)約:layout 中所使用的id必須以全部單詞小寫,單詞間以下劃線分割宽涌,并且使用名詞或名詞詞組平夜,并且要求能夠通過id直接理解當前組件要實現(xiàn)的功能。

如:某TextView @+id/textbookname 錯誤 !應為 @+id/book_name_show_tv
如:某EditText @+id/textbookname 錯誤 !應為 @+id/book_name_et

Button       -->     bt
CheckBox     -->     cb
RadioButton  -->     rb
RadioGroup   -->     rg
ImageView    -->     iv
ImageButton  -->     ib
…其余略
10:資源命名

規(guī)約:layout中所使用的所有資源(如drawable,style等)命名必須以全部單詞小寫卸亮,單詞間以下劃線分割忽妒,并且盡可能的使用名詞或名詞組,即使用 模塊名_用途 來命名兼贸。如果為公共資源段直,如分割線等,則直接用用#####11:途來命名

如:menu_icon_navigate.png ? 正確
如:某分割線:line.png  或 separator.png ?正確

三:注釋

Java 程序有兩類注釋:實現(xiàn)注釋(implementation comments)和文檔注釋(document comments)溶诞。實現(xiàn)注釋是使用/.../和//界定的注釋鸯檬。文檔注釋(被稱為"doc comments")由/*.../界定饮六。文檔注釋可以通過javadoc 工具轉(zhuǎn)換成HTML 文件区匠。

1:文件注釋

所有的源文件都應該在開頭有一個注釋瓷翻,其中列出類名缺虐、版本信息、日期和版權(quán)聲明功茴。
如下:

/*
 *文件名 
 *包含類名列表
 *版本信息庐冯,版本號
 *創(chuàng)建日期。
 *版權(quán)聲明
 */
2:類注釋

每一個類都要包含如下格式的注釋痊土,以說明當前類的功能等肄扎。

/**
 *類名
 *@author 作者 <br/>
 *實現(xiàn)的主要功能。
 *創(chuàng)建日期
 *修改者赁酝,修改日期,修改內(nèi)容旭等。
 */
3:方法注釋

每一個方法都要包含 如下格式的注釋 包括當前方法的用途酌呆,當前方法參數(shù)的含義,當前方法返回值的內(nèi)容和拋出異常的列表搔耕。

/**
 * 
 * 方法的一句話概述
 * <p>方法詳述(簡單方法可不必詳述)</p>
 * @param s 說明參數(shù)含義
 * @return 說明返回值含義
 * @throws IOException 說明發(fā)生此異常的條件
 * @throws NullPointerException 說明發(fā)生此異常的條件
 */
4:類成員變量和常量注釋

成員變量和常量需要使用java doc形式的注釋隙袁,以說明當前變量或常量的含義

/**
 *XXXX含義
 */
5:其他注釋

方法內(nèi)部的注釋 如果需要多行 使用/…… /形式,如果為單行是用//……形式的注釋弃榨。不要再方法內(nèi)部使用 java doc 形式的注釋“/……**/”菩收,簡單的區(qū)分方法是,java doc形式的注釋在 eclipse中為藍色鲸睛,普通注釋為綠色娜饵。

6:XML注釋

規(guī)約:如果當前l(fā)ayout 或資源需要被多處調(diào)用,或為公共使用的layout(若list_item)官辈,則需要在xml寫明注釋箱舞。要求注釋清晰易懂。

四:代碼風格

1:縮進

規(guī)約:使用Tab進行縮進

2:空行

空行將邏輯相關(guān)的代碼段分隔開拳亿,以提高可讀性晴股。
下列情況應該總是使用空行:
一個源文件的兩個片段(section)之間
類聲明和接口聲明之間
兩個方法之間
方法內(nèi)的局部變量和方法的第一條語句之間
一個方法內(nèi)的兩個邏輯段之間,用以提高可讀性

規(guī)約:通常在 變量聲明區(qū)域之后要用空行分隔肺魁,常量聲明區(qū)域之后要有空行 分隔电湘,方法聲明之前要有空行分隔。

3:行寬

無特別規(guī)定鹅经,因為現(xiàn)在的顯示器都比較大寂呛,所以推薦使用120進行設置。

五:規(guī)約

1:方法

一個方法盡量不要超過15行瞬雹,如果方法太長昧谊,說明當前方法業(yè)務邏輯已經(jīng)非常復雜,那么就需要進行方法拆分酗捌,保證每個方法只作一件事呢诬。
不要使用 try catch 處理業(yè)務邏輯S空堋!I辛阀圾!

2:參數(shù)和返回值

一個方法的參數(shù)盡可能的不要超過4個!
如果一個方法返回的是一個錯誤碼狗唉,請使用異常3鹾妗!
盡可能不要使用null分俯, 替代為異常 或者使用空變量 如返回 List 則可以使用Collections.emptyList()

3:神秘的數(shù)

代碼中不允許出現(xiàn)單獨的數(shù)字肾筐,字符!如果需要使用數(shù)字或字符缸剪,則將它們按照含義封裝為靜態(tài)常量B痤怼(for語句中除外)

4:控制語句

判斷中如有常量,則應將常量置于判斷式的右側(cè)杏节。如:

if ( true == isAdmin())...

盡量不使用三目條件的嵌套唬渗。

所有if 語句必須用{}包括起來,即便是只有一句:

if (true){
//do something......
}
if (true)
i = 0; //不要使用這種

對于循環(huán):

//不推薦方式____________________________________________

while(index < products.getCount()){
//每此都會執(zhí)行一次getCount()方法,
//若此方法耗時則會影響執(zhí)行效率
//而且可能帶來同步問題奋渔,若有同步需求镊逝,請使用同步塊或同步方法
}

//推薦方式______________________________________________

//將操作結(jié)構(gòu)保存在臨時變量里,減少方法調(diào)用次數(shù)
final int count = products.getCount();
while(index < count){
}
5:異常的捕捉處理

通常的思想是只對錯誤采用異常處理:邏輯和編程錯誤嫉鲸,設置錯誤撑蒜,被破壞的數(shù)據(jù),資源耗盡充坑,等等减江。
通常的法則是系統(tǒng)在正常狀態(tài)下以及無重載和硬件失效狀態(tài)下,不應產(chǎn)生任何異常捻爷。
最小化從一個給定的抽象類中導出的異常的個數(shù)辈灼。對于經(jīng)常發(fā)生的可預計事件不要采用異常。不要使用異常實現(xiàn)控制結(jié)構(gòu)也榄。
若有finally 子句巡莹,則不要在try 塊中直接返回,亦不要在finally 中直接返回甜紫。

6:訪問控制

若沒有足夠理由降宅,不要把實例或類變量聲明為公有。通常囚霸,實例變量無需顯式的設置(set)和獲取(gotten)腰根,通常這作為方法調(diào)用的邊緣效應 (side effect)而產(chǎn)生。
一個具有公有實例變量的恰當例子拓型,是類僅作為數(shù)據(jù)結(jié)構(gòu)额嘿,沒有行為瘸恼。亦即,若你要使用一個結(jié)構(gòu)(struct)而非一個類(如果java 支持結(jié)構(gòu)的話)册养,那么把類的實例變量聲明為公有是合適的东帅。

六:約定俗成

1:變量賦值

避免在一個語句中給多個變量賦相同的值。它很難讀懂球拦。例如:

fooBar.fChar = barFoo.lchar = 'c';

不要將賦值運算符用在容易與相等關(guān)系運算符混淆的地方靠闭。例如:

if (c++ = d++) {        // AVOID! (Java disallows) 
     ... 
} 

應該寫成

if ((c++ = d++) != 0) { 
    ... 
} 

不要使用內(nèi)嵌(embedded)賦值運算符試圖提高運行時的效率,這是編譯器的工作坎炼。例如:

  d = (a = b + c) + r;        // AVOID! 

應該寫成

  a = b + c; 
  d = a + r; 
2:圓括號

一般而言愧膀,在含有多種運算符的表達式中使用圓括號來避免運算符優(yōu)先級問題,是個好方法点弯。
即使運算符的優(yōu)先級對你而言可能很清楚扇调,但對其他人未必如此。你不能假設別的程序員和你一樣清楚運算符的優(yōu)先級抢肛。

 if (a == b && c == d)     // AVOID! 注:這里采用這個
 if ((a == b) && (c == d))  // RIGHT
3:返回值

設法讓你的程序結(jié)構(gòu)符合目的。例如:

if (booleanExpression) { 
   return true; 
} else { 
   return false; 
} 

應該代之以如下方法:

return booleanExpression

類似地:

if (condition) { 
   return x; 
} 
return y; 

應該寫做:

return (condition ? x : y);

條件運算符"?"前的表達式
如果一個包含二元運算符的表達式出現(xiàn)在三元運算符" ? : "的"?"之前碳柱,那么應該給表達式添上一對圓括號捡絮。例如:

(x >= 0) ? x : -x

七:種代碼的壞味道

應該在編程中盡量避免這21種“壞味道”。

1:Duplicated Code

代碼重復幾乎是最常見的異味了莲镣。他也是Refactoring 的主要目標之一福稳。代碼重復往
往來自于copy-and-paste 的編程風格。

2:Long method

它是傳統(tǒng)結(jié)構(gòu)化的“遺毒“瑞侮。一個方法應當具有自我獨立的意圖的圆,不要把幾個意圖
放在一起。

3:Large Class

大類就是你把太多的責任交給了一個類半火。這里的規(guī)則是One Class One Responsibility越妈。

4:Divergent Change

一個類里面的內(nèi)容變化率不同。某些狀態(tài)一個小時變一次钮糖,某些則幾個月一年才變一次梅掠;某些狀態(tài)因為這方面的原因發(fā)生變化,而另一些則因為其他方面的原因變一次店归。面向?qū)ο蟮某橄缶褪前严鄬Σ蛔兊暮拖鄬ψ兓喔綦x阎抒。把問題變化的一方面和另一方面相隔離。這使得這些相對不變的可以重用消痛。問題變化的每個方面都可以單獨重用且叁。這種相異變化的共存使得重用非常困難。

5:Shotgun Surgery

這正好和上面相反秩伞。對系統(tǒng)一個地方的改變涉及到其他許多地方的相關(guān)改變逞带。這些變化率和變化內(nèi)容相似的狀態(tài)和行為通常應當放在同一個類中欺矫。

6:Feature Envy

對象的目的就是封裝狀態(tài)以及與這些狀態(tài)緊密相關(guān)的行為。如果一個類的方法頻繁用get 方法存取其他類的狀態(tài)進行計算掰担,那么你要考慮把行為移到涉及狀態(tài)數(shù)目最多的那個類汇陆。

7:Data Clumps

某些數(shù)據(jù)通常像孩子一樣成群玩耍:一起出現(xiàn)在很多類的成員變量中,一起出現(xiàn)在許多方法的參數(shù)中…..带饱,這些數(shù)據(jù)或許應該自己獨立形成對象毡代。

8:Primitive Obsession

面向?qū)ο蟮男率滞ǔA晳T使用幾個原始類型的數(shù)據(jù)來表示一個概念。譬如對于范圍勺疼,他們會使用兩個數(shù)字教寂。對于Money,他們會用一個浮點數(shù)來表示执庐。因為你沒有使用對象來表達問題中存在的概念酪耕,這使得代碼變的難以理解,解決問題的難度大大增加轨淌。好的習慣是擴充語言所能提供原始類型迂烁,用小對象來表示范圍、金額递鹉、轉(zhuǎn)化率盟步、郵政編碼等等。

9:Switch Statement

基于常量的開關(guān)語句是OO 的大敵躏结,你應當把他變?yōu)樽宇惾磁獭tate 或strategy。

10:Parallel Inheritance Hierarchies

并行的繼承層次是shotgun surgery 的特殊情況媳拴。因為當你改變一個層次中的某一個類時黄橘,你必須同時改變另外一個層次的并行子類。

11:Lazy Class

一個干活不多的類屈溉。類的維護需要額外的開銷塞关,如果一個類承擔了太少的責任,應當消除它语婴。

12:Speculative Generality

一個類實現(xiàn)了從未用到的功能和通用性描孟。通常這樣的類或方法唯一的用戶是testcase。不要猶豫砰左,刪除它匿醒。

13:Temporary Field

一個對象的屬性可能只在某些情況下才有意義。這樣的代碼將難以理解缠导。專門建立一個對象來持有這樣的孤兒屬性廉羔,把只和他相關(guān)的行為移到該類。最常見的是一個特定的算法需要某些只有該算法才有用的變量僻造。

14:Message Chain

消息鏈發(fā)生于當一個客戶向一個對象要求另一個對象憋他,然后客戶又向這另一對象要求另一個對象孩饼,再向這另一個對象要求另一個對象,如此如此竹挡。這時镀娶,你需要隱藏分派。

15:Middle Man

對象的基本特性之一就是封裝揪罕,而你經(jīng)常會通過分派去實現(xiàn)封裝梯码。但是這一步不能走得太遠,如果你發(fā)現(xiàn)一個類接口的一大半方法都在做分派好啰,你可能需要移去這個中間人轩娶。

16:Inappropriate Intimacy

某些類相互之間太親密,它們花費了太多的時間去磚研別人的私有部分框往。對人類而言鳄抒,我們也許不應該太假正經(jīng),但我們應當讓自己的類嚴格遵守禁欲主義椰弊。

17:Alternative Classes with Different Interfaces

做相同事情的方法有不同的函數(shù)signature许溅,一致把它們往類層次上移,直至協(xié)議一致秉版。

18:Incomplete Library Class

要建立一個好的類庫非常困難闹司。我們大量的程序工作都基于類庫實現(xiàn)。然而沐飘,如此廣泛而又相異的目標對庫構(gòu)建者提出了苛刻的要求。庫構(gòu)建者也不是萬能的牲迫。有時候我們會發(fā)現(xiàn)庫類無法實現(xiàn)我們需要的功能耐朴。而直接對庫類的修改有非常困難。這時候就需要用各種手段進行Refactoring盹憎。

19:Data Class

對象包括狀態(tài)和行為筛峭。如果一個類只有狀態(tài)沒有行為,那么肯定有什么地方出問題了陪每。

20:Refused Bequest

超類傳下來很多行為和狀態(tài)影晓,而子類只是用了其中的很小一部分。這通常意味著你的類層次有問題檩禾。

21:Comments

經(jīng)常覺得要寫很多注釋表示你的代碼難以理解挂签。如果這種感覺太多,表示你需要Refactoring盼产。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饵婆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子戏售,更是在濱河造成了極大的恐慌侨核,老刑警劉巖草穆,帶你破解...
    沈念sama閱讀 206,378評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異搓译,居然都是意外死亡悲柱,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評論 2 382
  • 文/潘曉璐 我一進店門些己,熙熙樓的掌柜王于貴愁眉苦臉地迎上來豌鸡,“玉大人,你說我怎么就攤上這事轴总≈甭” “怎么了?”我有些...
    開封第一講書人閱讀 152,702評論 0 342
  • 文/不壞的土叔 我叫張陵怀樟,是天一觀的道長功偿。 經(jīng)常有香客問我,道長往堡,這世上最難降的妖魔是什么械荷? 我笑而不...
    開封第一講書人閱讀 55,259評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮虑灰,結(jié)果婚禮上吨瞎,老公的妹妹穿的比我還像新娘。我一直安慰自己穆咐,他們只是感情好颤诀,可當我...
    茶點故事閱讀 64,263評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著对湃,像睡著了一般崖叫。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上拍柒,一...
    開封第一講書人閱讀 49,036評論 1 285
  • 那天心傀,我揣著相機與錄音,去河邊找鬼拆讯。 笑死脂男,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的种呐。 我是一名探鬼主播宰翅,決...
    沈念sama閱讀 38,349評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼陕贮!你這毒婦竟也來了堕油?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,979評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎掉缺,沒想到半個月后卜录,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,469評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡眶明,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,938評論 2 323
  • 正文 我和宋清朗相戀三年艰毒,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搜囱。...
    茶點故事閱讀 38,059評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡丑瞧,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蜀肘,到底是詐尸還是另有隱情绊汹,我是刑警寧澤,帶...
    沈念sama閱讀 33,703評論 4 323
  • 正文 年R本政府宣布扮宠,位于F島的核電站西乖,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏坛增。R本人自食惡果不足惜获雕,卻給世界環(huán)境...
    茶點故事閱讀 39,257評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望收捣。 院中可真熱鬧届案,春花似錦、人聲如沸罢艾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咐蚯。三九已至球碉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仓蛆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工挎春, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留看疙,地道東北人。 一個月前我還...
    沈念sama閱讀 45,501評論 2 354
  • 正文 我出身青樓直奋,卻偏偏與公主長得像能庆,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子脚线,可洞房花燭夜當晚...
    茶點故事閱讀 42,792評論 2 345

推薦閱讀更多精彩內(nèi)容

  • 請看完結(jié)版:Android開發(fā)規(guī)范(完結(jié)版)
    Blankj閱讀 8,599評論 25 115
  • title: Android開發(fā)規(guī)范 摘要 1 前言 2 命名規(guī)范 3 資源文件規(guī)范 4 版本統(tǒng)一規(guī)范 5 第三方...
    大白棧閱讀 1,187評論 0 16
  • 個人總結(jié)的 Android 開發(fā)規(guī)范搁胆,其中控件縮寫及 Android 資源文件命名部分不是很確定,有待商榷。Jav...
    牙鍋子閱讀 1,565評論 0 6
  • Java類類名:大駝峰命名渠旁,所有單詞首寫字母大寫攀例,并且類名最好為名詞.正確public class People{...
    WilsonMing閱讀 764評論 0 2
  • 前些日子,看到我同學顾腊,發(fā)了一條微博粤铭。內(nèi)容大致就是他決定明年換個國家生活了,現(xiàn)在的生活不是很滿意杂靶。而現(xiàn)在他正在泰國教...
    小女不小閱讀 270評論 0 0