|
I love how the first Contains is redundant and the default does not get set if myArrayList is empty.
|
|
|
|
|
Still worse: when the array list does not contain "something", the default is set to something. When the array list contains something, the default is set to the first element of the array list, which may or may not be "something"...
|
|
|
|
|
Hey guys, i'm a software developer from Romania, and I've been a lurker here for quite a while. Currently, i'm working on an Android project, and, well, this morning I've caused a wtf fail. Thankfully, I realized it immediately (i.e. after the first NullPointerException) and quickly fixed it.
However, I could not resist posting this here, as it's a beginner's mistake, and I shouldn't have done it in the first place (shame on me). Variable and method names changed, and the original class was much, much larger
public class CategoryProducts extends ListActivity {
private RangeSeekBar<Integer> seekBar;
private int minPrice = 0;
private int maxPrice = 100000;
private void initFilterView() {
if(seekBar == null) {
RangeSeekBar<Integer> seekBar = new RangeSeekBar<Integer>(minPrice, maxPrice);
seekBar.setOnRangeSeekBarChangeListener(new PriceLimitListener());
}
((LinearLayout) filterView.findViewById(R.id.priceSeekBar)).addView(seekBar);
}
}
The explanation (if you haven't spot it already) is that seekBar gets declared as local in the "if" of the initFilterView method, and visible only in that scope. The local "seekBar" and the global "seekBar" are in fact 2 different vars, and nobody guarantees that the global "seekBar" will not be null (which happens in this case). The correct code was
...(same as above)
if(seekBar == null) {
seekBar = new RangeSeekBar<Integer>(minPrice, maxPrice);
seekBar.setOnRangeSeekBarChangeListener(new PriceLimitListener());
}
...(same as above)
|
|
|
|
|
My vote of 5, to accept your mistake.
Newton's unspecified law:
No code in world is bug free!
|
|
|
|
|
Interesting!
How did that compile without an error:
"A local variable named 'seekBar' cannot be declared in this scope because it would give a different meaning to 'seekBar ', which is already used in a 'parent or current' scope to denote something else"
Because it won't for me!
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
EDIT: I believe you've tried this in VS, I dunno if Eclipse has that sort of stuff
I can also post pics
|
|
|
|
|
Now I am starting to believe that world is moving to .net,
God save JAVA
|
|
|
|
|
Yeah, although Java was the first language I've learned and I do still love it with all my heart, after I worked with .NET I've started to understand why people are moving to it.
I think VS2010 Pro is a beauty of an IDE. I didn't get 2011 yet, but from what I've read around here, people aren't really satisfied with it
|
|
|
|
|
|
Agreed - variable masking is a bad idea, it leads to some very hard to spot bugs.
Ideological Purity is no substitute for being able to stick your thumb down a pipe to stop the water
|
|
|
|
|
In the code where the view get's cleared from the current model (i.e. when you want to save changes in the program but have everything cleared), I have found this little gem:
(Variable-Names changed to protect the innocent)
if(view != null)
{
SetUI(view);
myTree.Update(view);
}
else
{
MessageBox.Show("Error when saving, Model is lost in space");
}
As you'd assume, every change is lost when the view is null, and the user has no idea what just happened.
|
|
|
|
|
dakovinc wrote: and the user has no idea what just happened.
Of course they have! they know that the data he entered took the wrong path and ended up in a black hole!
I'm brazilian and english (well, human languages in general) aren't my best skill, so, sorry by my english. (if you want we can speak in C# or VB.Net =p)
|
|
|
|
|
Sentenryu wrote: Of course they have! they know that the data he entered took the wrong path and
ended up in a black hole!
Always Keep Smiling.
Yours Pankaj Nikam
|
|
|
|
|
Is that a web app? I hope someone dismisses that message box...
|
|
|
|
|
For god's sake!
Luckily, it isn't a web app!
|
|
|
|
|
It reminds me of an old term for a crashed program that 'went to east hyperspace':
1.hyperspace
A memory location that is far away from where the program counter should be pointing, especially a place that is inaccessible because it is not even mapped in by the virtual-memory system. “Another core dump — looks like the program jumped off to hyperspace somehow.” (Compare jump off into never-never land.) This usage is from the SF notion of a spaceship jumping into hyperspace, that is, taking a shortcut through higher-dimensional space — in other words, bypassing this universe. The variant east hyperspace is recorded among CMU and Bliss hackers.
At least artificial intelligence already is superior to natural stupidity
|
|
|
|
|
dakovinc wrote: the user has no idea what just happened
Do they ever have any idea?
|
|
|
|
|
Sadly, no. (or almost never)
This is especially true for the users of the program where this code came from.
|
|
|
|
|
I'd be looking for other related error messages:
MessageBox.Show("Danger Will Robinson");
MessageBox.Show("Never fear, Smith is here!");
|
|
|
|
|
Found this in code I wrote a long time ago. Not the stupidest code ever perhaps, but it's just, well, see for yourself.
size = 29;
if (width > 11 || height > 4)
{
size++;
if (width > 13 || height > 5)
{
size++;
if (width > 15 || height > 6)
{
size++;
if (width > 18 || height > 7)
{
size++;
if (width > 19 || height > 8)
{
size++;
if (width > 21 || height > 10)
{
SpreadCompressed(width, width > 21, height > 10, xpos, ypos);
}
else
{
Spread(width, 8, 7, xpos, ypos);
}
}
else
{
Spread(width, 9, 9, xpos, ypos);
}
}
else
{
Spread(width, 9, 10, xpos, ypos);
}
}
else
{
Spread(width, 11, 12, xpos, ypos);
}
}
else
{
Spread(width, 13, 14, xpos, ypos);
}
}
else
{
Spread(width, 15, 16, xpos, ypos);
}
|
|
|
|
|
I used to have a flash drive with code projects on it from my first semester in college. It was a unique set of code
Flash drive died though, and I never had a backup.
If it moves, compile it
|
|
|
|
|
This is a good example of even when there are a lot of nesting levels, the code can be formatted so that it is readable and understandable.
Chris Meech
I am Canadian. [heard in a local bar]
In theory there is no difference between theory and practice. In practice there is. [Yogi Berra]
posting about Crystal Reports here is like discussing gay marriage on a catholic church’s website.[Nishant Sivakumar]
|
|
|
|
|
Yes, and I can't remember why I wrote it this way. It should never even have happened in the first place.
|
|
|
|
|
So what's the alternative?
|
|
|
|
|
Well I could have done this:
if (width <= 11 && height <= 4)
{
size = 29;
Spread(width, 15, 16, xpos, ypos);
}
else if (width <= 13 && height <= 5)
{
size = 30;
Spread(width, 13, 14, xpos, ypos);
}
else if (width <= 15 && height <= 6)
{
size = 31;
Spread(width, 11, 12, xpos, ypos);
}
else if (width <= 18 && height <= 7)
{
size = 32;
Spread(width, 9, 10, xpos, ypos);
}
else if (width <= 19 && height <= 8)
{
size = 33;
Spread(width, 9, 9, xpos, ypos);
}
else if (width <= 21 && height <= 10)
{
size = 34;
Spread(width, 8, 7, xpos, ypos);
}
else
{
size = 34;
SpreadCompressed(width, width > 21, height > 10, xpos, ypos);
}
Not great either, but still better I would say. At least the width and height requirements are actually grouped together with what should happen if they're met, instead of in a weird inverted way moved as far apart as possible.
|
|
|
|
|