写在前面
本文介绍了JAVA方法的相关学习以及使用过程中的一些书写规范,方法的修饰符(访问,静态等)若有需要,请在评论区留言,会在后续补充。
活动地址:CSDN21天学习挑战赛
学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您:
想系统/深入学习某技术知识点…
一个人摸索学习很难坚持,想组团高效学习…
想写博客但无从下手,急需写作干货注入能量…
热爱写作,愿意让自己成为更好的人…
…
**
JAVA学习之方法
**
定义
一种语法结构,将一段代码封装成一个功能,以方便重复调用。
格式
[访问修饰符] [static] [返回值类型|void] functionName(Object params){
//Todo...
}
tips:
若方法不需要返回值,则必须被void关键字修饰;
若定义了方法的返回值类型,则必须有return且return与}之间不能有其他代码;
参数列表可以没有,直接通过functionName()调用方法.
作用
方法可以将功能拆分出来,使代码的逻辑更为清晰;
将功能拆分出来有利于提高代码的复用性,避免代码冗杂。
方法重载
是Java多态性的代表之一
在同一个类中,多个方法名相同,形参列表不同
用于实现功能相似的场景,保持代码具有良好的可读性。
书写规范
缓存方法调用的值
调用有返回值的方法,应定义对应变量保存返回值,防止对方法重复调用(平时写代码时没怎么注意,但在项目中有打印log的需求时发现了这个问题,方法被我多次调用,导致我输出的log重复打印了多次),提高运行效率。
避免冗长的参数列表
当参数列表很长时,可以将该参数列表封装一个类,保持代码的整洁性与良好的可读性(一个方法的参数列表长度尽量不要超过5个),然后通过setter与getter方法去为参数赋值与取值。
下面是作者做项目时写的一个方法:
protected String doConversionForBase(String sheet, String type, String data, String key, String[] headers,int row) {
//TODO...
}
显然,方法的参数很长,很影响代码的可读性
将参数列表封装成Data类
public class Data {
private String sheet;
private String type
private String data;
private String key;
private String[] headers;
private int row;
public Data() {
super();
}
public String getSheet() {
return sheet;
}
public void setSheet(String sheet) {
this.sheet = sheet;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String[] getHeaders() {
return headers;
}
public void setHeaders(String[] headers) {
this.headers = headers;
}
public int getRow() {
return row;
}
public void setRow(int row) {
this.row = row;
}
}
方法便可以定义为:
protected String doConversionForBase(Data rowdata) {
String sheet = rowdata.getSheet();
String type = rowdata.getType();
String data = rowdata.getData();
String keys = rowdata.getKey();
String[] headers = rowdata.getHeaders();
int row = rowdata.getRow();
//TODO...
return "";
}
调用方法前只需要实例化Data类,调用setter方法传递属性值便可以了。
Data rowdata = new Data();
rowdata.setHeaders(headers);
rowdata.setType(type);
rowdata.setData(data);
rowdata.setKey(key);
rowdata.setSheet(sheet);
rowdata.setRow(row);
String result = co.doConversionForBase(rowdata);
代码现在看起来就很清晰了。
…