Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Private Methods Over Public Methods

I was examining the StringTokenizer.java class and there were a few questions that came to mind.

I noticed that the public methods which are to be used by other classes invoked some private method which did all of the work. Now, I know that one of the principles of OOD is to make as much as you can private and hide all of the implementation details. I'm not sure I completely understand the logic behind this though.

I understand that it's important to make fields private to prevent invalid values being stored in them (just one of many reasons). However, when it comes to private methods, I'm not sure why they're as important.

For example, in the case of the StringTokenizer class, couldn't we just have put all of the implementation code inside the public methods? How would it have made a difference to the classes which use these methods since the API for these methods (i.e. the rules to call these public methods) would remain the same? The only reason I could think of why private methods are useful is because it helps you from writing duplicate code. For example, if all of the public methods did the same thing, then you can declare a private method which does this task and which can be used by the public methods.

Other question, what is the benefit of writing the implementation in a private method as opposed to a public method?

Here is a small example:

public class Sum{      private int sum(int a, int b){         return a+b;     }      public int getSum(int a, int b){         return sum(a,b);     } } 

Vs...

public class Sum{      public int getSum(int a, int b){         return a+b;     } } 

How is the first sample more beneficial?

like image 956
lbj-ub Avatar asked Oct 13 '11 03:10

lbj-ub


People also ask

What is the difference between a private method and a public method?

Public instance methods: - Use if displaying information or interacting with other classes and/or the client. Private instance methods: - Accessible only from within class scope. - Part of the class inner-workings.

When should a method be private vs public?

Which one we should use? We should use public access modifier if we want to make the method or property visible from anywhere, other classes, and instances of the object. Use the private access modifier if you want to make the method or property visible in its own class only.

Should public methods be above private?

The best practice is to be consistent. Personally, I prefer putting public methods first, followed by protected methods, following by private methods. Member data should in general always be private or protected, unless you have a good reason for it not to be so.

Why should methods be private?

Private methods are useful for breaking tasks up into smaller parts, or for preventing duplication of code which is needed often by other methods in a class, but should not be called outside of that class.


1 Answers

In order to add something, a private method can ALWAYS be changed safely, because you know for sure that is called only from the own class, no external classes are able to call a private method (they can't even see it).

So having a private method is always good as you know there is no problem about changing it, even you can safely add more parameters to the method.

Now think of a public method, anyone could call that method, so if you add/remove a parameter, you will need to change also ALL the calls to that method.

like image 133
Juan Antonio Gomez Moriano Avatar answered Sep 22 '22 15:09

Juan Antonio Gomez Moriano