|
Yes it's the Umbraco api and it's not the complete code, it returns the list to be used in an other function that generates html in order to make the page look different every time you visit it.
Having the ShuffleNodeList was at the end at first... I though I had a good reason to put it in between at first, but looking at it doesn't make sense anymore.
Giraffes are not real.
|
|
|
|
|
0bx wrote: it returns the list to be used in an other function
But the calling function already has the list, as it was passed in as a parameter, so it does not need to be returned since it already exists at the location it would be returned to. I suppose returning it could make for shorter syntax, but not in the case you have shown.
|
|
|
|
|
I wonder, why u had to use recursion/goto at all:
protected void Page_Load(object sender, EventArgs e)
{
var Stuff = loadStuff();
}
private List<Node> loadStuff()
{
var Stuff = new List<Node>();
do
{
foreach (Node thing in Node.GetCurrent().Children)
{
Stuff.Add(thing);
}
Stuff = ShuffleNodeList(Stuff);
}
while (blablabla);
return Stuff;
}
|
|
|
|
|
On the no need for recursion and getting rid of the goto, can I add only doing a single shuffle:
protected void Page_Load(object sender, EventArgs e)
{
List<Node> Stuff = loadStuff();
}
private List<Node> loadStuff()
{
List<Node> Stuff = new List<Node>();
do {
foreach (Node thing in Node.GetCurrent().Children)
{
Stuff.Add(thing);
}
} while (Stuff.Count < 100 && Stuff.Count > 0))
return ShuffleNodeList(Stuff);
}
Nice, self contained and easy to follow.
Panic, Chaos, Destruction. My work here is done.
Drink. Get drunk. Fall over - P O'H
OK, I will win to day or my name isn't Ethel Crudacre! - DD Ethel Crudacre
I cannot live by bread alone. Bacon and ketchup are needed as well. - Trollslayer
Have a bit more patience with newbies. Of course some of them act dumb - they're often *students*, for heaven's sake - Terry Pratchett
|
|
|
|
|
Okay, I knew about the "While" loop, but I didn't know you can do it like this.
Giraffes are not real.
|
|
|
|
|
Chuckle! I think a lot of us do the same, when the occasion arises. I certainly do. Of course, there's no stigma involved in the practice, as long as you remember to test your replacement code thoroughly. Right? Right?
(As it happens, I also do it to my old, already-published fiction...which causes my readers a bit of concern when they discover it! Well, at least with fiction the "debugging" is less onerous.)
|
|
|
|
|
Gah! You needed that goto for the "Goto Hell" Achievement!
I remember when goto and gosub/return were the ONLY way to get around in your program flow, how times have changed!
|
|
|
|
|
|
0bx wrote: foreach (Node thing in Node.GetCurrent().Children)
{
Stuff.Add(thing);
}
Others have commented on the outer looping constructs. Regarding the inner foreach loop, I'd just get rid of it:
Stuff.AddRange(Node.GetCurrent().Children);
Cheers.
|
|
|
|
|
What if Stuff.Count never exceeds 100 items? Both versions seem like infinite loops.
Recursion would be superior here because it will at least blow the call stack in a reasonable time frame vs. waiting for the application container (IIS?) to kill the non-responsive thread.
I usually include a safety valve for that kind of code:
int maxReps = 100;
blalbalba && (maxReps-- > 0)
I always use safety valves when writing code that "should" converge to an answer.
|
|
|
|
|
How about?:
protected void Page_Load(object sender, EventArgs e)
{
List<Node> Stuff = new List<Node>();
do {
foreach (Node thing in Node.GetCurrent().Children)
Stuff.Add(thing);
} while (Stuff.Count < 100 && Stuff.Count > 0))
Stuff = ShuffleNodeList(Stuff);
}
|
|
|
|
|
Journalists of Bangladesh Asked to police "when are you going to catch the criminal."
Police ob Bangladesh answered that when they will be 100% confirm.
Then the journalist asked "What do you mean by 100% confirm"
Police department answered:
When someone will give the detail description how they murdered those Journalist couple in-front of Journalists then they will be 100% confirm.
FÚck, I born this shîtty country
modified 16-Feb-12 1:17am.
|
|
|
|
|
|
its a programming forum dude,
even though its a shame
|
|
|
|
|
This is the original code:
DateTime dtInput;
DateTime.TryParse(txtInputDate.Text, out dtInput);
document.InputDate = dtInput;
Lets do a change request:
* Input date always will be the current date.
DateTime dtInput;
DateTime.TryParse(DateTime.Now.ToString(), out dtInput);
document.InputDate = dtInput;
What is wrong with these people? They start coding and stop thinking?
|
|
|
|
|
I think the best part of this one is that even the original code is broken – because it's not checking the result of TryParse and assigning a sensible default value, if the input string wasn't in a valid format, you get (DateTime)0 which is almost certainly not what they want (and will cause things further down the line to break in subtle ways).
|
|
|
|
|
The original code has a infallible validation using Javascript.
It never fails.
Except when you change you server locale, or disable javascript, oh sh*t, I remember now, I had fixed this too.
|
|
|
|
|
sergio_ykz wrote: infallible validation using Javascript
that was a nice one
|
|
|
|
|
sergio_ykz wrote: infallible validation using Javascript
var pope = new Pope();
pope.setExCathedraMode(true);
var inquisition = pope.createInquisition();
var result = inquisition.interrogate($("form"));
if (result.isHeretical)
pope.excommunicate($("form"));
pope.setExCathedraMode(false);
|
|
|
|
|
|
On the other hand, it makes it easier to go back to the original someday. :p
|
|
|
|
|
I have often written a change request with the expectation that it will get switched back to the original when the user realizes that it isn't really what they want. However, I comment out the old line(s) and and new code, not try to shove a square peg into a round hole.
Just because the code works, it doesn't mean that it is good code.
|
|
|
|
|
sergio_ykz wrote: They start coding and stop thinking? Yeah, they still don't get all that multithreading stuff.
Greetings - Jacek
|
|
|
|
|
Maybe they were thinking of the Mayan calendar. Pretty soon DateTime.Now will not parse.
|
|
|
|
|
This[^] VS 2010 issue had been finally fixed and shipped with a SP1.
Horror: Someone had revealed it...
At least it was found in commentaries...
Greetings - Jacek
|
|
|
|