成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

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

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

瀏覽:3日期: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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美国产精品一区| 亚洲一区图片| 一本色道久久综合亚洲aⅴ蜜桃| 成人欧美一区二区三区1314| 欧美成人日韩| 久久新电视剧免费观看| 粉嫩欧美一区二区三区高清影视| 色综合久久66| 亚洲免费看黄网站| 在线视频观看日韩| 国产精品女主播av| 激情自拍一区| 亚洲激情综合网| 亚洲精选在线| 亚洲视频每日更新| 亚洲精品日韩久久| 亚洲精品成人天堂一二三| 亚洲国产免费| 伊人开心综合网| 亚洲综合激情| 视频一区在线视频| 色视频成人在线观看免| 免费看黄色91| 欧美性xxxxx极品少妇| 美女一区二区视频| 欧美日韩视频一区二区| 国产一区二区三区视频在线播放| 欧美丰满美乳xxx高潮www| 国产精品一区二区三区乱码| 在线播放国产精品二区一二区四区| 亚洲第一电影网| 91在线视频播放| 国产高清在线精品| 中文字幕视频一区二区三区久| 欧美日本韩国一区| 精品国产一区二区在线观看| 国产精品午夜久久| 国产在线一区二区综合免费视频| 日韩欧美国产1| 91精品福利在线| 不卡在线视频中文字幕| 亚洲国产美女搞黄色| 亚洲一区二区三区精品动漫 | 中文字幕国产精品一区二区| 国产精品www.| 亚洲国产成人精品视频| 日本韩国欧美三级| 国产高清不卡二三区| 国产午夜亚洲精品羞羞网站| 亚洲大胆在线| 日韩和欧美一区二区三区| 欧美欧美午夜aⅴ在线观看| 麻豆成人综合网| 日韩欧美国产不卡| 亚洲无毛电影| 天堂成人国产精品一区| 日韩一区二区三区四区| 欧美日韩亚洲国产精品| 午夜精品久久久| 日韩欧美二区三区| 国内一区二区三区| 日韩va欧美va亚洲va久久| 欧美大尺度电影在线| 亚洲精品一级| 黄色成人免费在线| 久久精品日产第一区二区三区高清版 | 亚洲成人久久影院| 日韩一区二区三区四区| 夜久久久久久| 国产大片一区二区| 日本一区二区三区在线观看| 国内精品久久久久久久果冻传媒| 国产精品久久久久久久蜜臀| 欧美大片专区| 日本vs亚洲vs韩国一区三区二区| 有坂深雪av一区二区精品| 奇米精品一区二区三区在线观看 | 裸体丰满少妇做受久久99精品| 五月天激情综合网| 欧美日韩五月天| 有码一区二区三区| 日本精品一区二区三区四区的功能| 成人在线综合网| 一区二区在线免费观看| 91精品一区二区三区在线观看| 国产综合视频| 日韩成人免费看| 欧美激情一二三区| 欧美视频你懂的| 在线看片一区| 国产成人av网站| 香蕉久久夜色精品国产使用方法| 亚洲精品一线二线三线| 久久裸体视频| 成av人片一区二区| 五月天丁香久久| 欧美国产一区在线| 欧美日韩成人在线| 亚洲精品裸体| 成人18视频日本| 日本亚洲天堂网| 综合久久久久久| 欧美一区二区三区免费大片| 日韩午夜在线电影| 成人av在线看| 日韩国产在线观看一区| 国产精品三级视频| 在线成人免费观看| 国产欧美日本| 91丨国产丨九色丨pron| 日本人妖一区二区| 中文字幕在线播放不卡一区| 日韩一级免费观看| 色婷婷精品久久二区二区蜜臀av| 欧美日韩精品一区| 国产黄人亚洲片| 日韩av网站免费在线| 中文字幕一区二区三区在线观看| 日韩一区二区三区视频在线 | 91欧美一区二区| 国产一区中文字幕| 亚洲大片一区二区三区| 国产精品日产欧美久久久久| 日韩亚洲欧美在线观看| 日本大香伊一区二区三区| 在线观看亚洲| 99视频有精品| 国产在线一区观看| 天堂久久一区二区三区| 亚洲少妇最新在线视频| 久久综合国产精品| 欧美欧美午夜aⅴ在线观看| 亚洲免费婷婷| 国产精品v亚洲精品v日韩精品 | 国产精品毛片在线| 国模大胆一区二区三区| 成人午夜视频在线| 激情图区综合网| 视频精品一区二区| 一区二区高清视频在线观看| 中文字幕成人在线观看| 欧美电影免费观看完整版| 欧美日韩国产经典色站一区二区三区| 亚洲综合日韩| 亚洲色诱最新| 日韩视频在线播放| 一区二区自拍| 欧美午夜不卡| 欧美人成在线| 欧美在线视频二区| 97精品久久久午夜一区二区三区 | 麻豆精品在线视频| 午夜伦理一区二区| 亚洲国产综合在线| 依依成人精品视频| 亚洲精品国产a| 亚洲你懂的在线视频| 国产精品久久久久久久第一福利| 国产午夜精品久久久久久久| 精品国产电影一区二区| 欧美变态口味重另类| 日韩一级大片在线观看| 欧美一区二区不卡视频| 欧美一区国产二区| 欧美一级精品在线| 日韩午夜在线影院| 欧美一区二区视频在线观看2020| 欧美电影一区二区三区| 91精品国产综合久久香蕉麻豆| 911精品国产一区二区在线| 欧美一区二区视频观看视频| 欧美一区二区三区视频免费播放| 欧美一区二区在线免费播放| 欧美v日韩v国产v| 精品国产一区二区亚洲人成毛片| 日韩欧美的一区二区| 久久综合精品国产一区二区三区| 久久品道一品道久久精品| 国产免费成人在线视频| 国产精品污污网站在线观看| 中文字幕中文字幕在线一区| 亚洲男人的天堂av| 亚洲国产综合在线| 日韩精品高清不卡| 狠狠色丁香婷综合久久| 岛国av在线一区| 99精品1区2区| 欧美日韩在线播放一区二区| 亚洲久久一区二区| 久久亚洲欧美| 欧美男人的天堂一二区| 欧美一区二区观看视频| 久久久久国产一区二区三区四区| 日本一区二区三区免费乱视频| 亚洲色图色小说| 亚洲成人在线免费| 久色婷婷小香蕉久久| 国产suv精品一区二区883| 日韩中文字幕不卡| 国产在线精品一区在线观看麻豆|