Академический Документы
Профессиональный Документы
Культура Документы
By Aleksey Shevchenko
There are many standards and best practices for Java Developers out there. This
article outlines ten most basic rules that every developer must adhere to and the
disastrous outcomes that can follow if these rules are not followed.
1. Add comments to your code. Everybody knows this, but somehow forgets to
follow it. How many times have you "forgotten" to add comments? It is true that the
comments do not literally contribute to the functionality of a program. But time and
time again you return to the code that you wrote two weeks ago and, for the life of
you, you cannot remember what it does! You are lucky if this uncommented code is
actually yours. In those cases something may spark your memory. Unfortunately
most of the time it is somebody else's, and many times the person is no longer with
the company! There is a saying that goes "one hand washes the other." So let's be
considerate to one another (and ourselves) and add comments to your code.
2. Do not complicate things. I have done it before and I am sure all of you
have. Developers tend to come up with complicated solutions for the simplest
problems. We introduce EJBs into applications that have five users. We implement
frameworks that an application just does not need. We add property files, objectoriented solutions, and threads to application that do not require such things. Why
do we do it? Some of us just do not know any better, but some of us do it on
purpose to learn something new, to make it interesting for ourselves. For those who
do not know any better, I recommend reaching out to the more experienced
programmers for advice. And to those of us that are willing to complicate the design
of an application for personal gains, I suggest being more professional.
3. Keep in Mind "Less is more" is not always better. Code efficiency is a
great thing, but in many situations writing less lines of code does not improve the
efficiency of that code. Let me give you a "simple" example:
if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0)) ||
(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))){
newStatusCode = "NYP";
}
How easy is it to figure out what this "if" condition is doing? Now imagine that
whoever wrote this code, did not follow rule number 1 Add comments to your
code.
Wouldn't it be much easier if we could separate this condition into two separate if
statements? Now, consider this revised code:
if(newStatusCode.equals("SD") && (sellOffDate == null ||
todayDate.compareTo(sellOffDate)<0 || (lastUsedDate != null &&
todayDate.compareTo(lastUsedDate)>0)))
{
http://www.pdf4free.com
newStatusCode = "NYP";
}
else if(newStatusCode.equals("OBS") && (OBSDate == null ||
todayDate.compareTo(OBSDate)<0))
{
newStatusCode = "NYP";
}
Isn't it much more readable? Yes, we have repeating statements. Yes, we have one
extra "IF" and two extra curly braces, but the code is much more readable and
understandable!
4. No hard coding please. Developers often forget or omit this rule on purpose
because we are, as usual, crunched for time. But maybe if we had followed this rule,
we would not have ended up in the situation that we are in. How long does it take to
write one extra line of code that defines a static final variable?
Here is an example:
public class A
{
public static final String S_CONSTANT_ABC = "ABC";
public boolean methodA(String sParam1)
{
if (A.S_CONSTANT_ABC.equalsIgnoreCase(sParam1))
{
return true;
}
return false;
}
}
Now every time we need to compare literal "ABC" with some variable, we can
reference A.S_CONSTANT_ABC instead of remembering what the actual code is. It is
also much easier to modify this constant in one place rather then looking for it
though out all of the code.
5. Do not invent your own frameworks. There are literally thousands of
frameworks out there and most of them are open-source. Many of these frameworks
are superb solutions that have been used in thousands of applications. We need to
keep up to date with the new frameworks, at least superficially. One of the best and
most obvious examples of a superb widely used framework is Struts. This open
source web framework is a perfect candidate to be used in web-based applications.
Please do not come up with your own version of Struts, you will die trying. But you
must remember rule number 3 Do not complicate things. If the application that
you are developing has 3 screens please, do not use Struts, there isn't much
"controlling" required for such an application.
http://www.pdf4free.com
6. Say no to Print lines and String Concatenations. I know that for debugging
purposes, developers like to add System.out.println everywhere we see fit. And
we say to ourselves that we will delete these later. But we often forget to delete
these lines of code or we do not want to delete them. We use System.out.println
to test, why would we be touching the code after we have tested it? We might
remove a line of code that we actually need! Just so that you do not underestimate
the damage of System.out.println, consider the following code:
public class BadCode
{
public static void calculationWithPrint()
{
double someValue = 0D;
for (int i = 0; i < 10000; i++)
{
System.out.println(someValue = someValue + i);
}
}
public static void calculationWithOutPrint()
{
double someValue = 0D;
for (int i = 0; i < 10000; i++)
{
someValue = someValue + i;
}
}
public static void main(String [] n)
{
BadCode.calculationWithPrint();
BadCode.calculationWithOutPrint();
}
}
In the figure below, you can observe that method calculationWithOutPrint()
takes 0.001204 seconds to run. In comparison, it takes a staggering 10.52 seconds
to run the calculationWithPrint() method.
The best way to avoid such CPU waste is to introduce a wrapper method that looks
something like this:
public class BadCode
{
public static final int DEBUG_MODE = 1;
public static final int PRODUCTION_MODE = 2;
public static void calculationWithPrint(int logMode)
{
http://www.pdf4free.com
http://www.pdf4free.com
http://www.pdf4free.com