Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Are there any Java method ordering conventions? [closed]

I've got a large-ish class (40 or so methods) that is part of a package I will be submitting as course-work. Currently, the methods are pretty jumbled up in terms of utility public/private etc. and I want to order them in a sensible way. Is there a standard way of doing this? E.g. normally fields are listed before methods, the constructor(s) are listed before other methods, and getters/setters last; what about the remaining methods?

like image 254
fredley Avatar asked Jan 12 '11 11:01

fredley


People also ask

Does it matter what order methods are in Java?

Declaration order of methods never matters in C# or Java. Likewise it doesn't matter whether you declare a method before or after a variable that it uses.

How do you order methods in class?

Member variables at the top of the class, then constructors, then all other methods. And you order the methods to be close together with how they are used within the class (rather than arbitrarily putting all public then private then protected).


8 Answers

  1. Class (static) variables: First the public class variables, then the protected, and then the private.

  2. Instance variables: First public, then protected, and then private.

  3. Constructors

  4. Methods: These methods should be grouped by functionality rather than by scope or accessibility. For example, a private class method can be in between two public instance methods. The goal is to make reading and understanding the code easier.

Source: https://www.oracle.com/java/technologies/javase/codeconventions-fileorganization.html

like image 53
Michael Avatar answered Oct 14 '22 23:10

Michael


Some conventions list all the public methods first, and then all the private ones - that means it's easy to separate the API from the implementation, even when there's no interface involved, if you see what I mean.

Another idea is to group related methods together - this makes it easier to spot seams where you could split your existing large class into several smaller, more targeted ones.

like image 40
Jon Skeet Avatar answered Oct 14 '22 23:10

Jon Skeet


The more precise link to «Code Conventions»: «Class and Interface Declarations»

like image 31
Timofey Gorshkov Avatar answered Oct 15 '22 00:10

Timofey Gorshkov


Not sure if there is universally accepted standard but my own preferences are;

  • constructors first
  • static methods next, if there is a main method, always before other static methods
  • non static methods next, usually in order of the significance of the method followed by any methods that it calls. This means that public methods that call other class methods appear towards the top and private methods that call no other methods usually end up towards the bottom
  • standard methods like toString, equals and hashcode next
  • getters and setters have a special place reserved right at the bottom of the class
like image 21
Qwerky Avatar answered Oct 15 '22 00:10

Qwerky


40 methods in a single class is a bit much.

Would it make sense to move some of the functionality into other - suitably named - classes? Then it is much easier to make sense of.

When you have fewer, it is much easier to list them in a natural reading order. A frequent paradigm is to list things either before or after you need them , in the order you need them.

This usually means that main() goes on top or on bottom.

like image 45
Thorbjørn Ravn Andersen Avatar answered Oct 15 '22 00:10

Thorbjørn Ravn Andersen


My "convention": static before instance, public before private, constructor before methods, but main method at the bottom (if present).

like image 38
eljenso Avatar answered Oct 15 '22 01:10

eljenso


Also, eclipse offers the possibility to sort class members for you, if you for some reason mixed them up:

Open your class file, the go to "Source" in the main menu and select "Sort Members".

taken from here: Sorting methods in Eclipse

like image 29
Stephan Richter Avatar answered Oct 15 '22 00:10

Stephan Richter


Are you using Eclipse? If so I would stick with the default member sort order, because that is likely to be most familiar to whoever reads your code (although it is not my favourite sort order.)

like image 35
finnw Avatar answered Oct 15 '22 00:10

finnw