public class CodeStandard { public static void main(String [] args){ StringBuffer buffer = new StringBuffer(); buffer.append('S'); buffer.append("tringBuffer"); System.out.println(buffer.charAt(1)); System.out.println(buffer.capacity()); System.out.println(buffer.indexOf("tring")); System.out.println("buffer = " + buffer.toString()); if(buffer.capacity()<20) buffer.append("1234567"); for(int i=0; i<buffer.length();i++) System.out.println(buffer.charAt(i)); } }
IDEA中的插件,經過Jetbrains官方倉庫安裝:打開 Settings
->Plugins
-> Marketplace
在搜索框輸入alibaba便可看到Alibaba Java Code Guidelines
插件,點擊Install進行安裝,而後重啓IDE生效:
html
編碼規約掃描
:Code
->Reformate Code
)把下面代碼從新格式化Code
菜單中選項的簡單用法:
Override Methods
:重載方法/新建方法Implement Methods
:執行方法Generate
:建立類裏面任何字段的getter與setter方法Surround with
:將某條語句被if、for等等封裝語句括起Move Statement Down/up
:將語句下移到後一模塊以後Move line down
:調換語句順序Comment with Line/Block Comment
:兩種註釋Reformat Code
:將代碼按標準格式縮進管理
->倉庫成員管理
->添加倉庫成員
->邀請用戶
atom Complex.java
和atom ComplexTest.java
/** @author Xueying Zhang 20175227 @date 2019/4/29 12:49. */ public class Complex{ private double a; private double b; public Complex(double a, double b) { this.a = a; this.b = b; } public static double getRealPart(double a) { return a; } public static double getImagePart(double b) { return b; } public Complex ComplexAdd(Complex c) { return new Complex(a + c.a, b + c.b); } public Complex ComplexSub(Complex c) { return new Complex(a - c.a, b - c.b); } public Complex ComplexMulti(Complex c) { return new Complex(a * c.a - b * c.b, a * c.b + b * c.a); } public Complex ComplexDiv(Complex c) { return new Complex((a * c.b + b * c.a)/(c.b * c.b + c.a * c.a), (b * c.b + a * c.a)/(c.b * c.b + c.a * c.a)); } public String toString() { String s = " "; if (b > 0) { s = a + "+" + b + "i"; } if (b == 0) { s = a + ""; } if (b < 0) { s = a + " " + b + "i"; } return s; } }
getRealPart
;getImagePart
;ComplexAdd
;ComplexSub
;ComplexMulti
;ComplexDiv
import junit.framework.TestCase; import org.junit.Test; public class ComplexTest extends TestCase { Complex com1=new Complex(1.0,2.0); Complex com2=new Complex(0.0,1.0); Complex com3=new Complex(1.0,0.0); Complex com4=new Complex(-1.0,-2.0); public void testgetRealPart()throws Exception{//測試getRealPart方法 assertEquals(2.7,Complex.getRealPart(2.7)); assertEquals(-2.7,Complex.getRealPart(-2.7)); assertEquals(5.0,Complex.getRealPart(5.0)); assertEquals(0.0,Complex.getRealPart(0.0)); } public void testgetImagePart()throws Exception{//測試getImagePart方法 assertEquals(2.7,Complex.getImagePart(2.7)); assertEquals(-2.7,Complex.getImagePart(-2.7)); assertEquals(5.0,Complex.getImagePart(5.0)); assertEquals(0.0,Complex.getImagePart(0.0)); } public void testComplexAdd()throws Exception{//測試ComplexAdd方法 assertEquals("1.0+3.0i",com1.ComplexAdd(com2).toString()); assertEquals("2.0+2.0i",com1.ComplexAdd(com3).toString()); assertEquals("1.0+1.0i",com2.ComplexAdd(com3).toString()); assertEquals("0.0",com1.ComplexAdd(com4).toString()); } public void testComplexSub()throws Exception{//測試ComplexSub方法 assertEquals("1.0+1.0i",com1.ComplexSub(com2).toString()); assertEquals("0.0+2.0i",com1.ComplexSub(com3).toString()); assertEquals("-1.0+1.0i",com2.ComplexSub(com3).toString()); assertEquals("2.0+4.0i",com1.ComplexSub(com4).toString()); } public void testComplexMulti()throws Exception{//測試ComplexMulti方法 assertEquals("-2.0+1.0i",com1.ComplexMulti(com2).toString()); assertEquals("1.0+2.0i",com1.ComplexMulti(com3).toString()); assertEquals("0.0+1.0i",com2.ComplexMulti(com3).toString()); assertEquals("3.0 -4.0i",com1.ComplexMulti(com4).toString()); } public void testComplexDiv()throws Exception{//測試ComplexDiv方法 assertEquals("1.0+2.0i",com1.ComplexDiv(com2).toString()); assertEquals("2.0+1.0i",com1.ComplexDiv(com3).toString()); assertEquals("1.0",com2.ComplexDiv(com3).toString()); assertEquals("-0.8 -1.0i",com1.ComplexDiv(com4).toString()); } }
運行示例(此處由虛擬機中atom更改成windows中IDEA編寫,由於方便運用junit單元測試)以下:
java
重構前代碼:git
class XiyoujiRenwu{ float height,weight; String head,ear; void speak(String s){ head ="歪着頭"; System.out.println(s); } } public class Example4_3{ public static void main(String args[]){ XiyoujiRenwu zhubajie,sunwukong; zhubajie = new XiyoujiRenwu(); sunwukong = new XiyoujiRenwu(); zhubajie.height = 1.80f; zhubajie.head = "大頭"; zhubajie.ear = "一雙大耳朵"; sunwukong.height = 1.62f; sunwukong.weight = 1000f; sunwukong.head = "秀髮飄飄"; System.out.println("zhubajie的身高"+zhubajie.height); System.out.println("zhubajie的頭"+zhubajie.head); System.out.println("sunwukong的重量"+sunwukong.height); System.out.println("sunwukong.head"+sunwukong.head); zhubajie.speak("俺老豬我想娶媳婦"); System.out.println("zhubajie如今的頭:"+zhubajie.head); sunwukong.speak("老孫我重1000斤,我想騙豬八戒揹我"); System.out.println("sunwukong如今的頭:"+sunwukong.head); } }
規範代碼程序員
代碼爲:算法
/** * @author Xueying Zhang 20175227 * @date 2019/4/29 19:46. */ public class Caesar { public static void main(String args[]) throws Exception{ String s=args[0]; int key=Integer.parseInt(args[1]); Movement m=new Movement(); int n=s.length(); String es=""; for(int i=0;i<s.length();i++){ char c=s.charAt(i); if(c >= 'a' && c <= 'z'){ es=m.realizeMove(n,c,key,'a','z'); } else if (c >= 'A' && c <= 'Z'){ es=m.realizeMove(n,c,key,'A','Z'); } } System.out.println(es); } }
/** * @author Xueying Zhang 20175227 * @date 2019/4/29 20:33. */ public class Movement { String es=""; public String realizeMove(int n,char c,int key,char a,char b){ //移動key%26位 c+=key%26; if(c<a) { c+=26; //向左超界 } if(c>b) { c-=26; //向右超界 } es+=c; return es; } }
Settings
->Editor
->File and Code Templates
->Class
在程序框中輸入:/** *@author xxx *@date ${DATE} ${TIME}. */
再次從新新建class就能看見有做者信息註釋了:編程