[Webinar] Streamline your web hosting managementRegister Today

x
?
Solved

gauard clause in java

Posted on 2014-10-02
4
Medium Priority
?
164 Views
Last Modified: 2014-10-05
Hi,

I am going through below link

http://refactoring.com/catalog/replaceNestedConditionalWithGuardClauses.html

I see below code can be modified better as given further below
double getPayAmount() {
  double result;
  if (_isDead) result = deadAmount();
  else {
    if (_isSeparated) result = separatedAmount();
    else {
      if (_isRetired) result = retiredAmount();
      else result = normalPayAmount();
    };
  }
  return result;
};  

double getPayAmount() {
  if (_isDead) return deadAmount();
  if (_isSeparated) return separatedAmount();
  if (_isRetired) return retiredAmount();
  return normalPayAmount();
};  

Open in new window


I wonder what is the meaning of 'guard clause'  what is its significance.

Please advise
0
Comment
Question by:gudii9
4 Comments
 
LVL 37

Assisted Solution

by:ste5an
ste5an earned 668 total points
ID: 40358314
"Guard Clause" means that you exit the code by an early return, avoiding the "evaluation" of the further else parts.
0
 
LVL 28

Assisted Solution

by:dpearson
dpearson earned 664 total points
ID: 40358340
You might find this example:
http://blog.mafr.de/2009/06/12/a-case-for-guard-clauses/

easier to understand.  It points out more clearly exactly what the "guard clause" is in the code.  It's "guarding" the later code from being executed, because some condition has not been met.  So you can edit the function immediately.

Hope that helps,

Doug
0
 
LVL 7

Author Comment

by:gudii9
ID: 40358618
double getPayAmount() {
  if (_isDead) return deadAmount();
  if (_isSeparated) return separatedAmount();
  if (_isRetired) return retiredAmount();
  return normalPayAmount();
};  

Open in new window


In above code where and how they are doing

"Guard Clause" means that you exit the code by an early return, avoiding the "evaluation" of the further else parts.

Please advise
0
 
LVL 37

Accepted Solution

by:
zzynx earned 668 total points
ID: 40358821
What is your remaining question exactly?

These are the three guard clauses:

  if (_isDead) return deadAmount();
  if (_isSeparated) return separatedAmount();
  if (_isRetired) return retiredAmount();

Open in new window


If the variable _isDead is true, we immediately return deadAmount()
If the variable _isSeparated is true, we immediately return separatedAmount()
If the variable _isRetired is true, we immediately return retiredAmount()

That's much better readable and understandable than the first code you posted
0

Featured Post

Free Tool: Site Down Detector

Helpful to verify reports of your own downtime, or to double check a downed website you are trying to access.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Introduction This article is the second of three articles that explain why and how the Experts Exchange QA Team does test automation for our web site. This article covers the basic installation and configuration of the test automation tools used by…
International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.
This tutorial will introduce the viewer to VisualVM for the Java platform application. This video explains an example program and covers the Overview, Monitor, and Heap Dump tabs.
Suggested Courses

611 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question