怎样写一个好的方法

方法,一个程序的基本组成,程序编写的最小设计单位,但写好一个方法却不容易。

先说什么样的方法才是一个好方法。首先,可读性要好,因为程序在编译运行之前一直都是给人看的;其次,对于耗费资源或者运算量大的方法,效率也很重要。

这里只讨论可读性。对于效率那是程序优化的技术问题,需要一定的功底,但可读性是我们所有人花些心力都可以做的很好的,而且这个做好了,也就很好了。

首先看一个方法有哪些组成部分,以Java为例,包括访问控制关键字,static关键字(对于static方法),返回值,方法名,参数列表,异常列表,方法体。

一些没什么好说的,从方法名开始,方法名一定要准确表达方法所实现的功能,切记,每个方法只实现一个功能,保证单一性原则,方法名要用动宾短语的形式,表示这个方法是做一件事的方法,而不是一个变量名。

参数列表,尽量不要太多,参数名要明确易懂,不要用i,j,k等,多个参数之间的排列要体现出逻辑关系,让调用者可以根据顺序和名称知道一些信息。

方法体,这是一个方法的主体,一般由变量声明、赋值,语句,逻辑控制结构,注释组成。

变量声明要注意将有关系的变量在一块声明,而且每个一行,变量名要起得有意义。

语句之间一定要有清晰的逻辑结构。

控制结构要注意多层嵌套时出现问题,如果嵌套过多可以考虑将里层嵌套抽象成方法,对于控制结构里的条件判断,如果过于复杂,也要抽象出来,赋以有意义的变量或者抽象成方法。

注释要简洁,精炼并且能说明逻辑,对于复杂或者难于理解的算法也可以辅以解释说明,对于过于简单的逻辑和代码不需要注释,注释还可以在较长的逻辑判断之后做结束标记,例如:

if(isNull()){
    ...
} // end of if

怎样写一个好的方法

时间: 2024-09-28 22:20:10

怎样写一个好的方法的相关文章

JAVA用标准库自己写一个字符串翻转方法,翻转字符串中字母非单词

例如输入:I love programming 输出:I evol gnimmargorp 算法思路就是:根据空格提取每一个单词,存放在一个buffer里进行翻转处理,再添加到新的字符串.最后新的字符串就完成整个方法过程. public class ReserveString { public String reserve(String sentence){ String backS = new String(); StringBuffer temp = new StringBuffer();

给IConfiguration写一个GetAppSetting扩展方法

给 IConfiguration 写一个 GetAppSetting 扩展方法 Intro 在 .net core 中,微软已经默认使用 appsettings.json 来代替 app.config,并重新设计了一套完整的配置系统,可以支持 json/xml/ini/环境变量等. 在 .net core 中有一个 GetConnectionString 的扩展方法用来比较方便的获取链接字符串,类似于在 .net framework 中使用 ConfigurationManager.Connec

如何写一个好的方法

方法.一个程序的基本组成.程序编写的最小设计单位,但写好一个方法却不easy. 先说什么样的方法才是一个好方法.首先,可读性要好,由于程序在编译执行之前一直都是给人看的:其次,对于耗费资源或者运算量大的方法,效率也非常重要. 这里仅仅讨论可读性.对于效率那是程序优化的技术问题,须要一定的功底.但可读性是我们全部人花些心力都能够做的非常好的,并且这个做好了,也就非常好了. 首先看一个方法有哪些组成部分.以Java为例.包含訪问控制keyword,statickeyword(对于static方法),

Java基础-接口.编写2个接口:InterfaceA和InterfaceB;在接口InterfaceA中有个方法void printCapitalLetter();在接口InterfaceB中有个方法void printLowercaseLetter();然 后写一个类Print实现接口InterfaceA和InterfaceB,要求 方法 实现输出大写英文字母表的功能,printLowerca

#34.编写2个接口:InterfaceA和InterfaceB:在接口InterfaceA中有个方法void printCapitalLetter():在接口InterfaceB中有个方法void printLowercaseLetter():然 后写一个类Print实现接口InterfaceA和InterfaceB,要求      方法 实现输出大写英文字母表的功能,printLowercaseLetter()方法实现输出小写英文 字母表的功能.再写一个主类E,在主类E的main方法中创建P

c语言:写一个函数,输入n,求斐波拉契数列的第n项(5种方法,层层优化)

写一个函数,输入n,求斐波拉契数列的第n项. 斐波拉契数列:1,1,2,3,5,8...,当n大于等于3时,后一项为前面两项之和. 解:方法1:从斐波拉契数列的函数定义角度编程 #include<stdio.h> int fibonacci(int n) { int num1=1, num2=1, num3=0,i; if (n <= 2) { printf("斐波拉契数列的第%d项为:%d\n",n,num1); } else { for (i = 2; i <

写一个方法进行文件的复制

java中实现文件内的复制,需要新建文件的方法: File file=new File("wubin.txt"); 并且没有这个文件,那么需要将这个文件,创造出来: file.createNewFile(); 当然也可以直接在文件流里面直接创造: FileInputStream  fis=new FileInputStream("wubin.txt"); 意思是在本目录下创建一个wubin.txt的文件,之后创造一个inputstreamreader去获取内容,再通

Java基础-继承-编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight。小车类Car是Vehicle的子类,其中包含的属性有载人数 loader。卡车类Truck是Car类的子类,其中包含的属性有载重量payload。每个 类都有构造方法和输出相关数据的方法。最后,写一个测试类来测试这些类的功 能。

#29.编写一个Java应用程序,设计一个汽车类Vehicle,包含的属性有车轮个数 wheels和车重weight.小车类Car是Vehicle的子类,其中包含的属性有载人数 loader.卡车类Truck是Car类的子类,其中包含的属性有载重量payload.每个 类都有构造方法和输出相关数据的方法.最后,写一个测试类来测试这些类的功 能. package hanqi; public class Vehicle { private int wheels; private int weight

自己写一个与startWith类似的判断方法

package com.hanqi.lianxi; import java.util.Scanner; public class startWith { //自己写一个与startWith类似的判断方法 public static void main(String[] args) { //首先随便定义一个字符串如下 String str = "fghkldrt"; //提示我们自己输入一个字符串,用来判断输入的字符串是不是刚刚定义的字符串的开头 Scanner sc = new Sca

写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形,、。。。。。

.写一个方法void sanjiao(int a,int b,int c),判断三个参数是否能构成一个三角形, 如果不能则抛出异常IllegalArgumentException,显示异常信息"a,b,c不能构成三 角形",如果可以构成则显示三角形三个边长,在主方法中得到命令行输入的三个 整数,调用此方法,并捕获异常. 代码: package exception; import java.util.Scanner; public class SanJiao { public stati