在编写真正清晰易懂的代码时,必须遵循一些准则。一种简单的技术就是单一责任原则。本文概述了用Java编写高效方法的六个关键概念。
在某种程度上,方法是Java中的动作要点。一个方法通常由一组定义明确的程序语句组成。它有一个名称和一组不同类型的参数(0或更多)。通常,它所执行的处理类型是通过其所引用的名称来传达的。只能在程序的任何位置通过使用其名称和参数来调用它。它实际上是主程序中的一个子程序。程序中可以有很多方法。每种方法因其名称,数量和所采用的参数类型而不同。在诸如Java的面向对象的语言中,可以通过称为方法重载或多态的技术来扩展方法。方法可能会也可能不会返回值作为最终语句。方法和自变量的名称分别称为其签名。它是方法声明的一部分。
1.方法签名
尽管一种方法可能具有不同的返回类型,但不会增加其独特性。因此,它不包含在“方法签名”中。
注意,上面声明的方法仅在返回类型上有所区别,而编译器无法识别这些返回类型。因此,它标志着重复声明的错误。相反,如果我们更改方法中的参数,则它们全部变为有效。这种具有相同名称但参数列表不同的方法称为方法重载。请注意,Java编译器通过其签名来区分它们。
如清单1所示,在方法签名中不包括返回类型的原因是,无法从以下两个有效的方法调用中区分调用哪个方法。
2.方法主体
存在方法作为动作的定义。通过一组逻辑程序语句来说明此操作。表达逻辑的最简单准则是,它必须以最佳方式执行单个明确定义的任务。该定义应足够简单,以能够识别给定的方法名称。这就是单一责任原则。该方法应合理,简短,易读。根据需要应用适当的注释以增强可读性。最好以只有一个return语句的方式放置出口逻辑。例如,一条代码语句,例如
方法重载是当我们使用多个具有相同名称但参数类型,参数数目和组合不同的方法时。Java编译器根据签名选择适当的调用方法。例如,我们可以在Java API 的String类中找到许多重载的方法,例如:
方法重载可能使你想起Java中的泛型,但请注意它们并不相同。它们有不同的用途。我们将在单独的文章中介绍它们,因为它们需要更多说明。但是,它们可以并排并且是非常强大的组合。
4.方法覆盖
方法重写是子类从父类继承方法来扩展其实现以传达新含义的方法。在这里,方法名称,类型和参数数量在整个继承过程中必须保持相同,这与方法重载有很大不同。我们通常使用@Override注释来强调我们打算覆盖父方法而不是对其进行重载。
5.递归
自行执行计算的方法称为递归方法。递归逻辑通常使实现逻辑简洁明了。没有没有无法通过简单循环实现的递归逻辑。但是,递归实现的主要用途是使程序逻辑简短。有一些特定的计算可以通过递归逻辑更好地定义,例如实现河内之塔,GCD,阶乘等等。最好避免不必要的递归,因为它可能会使代码变得难以处理,从而使代码难以调试和读取。递归大量使用系统堆栈,并且基于堆栈大小,JVM可能会引发StackOverflowError运行时异常。根据呼叫链的深度,这种情况不太可能出现,但也可能是一种情况。
6.方法文件
尽管Java从不强制执行一种方法,但应使用Javadoc工具记录方法。如果我们正在开发某种库或框架,这将特别有用。记录良好的代码可帮助其他程序员理解方法的目的,方法的数量和参数类型以及与实现相关的约束。它还给出了关于它可能引发的异常以及它返回的值(如果有)的想法。
结论
在用Java编写有效的方法时,应遵循这六个关键但不全面的要点。没有增强可读性的代码不是一个好的代码,但是可以巧妙地实现它。请记住,效率不在于采用棘手的代码,而在于简化。最好将复杂的逻辑分为多个方法。尝试调试此类代码,你将了解所需的代码。关键思想是尽可能地应用KISS原则。