Solved

gauard clause in java

Posted on 2014-10-02
4
157 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 33

Assisted Solution

by:ste5an
ste5an earned 167 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 26

Assisted Solution

by:dpearson
dpearson earned 166 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 167 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

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
Application launch issue with Apache Tomcat 5 18
topping3 challenge 14 68
JavaScript/Java - Changing an image background color 4 54
Java SE 8u111  Lot of stuff broke 11 52
Navigation is an important part of web design from a usability perspective. But it is often a pain when it comes to a developer’s perspective. By navigation, it often means menuing. This is less theory and more practical of how to get a specific gro…
If you haven’t already, I encourage you to read the first article (http://www.experts-exchange.com/articles/18680/An-Introduction-to-R-Programming-and-R-Studio.html) in my series to gain a basic foundation of R and R Studio.  You will also find the …
The goal of this video is to provide viewers with basic examples to understand and use conditional statements in the C programming language.
This tutorial covers a step-by-step guide to install VisualVM launcher in eclipse.

939 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

Need Help in Real-Time?

Connect with top rated Experts

5 Experts available now in Live!

Get 1:1 Help Now