Solved

gauard clause in java

Posted on 2014-10-02
4
160 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 27

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

Secure Your Active Directory - April 20, 2017

Active Directory plays a critical role in your company’s IT infrastructure and keeping it secure in today’s hacker-infested world is a must.
Microsoft published 300+ pages of guidance, but who has the time, money, and resources to implement? Register now to find an easier way.

Question has a verified solution.

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

Suggested Solutions

Title # Comments Views Activity
web application structure 18 111
sql import cannot be resolved jsp 3 72
Running JavaFX on the Raspberry Pi 27 119
IntelliJ and Eclipse Neon 2 installations 4 31
Having just graduated from college and entered the workforce, I don’t find myself always using the tools and programs I grew accustomed to over the past four years. However, there is one program I continually find myself reverting back to…R.   So …
This article will show, step by step, how to integrate R code into a R Sweave document
The viewer will learn how to implement Singleton Design Pattern in Java.
This tutorial explains how to use the VisualVM tool for the Java platform application. This video goes into detail on the Threads, Sampler, and Profiler tabs.

679 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