一篇文章帶你入門Java之編程規(guī)范
引言
♀ 小AD:小明哥,之前你教我的Helloworld實(shí)例我寫(xiě)完了,超級(jí)簡(jiǎn)單呢,我一下子就搞定了
♂ 明世隱:是嗎,那不錯(cuò)哦。
♀ 小AD:我還舉一反三、自由發(fā)揮了一波
♂ 明世隱:這波怎么說(shuō)?
♀ 小AD:怎么說(shuō)?我說(shuō)我在第5層,你信不
♂ 明世隱:我信,你舉的什么、反的什么?
♀ 小AD:我寫(xiě)了個(gè)小魯班連招類,可以順序釋放連招,好玩。
♂ 明世隱:挖槽,你這波是要在大氣層嗎?上頭了吧你。
♀ 小AD:明哥別這樣說(shuō),我就覺(jué)得好玩
♂ 明世隱:好,我覺(jué)得你腦子轉(zhuǎn)的挺快,來(lái)給明哥看看。
♀ 小AD:好的,代碼給你看看
package learnJava; public class 魯班連招類 { public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); System.out.println("釋放3技能");System.out.println("平A1");System.out.println("平A2"); System.out.println("平A3");System.out.println("平A4"); System.out.println("釋放1技能"); System.out.println("平A1");System.out.println("平A2");System.out.println("平A3");System.out.println("平A4"); System.out.println("釋放2技能");System.out.println("平A1");System.out.println("平A2"); System.out.println("平A3");System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅");}}
運(yùn)行代碼
♀ 小AD:明哥,咋樣?我這連招,KO敵人,刺客突臉我可以把2技能先放
♂ 明世隱:很(yao)好(lao)耶(ming)
♀ 小AD:那可不!我覺(jué)得我可以統(tǒng)治下路了。
♂ 明世隱:你的為啥放技能后要平A4下。
♀ 小AD:因?yàn)檫@個(gè)平A 4下我用來(lái)代表的是小魯班的被動(dòng)掃射效果,表示攻擊速度很快。
♂ 明世隱:嗯嗯,真不錯(cuò),有編程的天賦,看來(lái)我選對(duì)了徒弟哈,但是,還是讓我來(lái)說(shuō)說(shuō)你的問(wèn)題。
♀ 小AD:???
♂ 明世隱:我說(shuō)讓我來(lái)說(shuō)說(shuō)你的問(wèn)題。
♀ 小AD:有什么問(wèn)題,我這連招不好嗎?你上次教我的,你是不是藏了什么?
♂ 明世隱:你耗子未汁吧你!
♀ 小AD:明哥,直接說(shuō)吧,別這樣
♂ 明世隱:我說(shuō)你代碼寫(xiě)的亂七八糟。
♀ 小AD:沒(méi)問(wèn)題啊,你看我不是運(yùn)行給你看了嗎?結(jié)果犀利
♂ 明世隱:確實(shí)犀利,我說(shuō)的是代碼很亂。
♀ 小AD:我不懂你的意思
♂ 明世隱:就是不規(guī)范。
♀ 小AD:哦,我不知道哦,那你給我講講唄
♂ 明世隱:來(lái),下次寫(xiě)這樣的代碼,別在朋友圈發(fā)說(shuō)你認(rèn)識(shí)我,我老臉往哪里放。
♀ 小AD:(大寫(xiě)的尷尬)
命名規(guī)則
類名首字母應(yīng)該大寫(xiě)。字段、方法以及對(duì)象(句柄)的首字母應(yīng)小寫(xiě)。對(duì)于所有標(biāo)識(shí)符,其中包含的所有單詞都應(yīng)緊靠在一起,而且大寫(xiě)中間單詞的首字母。例如:
ThisIsAClassName
thisIsMethodOrFieldName
命名規(guī)則必須遵循以下規(guī)則:
1)、名稱只能由字母、數(shù)字、下劃線、$符號(hào)組成
2)、命名時(shí)不能以數(shù)字開(kāi)頭
3)、在命名是絕對(duì)不能出現(xiàn)Java關(guān)鍵字。
4)、見(jiàn)名識(shí)意—看到名字就知道是什么。
當(dāng)然這些都不是硬性規(guī)定,你可以按照自己的想法去命名。但那樣的代碼可讀性很差。
public class 魯班連招類 {
♀ 小AD:你是說(shuō)我這個(gè)類的命名不滿足上面的第一條是嗎
♂ 明世隱:可以這么說(shuō)。
♀ 小AD:那eclipse為什么沒(méi)有報(bào)錯(cuò)。
♂ 明世隱:其實(shí)是可以用中文命名的,類名和方法名用中文其實(shí)也是可以成功運(yùn)行的,因?yàn)橹灰荱nicode字符,就符合規(guī)范,不過(guò)這里的規(guī)范指的是標(biāo)識(shí)符規(guī)范,代碼規(guī)范是不提倡用中文的。
♀ 小AD:這樣啊,那我把類名改成lz
♂ 明世隱:你這是什么意思?
♀ 小AD:lz就是連招的意思啊
♂ 明世隱:可是我看不懂誒!
♀ 小AD:那改lianzhao
♂ 明世隱:類開(kāi)頭用大寫(xiě),然后采用駝峰命名。
♀ 小AD:那改成LianZhao就可以撒
♂ 明世隱:你為什么不用英文來(lái)命名,用拼音感覺(jué)不舒服。
♀ 小AD:那連招的英語(yǔ)是什么?
♂ 明世隱:你問(wèn)我干嘛?我不會(huì)
♀ 小AD:哈哈,明哥你都不會(huì)啊,我也不會(huì)。
♂ 明世隱:那說(shuō)好了,就這樣命名了,嘿嘿。
代碼排版
1.程序塊要采用縮進(jìn)風(fēng)格編寫(xiě),縮進(jìn)的空格數(shù)為4個(gè)。
2.在函數(shù)體的開(kāi)始、類和接口的定義、以及if、for、do、while、switch、case語(yǔ)句中的程序都要采用如上的縮進(jìn)方式。
3.較長(zhǎng)的語(yǔ)句、表達(dá)式或參數(shù)(>80字符)要分成多行書(shū)寫(xiě),長(zhǎng)表達(dá)式要在低優(yōu)先級(jí)操作符處劃分新行,操作符放在新行之首,劃分出的新行要進(jìn)行適當(dāng)?shù)目s進(jìn),使排版整齊,語(yǔ)句可讀。
4.if, for, do, while, case, switch, default 等語(yǔ)句自占一行,且if, for, do, while等語(yǔ)句的執(zhí)行語(yǔ)句無(wú)論多少都要加括號(hào){}。
5.相對(duì)獨(dú)立的程序塊之間、變量說(shuō)明之后必須加空行。
6.出現(xiàn)分號(hào)盡量換行。
♀ 小AD:哥,那么多那么麻煩,我都看不明白.
♂ 明世隱:其實(shí)也不用刻意去記,我?guī)湍惆汛a編輯一下你就很容易看明白。
♀ 小AD:好
針對(duì)你的代碼分4步
1.代碼縮進(jìn)對(duì)齊
修改后:
package learnJava; public class LianZhao { public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); System.out.println("釋放3技能");System.out.println("平A1");System.out.println("平A2"); System.out.println("平A3");System.out.println("平A4"); System.out.println("釋放1技能"); System.out.println("平A1");System.out.println("平A2");System.out.println("平A3");System.out.println("平A4"); System.out.println("釋放2技能");System.out.println("平A1");System.out.println("平A2"); System.out.println("平A3");System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅");}}
2.遇到分號(hào)換行
修改后:
package learnJava; public class LianZhao { public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); System.out.println("釋放3技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("釋放1技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("釋放2技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅");}}
3.大括號(hào)、括號(hào)等成對(duì)出現(xiàn)
修改后:
package learnJava; public class LianZhao { public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); System.out.println("釋放3技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("釋放1技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("釋放2技能"); System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅"); } }
4.加上注釋
♀ 小AD:明哥什么是注釋啊
♂ 明世隱:注釋就是說(shuō)明
♀ 小AD:說(shuō)明什么?
♂ 明世隱:說(shuō)明這個(gè)類是用來(lái)做什么的,這個(gè)方法是什么功能等。
♀ 小AD:好像明白了一點(diǎn)
♂ 明世隱:給你舉個(gè)例子,你就完全清楚了。
♂ 明世隱:上面的圖知道什么意思吧
♀ 小AD:當(dāng)然啊,就是技能說(shuō)明唄
♂ 明世隱:對(duì)啊 ,那你如果不熟悉技能的話,你不是可以看看這個(gè)技能干啥用的,有多少傷害、冷卻時(shí)間多少、藍(lán)耗多少嗎?
♀ 小AD:是的,沒(méi)有這個(gè)說(shuō)明,除非對(duì)這個(gè)英雄比較熟悉,否則就不知道了。
♂ 明世隱:那你拿到一段代碼的時(shí)候,如果沒(méi)有說(shuō)明,你可能搞不清楚這個(gè)代碼是干嘛的吧。
♀ 小AD:嗯,但現(xiàn)在這個(gè)代碼我知道 啊
♂ 明世隱:目前你當(dāng)然是知道的,因?yàn)榈谝贿@個(gè)代碼簡(jiǎn)單,容易看明白,如果邏輯復(fù)雜的呢?第二記憶都是一段時(shí)間的,如果過(guò)些時(shí)候你再看到某段代碼,你也想不起來(lái)是干嘛的了,必須一行行的去看代碼,然后你才能知道,這樣不就很麻煩了嗎?
♀ 小AD:好像是這個(gè)道理。
♂ 明世隱:所以說(shuō)就跟這個(gè)技能描述一樣的,我們也可以改代碼加上說(shuō)明,稱之為注釋。
♀ 小AD:原來(lái)是這個(gè)意思啊,那注釋?xiě)?yīng)該怎么加?
♂ 明世隱:那我們來(lái)加一下吧。
Java注釋
注釋的作用
很多java新手在敲代碼的時(shí)候都不會(huì)在意注釋這個(gè)東西,但其實(shí),注釋在Java編程中也是必不可少的。
在學(xué)習(xí)過(guò)程中,我們應(yīng)該也發(fā)現(xiàn)要敲的代碼越來(lái)越多,越來(lái)越繁瑣,而且做編程本來(lái)就很需要思維邏輯,在碰到需要使用大量代碼的時(shí)候,就需要在每個(gè)關(guān)鍵點(diǎn)做好注釋,讓我們明白這段代碼的含義,同時(shí),如果要請(qǐng)教別人的話,別人看你的代碼更加方便。
而在以后的工作當(dāng)中,肯定會(huì)有團(tuán)隊(duì)協(xié)作的,這種時(shí)候,也是非常需要注釋的,不然在后期合并的時(shí)候是會(huì)非常麻煩的。
注釋的3種類型
1.單行注釋
//內(nèi)容1
//內(nèi)容2
2.多行注釋
/*
內(nèi)容1
內(nèi)容2
*/
3.文檔注釋
/**
*內(nèi)容1
*內(nèi)容2
*/
給代碼加上單行注釋
public class LianZhao { //主函數(shù) public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); //釋放3技能 System.out.println("釋放3技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); //釋放1技能 System.out.println("釋放1技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); //釋放2技能 System.out.println("釋放2技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅"); } }
♀ 小AD:明哥,有句話我想說(shuō)但不敢說(shuō)?
♂ 明世隱:說(shuō)吧,不噴你
♀ 小AD:我感覺(jué)你這個(gè)注釋沒(méi)什么用,你不加注釋,我也知道這個(gè)寫(xiě)的是放技能、平A啊,你現(xiàn)在加這個(gè)注釋也是多余的。
♂ 明世隱:。。。,是這樣的,因?yàn)槟氵@個(gè)代碼是最基礎(chǔ)的,就一句打印輸出,并且輸出的內(nèi)容也寫(xiě)的很清楚,所以你感覺(jué)沒(méi)必要,但在開(kāi)發(fā)中,代碼的邏輯就復(fù)雜的多,你不加注釋別人可能就看不明白你 代碼、或者說(shuō)要花額外的時(shí)間去理解你的代碼;甚至于你自己再次回過(guò)頭來(lái)看的時(shí)候,沒(méi)有注釋,都要重新去閱讀代碼,才知道是干嘛的。
♀ 小AD:哦,這樣啊,那我明白了
給代碼加上多行注釋
給代碼加上文檔注釋
注釋后完整的類代碼
package learnJava; /** * 模擬魯班連招的類 * @author 小AD * @date 2021-07-04 */ public class LianZhao { /* * 主函數(shù) * 此函數(shù)模擬了魯班的連招 * 3技能+掃射+1技能+掃射+2技能+掃射 */ public static void main(String[] args) { System.out.println("發(fā)現(xiàn)敵人"); //釋放3技能 System.out.println("釋放3技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); //釋放1技能 System.out.println("釋放1技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); //釋放2技能 System.out.println("釋放2技能"); //掃射 System.out.println("平A1"); System.out.println("平A2"); System.out.println("平A3"); System.out.println("平A4"); System.out.println("敵人已經(jīng)被消滅"); } }
♂ 明世隱:你看代碼是不是比你開(kāi)始的要好看、工整的多。
♀ 小AD:哇明哥,這樣別人看到代碼就知道是我寫(xiě)的呀。
♂ 明世隱:對(duì)啊 ,就知道你的大名了。
♀ 小AD:哇注釋果然很有用。
♂ 明世隱:別光知道可以寫(xiě)上你的大名哈,其他的也很重要。
♀ 小AD:不會(huì)不會(huì),我一下就明白怎么用這個(gè)注釋了,謝謝明哥!
除了上述內(nèi)容還要注意:如何編寫(xiě)良好的Java代碼
♀ 小AD:哇明哥,我覺(jué)得我好像學(xué)Java很簡(jiǎn)單呢
♂ 明世隱:對(duì)啊,Java本來(lái)就不難,關(guān)鍵看你自己愿意學(xué)不咯。
♀ 小AD:我當(dāng)然愿意學(xué),我就感覺(jué)跟明哥上分一樣簡(jiǎn)單,緊緊跟著明哥就行。
♂ 明世隱:知道就好,要的就是上分如喝水、學(xué)Java如張飛吃豆芽。
♀ 小AD:哥你說(shuō)的什么?也不押韻啊。
♂ 明世隱:你重點(diǎn)是在這嗎你?快打開(kāi)游戲,先上幾星再說(shuō),你連招不是很溜嗎。
♀ 小AD:來(lái),當(dāng)然了,我邊學(xué)Java又邊學(xué)連招,今天整爆他們。
總結(jié)
本篇文章就到這里了,希望能給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
詳解Springboot-MyBatis配置-配置端口號(hào)與服務(wù)路徑(idea社區(qū)版2023.1.4+apache-mav
這篇文章主要介紹了Springboot-MyBatis配置-配置端口號(hào)與服務(wù)路徑(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin),本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-07-07IDEA引MAVEN項(xiàng)目jar包依賴導(dǎo)入問(wèn)題解決方法
這篇文章主要介紹了IDEA引MAVEN項(xiàng)目jar包依賴導(dǎo)入問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11Spring定時(shí)任務(wù)實(shí)現(xiàn)與配置(二)
這篇文章主要為大家詳細(xì)介紹了Spring定時(shí)任務(wù)的實(shí)現(xiàn)與配置第二篇,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06簡(jiǎn)單談?wù)凧ava遍歷樹(shù)深度優(yōu)先和廣度優(yōu)先的操作方式
這篇文章主要介紹了簡(jiǎn)單談?wù)凧ava遍歷樹(shù)深度優(yōu)先和廣度優(yōu)先的操作方式的相關(guān)資料,需要的朋友可以參考下2023-03-03java實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)文件的斷點(diǎn)續(xù)傳,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-06-06基于dubbo中Listener的實(shí)現(xiàn)方法
下面小編就為大家?guī)?lái)一篇基于dubbo中Listener的實(shí)現(xiàn)方法。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08Springboot 中使用 Aop代碼實(shí)戰(zhàn)教程
AOP的編程思想是把對(duì)類對(duì)象的橫切問(wèn)題點(diǎn),從業(yè)務(wù)邏輯中分離出來(lái),從而達(dá)到解耦的目的,增加代碼的復(fù)用性,提高開(kāi)發(fā)效率,這篇文章主要介紹了Springboot中使用Aop代碼實(shí)戰(zhàn)教程,需要的朋友可以參考下2023-07-07