studio配置CodeStyle可以很好的幫助我們檢測代碼規范性,保持大家的代碼統一,來看看怎么配置和使用吧
代碼規范,自己公司的一套
代碼規范
一、 簡介
A. 目的
本文提供一整套編寫高效可靠的 Java代碼的標准、約定和指南。它們以安全可靠的軟件工程原則為基礎,使代碼易於理解、維護和增強。而且,通過遵循這些程序設計標准,你作為一個 Java軟件開發者的生產效率會有顯著提高。經驗證明,若從一開始就花時間編寫高質量的代碼,則在軟件開發階段,對代碼的修改要容易很多。最后,遵循一套通用的程序設計標准將帶來更大的一致性,使軟件開發團隊的效率明顯提高。
Note: 規范編碼的目的是讓開發者更容易理解其他人的代碼,而不是約束你編碼的方式
B. 范圍
本指南僅適用於使用Java編寫的Android程序代碼。
C. 參考資料
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html
http://source.android.com/source/code-style.html
二、 快速入門
l 駝峰式命名(大小寫交替)
錯誤:
public classmyClass
publicinterface foo
public finalstatic int max = 100
public intFooValue
正確:
public classMyClass
publicinterface IFoo
public finalstatic int MAX = 100
public intfooValue
l 使用Javadoc識別的注釋
在函數聲明前添加注釋(輸入”/**”+回車)
l 精簡函數體(最好不要超過40行)
l 局部變量隨用隨聲明(盡量縮小變量的作用域)
l 每行最長100字符
l 縮進用4個空格代替TAB
l 成員變量名用m開頭,static變量名用s開頭
l 前大括號“{”不要單占一行
錯誤:
if(condition)
{
//dosomething
}
正確:
if(condition) {
//do something
}
l 多利用標准注解
錯誤:
publicvoidonCreate(Bundle savedInstanceState) {
正確:
@Override
publicvoidonCreate(Bundle savedInstanceState) {
l 少用不常見縮寫
錯誤:opnDlg
正確:openDialog
三、 命名
A. Java命名規范
命名應符合駝峰式規則,利用大小寫字母交替來區分名稱中的不同單詞,即應采用小寫字母,但類名、接口名以及任何非初始單詞的第一個字母要大寫。
1. 盡量使用完整的英文描述符,采用適用於該領域的術語
2. 采用大小寫混合使名字可讀
3. 盡量少用縮寫,但如果用了,要明智地使用。
4. 避免使用類似的名字,或者僅僅是大小寫不同的名字
類型 |
規則 |
示例 |
包名 |
全部小寫字母,URL倒序 |
package com.domain.project |
類名 |
首字母大寫,使用描述性強的名詞,避免使用縮寫,除非該縮寫十分通用(Url、Html) |
class Raster; class ImageSprite; |
接口 |
同上。通常以字母I開頭。回調接口等特殊情況可不加I。 |
interface IRasterDelegate; interface IStoring; interface OnClickListener; |
方法 |
使用動詞,駝峰式命名,首字母小寫 |
run(); runFast(); getBackground(); |
變量 |
使用有意義的簡短的單詞,駝峰式,首字母小寫。 成員變量m開頭,JavaBean例外。 static變量s開頭。 |
int i; float myWidth; int mPrivate; static MyClass sSingleton; |
常量 |
全部大寫,用下划線分割單詞,static final修飾 |
static final int MIN_WIDTH = 4; |
B. Android命名規范
類型 |
規則 |
示例 |
Activity |
XxxxActivity |
MainActivity |
View |
XxxView,XxxLayout |
RedTextView、BluetoothDialog |
Service |
XxxService |
|
BroadcastReceiver |
XxxxReceiver |
|
工具方法類 |
Utils或Manager為后綴 |
ThreadPoolManager、LogUtils |
基礎類 |
BaseXxx |
BaseActivity、BaseFragment、BaseDao |
布局xml |
全部小寫,以下划線分割,使用名詞命名。Activity或Fragment的布局文件必須與其類名對應,對應規則為:將所有字母都轉為小寫,將類型和功能調換。 |
activity_main.xml fragment_homework.xml dialog_bluetooth.xml //對話框 item_message.xml //列表Item vw_titlebar.xml //其他布局文件 |
布局id |
全部小寫,以下划線分割,view縮寫_view的邏輯名稱 |
layout_city、tv_name、btn_submit、img_head、list_message |
圖片文件 |
全部小寫,以下划線分割。 |
xxxx_checked.png xxxx_focused.png xxxx_selected.png xxxx_pressed.png xxxx_disabled.png xxxx_normal.png |
Drawable xml |
selector_xxx、shape_xxx |
|
四、 注釋
1. 每個類必須有文件頭注釋。簡要說明類的作用,注明作者和創建時間。標准模板:
/**
* Filedescription.
*
* @author ${USER}
* @date ${DATE}
*/
2. 大部分方法都需要方法注釋,一些不言自明的方法除外。簡要說明方法作用,並解釋參數、返回值、拋出異常。方法注釋請使用JavaDoc標准。例如:
/**
* Description.
*
* @param arg1 description
* @param arg2 description
* @return description
* @throws Exception description
*/
public int getFoo(int arg1, booleanarg2) throws Exception {
return 0;
}
3. 關鍵邏輯或者較復雜的邏輯處,應該添加必要的注釋。單行注釋使用”//”,多行注釋使用/**/。
4. 注釋必須在程序改變時實時更新。
5. 簡單明了,確保任何程序員都可以讀懂。
五、 其他規范
1. 所有文件編碼格式為UTF-8。
2. 變量的作用域應該盡量小,需要時才聲明,並盡快進行初始化。
3. 前大括號不要單獨占用一行,不要省略單行代碼塊的大括號。
正確:
if (condition) {
statements;
}
錯誤:
if (condition) //沒有大括號
statement;
錯誤:
if (condition) //前大括號單獨占用一行
{
statement;
}
4. 盡量少使用縮寫,除非該縮寫很常見(Html、Url)
5. 縮進使用4個空格替代Tab。
6. 編寫代碼后必須格式化。AndroidStudio默認格式化快捷鍵:Ctrl+Alt+L。
7. 在代碼中邏輯性代碼塊的起始、結尾處,都應該加入空行,並在起始處寫注釋。
相對獨立的程序塊之間必須加空行。
8. 一行代碼不超過100字符。超過100字符,請換行或者提取變量。
9. 方法體不超過40行。若超過,則應考慮拆分成多個方法。
10. 盡量避免使用枚舉類,使用常量代替。
11. 只要是合法的,就把@Override注解給用上。
12. 規范TODO使用,加上日期和描述,並及時解決刪除。AndroidStudio中可以敲todo來使用標准模板。例如:
// TODO: 2017/1/5簡單描述
13. 采用統一的LogUtils來輸出Log。輸出的Log要簡明扼要。充足的log可以便於定位錯誤,但Log太多會影響程序性能(I/O耗時)。正式版本應該關閉Log開關。
14. Java文件中不允許有多余的import,不允許importjava.io. *
15. Warning要解決。
16. 不允許硬編碼,狀態值必須定義常量,並添加注釋。
配置CodeStyle
Android Studio統一配置
1. 配置CodeStyle
按照上圖標注順序,導入AndroidCodeStyle.xml文件。
2. 工程文件編碼統一為UTF-8
3. 注釋模板
注意:請將${USER}修改為自己的名稱,模板前后不要有多余的空格與換行符。
/**
* File description.
*
* @author ${USER}
* @date ${DATE}
*/
4. 安裝使用CheckStyle插件
安裝完成后,重啟AndroidStudio。然后添加CheckStyle腳本:
配置實時檢查
:
使用方法簡介:
- 配置好實時檢查后,在編輯器中,不符合風格的代碼會直接出現警告:
- 在Java文件中右鍵,點擊如圖選項,即可查看當前文件所有不符合風格的代碼段: