日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Java如何給變量取合適的命名

瀏覽:21日期:2022-08-22 08:09:35

一.變量命名風格

變量命名風格通常會根據不同的變量類型來區分,以Java語言為例,根據變量類型不同有兩種命名風格:

1)類成員變量、局部變量

類成員變量、局部變量通常采用駝峰命名風格,如下:

String userName;

2)靜態成員變量、枚舉值、常量

靜態成員變量、枚舉值、常量通常采用所有字母大寫、多個單詞以英文下劃線連接,如:

public static final int MAX_YEARS = 25;​// 建議枚舉類都以Enum結尾enum ColorEnum { RED(0, '紅色'), YELLOW(1, '黃色'), GREEN(2, '綠色'), WHITE(3, '白色'), BLACK(4, '黑色'); private int code; private String name;​ Color(int code, String name) { this.code = code; this.name = name; }}

二.變量命名最高境界

在函數命名那篇中我們說的函數命名最高境界是見字如面,那么對于變量命名來說,最高境界是什么呢? 我認為是:自解釋,即'代碼即注釋'。

為什么這么說呢,因為通常來說一個函數是會有函數注釋的,即使函數名字取的不好,如果注釋寫的比較清楚,對于后續維護人員來說也是了解函數具體功能的一種方式。

而變量則不同,在一個工程里面,變量的數量遠遠大于函數的數量,所以不太可能對于每個變量都去寫注釋,所以如果一個工程的變量命名很糟糕,那么對于后續維護人員來說將是毀滅性的打擊,因為每讀到一個變量,可能就需要去猜測變量的含義,我想沒有哪個人愿意讀到這樣的代碼,永遠記住一點:'代碼是寫給人看的,不是寫給機器看的'。

譬如下面這段代碼的命名就非常糟糕:

ppn = (cpn > 1) ? (cpn - 1) : cpn;npn = (cpn < tpn) ? (cpn + 1) : tpn;p = new Page(ppn, cpn, npn, tpn);

上面這段代碼估計只有原作者清楚地知道各個變量的含義是啥了,

如果修改為下面這種寫法,可讀性會好很多,并且一目了然,很容易知道其大概意圖是計算分頁信息:

prePageNum = (curPageNum > 1) ? (curPageNum - 1) : curPageNum;nextPageNum = (curPageNum < totalPageNum) ? (curPageNum + 1) : totalPageNum;page = new Page(prePageNum, curPageNum, nextPageNum, totalPageNum);

三.變量命名最佳實踐

1)采用名詞或者形容詞來命名變量

變量一般情況下建議使用名詞、名字組合或者形容詞,因為變量一般形容的是一種事物或者事物的屬性,所以用名詞或者名詞組合更容易讓人理解,而形容詞一般用于bool類型的變量。

2)避免使用單字母變量,盡量細化變量含義

在程序中,盡量避免使用單字母變量,唯一可以接受使用單字母變量的場景只有for循環,不過還是不太推薦在for循環中使用單字母變量(用pos、index比for循環的i、j、k要好很多)。

舉個例子,比如下面這行代碼:

double calConeVolume(double b, double d) {return Math.PI * b * b * d / 3;}

咋一看這個函數參數感覺挺清晰,但是一細看,b是什么?d又是什么?如果我要用這個函數,該怎么傳參?估計大部人是一臉懵逼狀,只能進去看實際的函數實現才知道b是圓錐體半徑,d是圓錐體高度;

那么怎么優化這段代碼命名呢?其實很簡單,稍微細化一下變量含義,讓變量名自己去表達實際意圖:

double calConeVolume(double radius, double height) {return Math.PI * radius * radius * height / 3;}

3)變量命名前后用詞需統一

在同一個工程或者一個場景下,變量命名風格需前后統一,比如total和sum都能表示總計的意思,那么所有需要用到'總計'含義的地方要么全部使用total、要么全部使用sum。

保持前后命名風格統一是保證工程代碼良好可讀性的關鍵保證。

4)集合變量用類型或者復數s作為后綴

在java中,有很多集合,比如List、Map、Set等,那么集合變量該怎么命名呢?

一般可采取兩種方式:

使用復數s結尾

List<Student> students = new ArrayList<>();

用集合類型作為后綴

List<Student> studentList = new ArrayList<>();

上面兩種方式均可,沒有比較明顯的偏好,根據實際場景決定。第一種方式相對更簡潔,第二種在局部作用域里面有多種相關的集合變量時區分度更大,比如:

List<Student> studentList = new ArrayList<>();Map<Long, Student> studentMap = Maps.newHashMap();​for (Student stu : studentList) { studentMap.put(stu.getId, stu);}

我的建議是如果局部作用域只有一種類型的集合,那么推薦使用復數形式;如果局部作用域有多個相關的集合類型,那么推薦用類型結尾。

5)禁止使用is作為bool類型的類成員變量前置

在java中,禁止用is作為bool類型的類成員變量的前綴,因為is作為前綴會導致序列化/反序列出現問題,阿里的java代碼規范中也明確提到了這一點,所以在寫代碼的時候最好還是遵守公認的規范,不然哪天說不定就踩坑了。

6)盡量避免使用縮寫進行命名

有些時候,變量名可能有點長,不利于代碼可讀性,因此很多時候在寫代碼的時候喜歡用縮寫來命名,但這個不是一個好的習慣,除非使用的縮寫是大家都會使用的約定俗稱的縮寫。

比如下面這個命名:

int averageStudentAge; => int avgStudentAge;

因為avg大家都知道是average的縮寫,所以這么寫問題不大,不會引起歧義;

但是下面這種縮寫命名:

restmpcnt

就不是好的縮寫命名,因為不同的人閱讀可能會有不同的理解:

res => response、resource、resulttmp => temporary、templatecnt => count、content、context

附上一些約定俗稱的縮寫:

全稱 縮寫 identification id average avg maximum max minimum min buffer buf error err message msg image img length len library lib password pwd position pos data transfer object dto view object vo

7)拋棄掉flag變量

國內一些早期的教材上,到處充斥著各種flag風格的變量,這種命名方式對于大型工程簡直就是噩夢,比如:

int flag = getDoctorFlag(doctorId);if (flag == 1) {//....}

看到這段代碼,讀者會有疑問flag變量的含義是什么?flag值為1的時候又代表什么含義?是醫生的值班/在崗狀態、還是醫生的身體狀態?估計讀者的內心是崩潰的。

如果優化成下面這種形式:

DutyStatus doctorDutyStatus = getDoctorDutyStatus(doctorId);if (doctorDutyStatus == DutyStatus.ONLINE) {// ...}

就比上面的形式清晰多了,很容易看出來判斷的是醫生的值班/在崗狀態。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Java
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品片aa在线观看| 日韩中文在线电影| 亚洲视频www| 国产99久久| 国产suv精品一区| 国产日韩电影| 久久高清免费| 中文在线一区| 免播放器亚洲一区| 午夜电影一区| 国产精品一国产精品| 国产日韩欧美一区二区三区在线观看| 日韩精品免费视频人成 | 久久不见久久见中文字幕免费 | 色在线视频观看| 欧美精品高清| 欧美va天堂在线| 日韩亚洲国产欧美| 日韩综合一区二区三区| 欧美精品国产一区| 黄色精品视频| 欧美1区免费| 亚洲日本欧美| 国产精品片aa在线观看| 国产不卡人人| 亚洲少妇自拍| 91成人精品在线| 精品福利久久久| 午夜久久99| 首页亚洲欧美制服丝腿| 日韩一区二区三免费高清在线观看| 日韩av影院| 97精品国产| 国产亚洲在线| 国产精品久久777777毛茸茸| 日韩欧乱色一区二区三区在线| 久久国内精品自在自线400部| 日本精品黄色| 亚洲一区二区三区四区电影 | 五月天av在线| 噜噜噜躁狠狠躁狠狠精品视频| 日韩在线视频一区二区三区| 欧美一级二级三级视频| 精品三级在线| 99热免费精品| 国产极品久久久久久久久波多结野| 国产精品99久久精品| 亚洲欧洲一区二区天堂久久| 日韩激情精品| 蜜桃成人精品| 日韩精品一区二区三区免费视频| 电影91久久久| 日本欧美在线看| 国产一区二区三区视频在线| 免费在线观看视频一区| 激情综合五月| 蜜臀国产一区二区三区在线播放| 国产欧美三级| 亚洲性图久久| 国产精品igao视频网网址不卡日韩| 久久一区二区三区电影| 欧美精品国产白浆久久久久| 欧美不卡视频| 精品入口麻豆88视频| 国产精品美女| xxxxx性欧美特大| 国产亚洲观看| 亚洲专区在线| 正在播放日韩精品| 亚洲综合日本| 日本精品影院| 亚洲成人国产| 国产精品毛片久久久| 亚洲综合精品| 偷拍精品精品一区二区三区| 国产亚洲观看| 午夜宅男久久久| 伊人久久国产| 少妇精品久久久一区二区三区| 国产一区二区三区久久 | 国产一区二区三区四区五区传媒| 亚洲欧美高清| 蜜桃精品在线| 麻豆精品蜜桃视频网站| 亚洲色诱最新| 日韩一区电影| 国产精品nxnn| 日本不卡高清| 久久福利影视| 免费观看不卡av| 成人免费一区| 国产精品天堂蜜av在线播放| 免费的成人av| 国产精品日本| 欧美+日本+国产+在线a∨观看| 岛国av免费在线观看| 国产日韩精品视频一区二区三区| 蜜桃免费网站一区二区三区| 女人av一区| 久久狠狠婷婷| 成人国产精品久久| 国产一在线精品一区在线观看| 桃色av一区二区| 精品国产乱码久久久久久樱花| 欧美亚洲福利| 日韩av电影一区| 亚洲一区导航| 影音先锋久久| 午夜视频精品| 欧美成人午夜| 欧美成人午夜| 黄色在线一区| 国产精品美女久久久浪潮软件| 激情欧美日韩一区| 亚洲天堂黄色| 久久免费高清| 亚洲成av人片一区二区密柚| 91看片一区| 丝袜av一区| 精品免费av在线| 理论片午夜视频在线观看| 久久久久九九精品影院| 欧美黄页在线免费观看| 久久99蜜桃| 久久免费影院| 国产中文字幕一区二区三区| 久久久久久久久成人| 麻豆国产91在线播放| 久久一区欧美| 蜜臀久久精品| 免费人成在线不卡| 日韩激情综合| 久久精品免视看国产成人| 欧美激情视频一区二区三区免费| 国产精品1区| 国精品产品一区| 精品国产免费人成网站| 日韩欧美二区| 激情婷婷久久| 先锋亚洲精品| 日本va欧美va精品| 久久久91麻豆精品国产一区| 97精品国产福利一区二区三区| 桃色一区二区| 好吊日精品视频| 日韩在线中文| 91久久午夜| 亚洲精品影视| 国产日产一区| 精品三级av在线导航| 热久久久久久久| 喷白浆一区二区| 水蜜桃久久夜色精品一区| 国产精品成久久久久| 一本综合精品| 激情综合自拍| 久久精品二区亚洲w码| 亚洲最新无码中文字幕久久 | 久久亚洲视频| 日韩在线观看中文字幕| 欧美欧美黄在线二区| 久久久久黄色| 婷婷亚洲五月| 97se亚洲| 国产91在线精品| 日韩午夜电影| 国产精品一区三区在线观看| 在线天堂资源www在线污| 亚洲免费播放| 国产香蕉精品| 欧美中文一区二区| 日韩国产欧美在线视频| 久久毛片亚洲| 亚洲三区欧美一区国产二区| 国产精品免费不| 日韩三区免费| 亚洲精品免费观看| 精品久久视频| 亚洲一区日韩| 欧美国产亚洲精品| 免费av一区二区三区四区| 日韩毛片一区| 久久三级视频| 国产欧美激情| 红桃视频欧美| 久久91视频| 久久av一区| 国产精品原创| 日本免费一区二区视频| 黄毛片在线观看| 日本欧美一区二区在线观看| 在线视频观看日韩| 麻豆精品在线播放| 日韩中文欧美在线| 毛片在线网站| 国产精品一区二区精品| 亚洲在线网站| 日韩欧美精品综合| 久久a爱视频| 亚洲精品在线国产|