visual C# 2005 exiting
-
Return is not allowed inside of methods more than once and should not be used by any method that does not have a functional result. Doing so is a poor programming practice that violates the one-in, one-out principle. You should use a proper combination of if, elseif, and else blocks to properly ensure program flow execution. (When I was a TA I took points off for liberal use of return)
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest HemingwayEnnis Ray Lynch, Jr. wrote:
Return is not allowed inside of methods more than once and should not be used by any method that does not have a functional result. Doing so is a poor programming practice that violates the one-in, one-out principle.
Yeah, that's what I thought also until I read Implementation Patterns by Kent Beck: Back in the old days of programming, a commandment was issued: each routine shall have a single entry and a single exit. This was to prevent the confusion possible when jumping into and out of many locations in the same routine. It made good sense when applied to FORTRAN or assembly language programs written with lots of global data where even understanding which statements were executed was hard work. In Java, with small methods and mostly local data, it is needlessly conservative. However, this bit of programming folklore, thoughtlessly obeyed, prevents the use of guard clauses. Guard clauses are particularly useful when there are multiple conditions: [Code example snipped of nested if statements with a single return] Nested conditionals breed defects. The guard clause version of the same code notes the prerequisites to processing a request without complex control structures: [Code example snipped of flat if statements each with a return ] Keep in mind there is more context to his segment on the Guard Clause. If you are interested I highly recommend the book.
All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident.
Arthur Schopenhauer - German philosopher (1788 - 1860)
-
xxmikexx wrote:
i have been learning
I guess you are not a quick learner. You must be the first one. what happens if you get better at programming, you add more x's to your name?
led mike
guess not i am damn sure you didnt learn how to program for yourself in 3 days i have spent alot of time trying to find websites were i can learn that are not blocked this is a new thing i can not do and all i know is i am definetly not coming back here for help any more a few people on here are very helpfull but just a couple people are incredibly annoying, i dont see what i did wrong i tried looking it up for my self then i figured i would ask for help and the reason i have the X's in my name is because i hate numbers in my name also this is the same name i have had on all the websites i go to one user name thats it so....
modified on Wednesday, March 19, 2008 5:03 PM
-
i need help with a quick program i am making, how would i exit a block of code in an if statement for example
private void button1_Click(object sender, EventArgs e) { code to be run here if (x ==5) { run more code exit this block } more code here }
this is hard to explain but there is no other way i can think of doing this i know in visual basic there was something called exit sub (or something similiar been a while) that would leave it thanks in advanceint x = 5; if (x == 5) { Debug.WriteLine("more code to runs here1"); Debug.WriteLine("more code to runs here2"); if(done) return; else { Debug.WriteLine("more code to runs here3"); Debug.WriteLine("more code to runs here4"); Debug.WriteLine("more code to runs here5"); } } Debug.WriteLine("more code to runs here6"); Debug.WriteLine("more code to runs here7"); Debug.WriteLine("more code to runs here8");
does it helps? Srini -
int x = 5; if (x == 5) { Debug.WriteLine("more code to runs here1"); Debug.WriteLine("more code to runs here2"); if(done) return; else { Debug.WriteLine("more code to runs here3"); Debug.WriteLine("more code to runs here4"); Debug.WriteLine("more code to runs here5"); } } Debug.WriteLine("more code to runs here6"); Debug.WriteLine("more code to runs here7"); Debug.WriteLine("more code to runs here8");
does it helps? Srinikinda i am using visual C# not the console one the one were you can place buttons and stuff they are similiar but different i cant test this till i am at school tomorrow when it returns where does it go to? this seems to help tho thanks alot if it just leaves the whole if statement that would be great
-
xxmikexx wrote:
i am just trying to learn and not fail... i have a deadline
What did you do with the rest of the semester then?
only two letters away from being an asset
-
Wow you really got him fired up. I almost suffocated trying to read his post to me without taking a breath.
led mike
-
kinda i am using visual C# not the console one the one were you can place buttons and stuff they are similiar but different i cant test this till i am at school tomorrow when it returns where does it go to? this seems to help tho thanks alot if it just leaves the whole if statement that would be great
The first thing you should do when you get to school tomorrow is visit the admissions office and drop the class, then change your major. The example he gave wasn't using a console window, it was using the debug window. Notice the difference, I'll spell it slowly, D e b u g and C o n s o l e. And BTW, the "the one were you can place buttons and stuff" is referred to as a Windows application. Your friends who graduate can tell you all about it.
only two letters away from being an asset
-
Wow you really got him fired up. I almost suffocated trying to read his post to me without taking a breath.
led mike
Guess he is struggling in his writing courses also. Punctuation is overrated anyway. :-D
only two letters away from being an asset
-
The first thing you should do when you get to school tomorrow is visit the admissions office and drop the class, then change your major. The example he gave wasn't using a console window, it was using the debug window. Notice the difference, I'll spell it slowly, D e b u g and C o n s o l e. And BTW, the "the one were you can place buttons and stuff" is referred to as a Windows application. Your friends who graduate can tell you all about it.
only two letters away from being an asset
wow just wow how am i supposed to know that everything at school s blocked i have been programming for 3 days sorry i am not some master programmer in the 3 days since i have started everything i have learned is from code snippets... just please please do me a favor and dont comment on this thread if you are not going to help thats fine dont insult me... better yet just go die
-
int x = 5; if (x == 5) { Debug.WriteLine("more code to runs here1"); Debug.WriteLine("more code to runs here2"); if(done) return; else { Debug.WriteLine("more code to runs here3"); Debug.WriteLine("more code to runs here4"); Debug.WriteLine("more code to runs here5"); } } Debug.WriteLine("more code to runs here6"); Debug.WriteLine("more code to runs here7"); Debug.WriteLine("more code to runs here8");
does it helps? Srini -
The first thing you should do when you get to school tomorrow is visit the admissions office and drop the class, then change your major. The example he gave wasn't using a console window, it was using the debug window. Notice the difference, I'll spell it slowly, D e b u g and C o n s o l e. And BTW, the "the one were you can place buttons and stuff" is referred to as a Windows application. Your friends who graduate can tell you all about it.
only two letters away from being an asset
-
Guess he is struggling in his writing courses also. Punctuation is overrated anyway. :-D
only two letters away from being an asset
-
Guess he is struggling in his writing courses also. Punctuation is overrated anyway. :-D
only two letters away from being an asset
-
mike few programmers here are just so stupid that they just waste time pulling each other legs. They need a life....Anyway do not take it personally....Just ignore them and move on. May be they are so proud of what they know. Just share it guys if you know and it doesn't matter if the problem is simple or complex. At least this guy is putting effort into it... Yeh mike just remember you have to put 95% of the effort yourself. Spoon feeding is not acceptable here atleast in this forum. All the best.
-
mike few programmers here are just so stupid that they just waste time pulling each other legs. They need a life....Anyway do not take it personally....Just ignore them and move on. May be they are so proud of what they know. Just share it guys if you know and it doesn't matter if the problem is simple or complex. At least this guy is putting effort into it... Yeh mike just remember you have to put 95% of the effort yourself. Spoon feeding is not acceptable here atleast in this forum. All the best.
-
kinda i am using visual C# not the console one the one were you can place buttons and stuff they are similiar but different i cant test this till i am at school tomorrow when it returns where does it go to? this seems to help tho thanks alot if it just leaves the whole if statement that would be great
the code which i posted can work in both console and windows.. dont confuse with Debug.Writeline satement, it is just used to print in Output Window. ie.
private void button1_Click(object sender, EventArgs e) { int x = 5; if (x == 5) { Debug.WriteLine("more code to runs here1"); Debug.WriteLine("more code to runs here2"); if(done) return; // This will exit the funtion button1_Click else { Debug.WriteLine("more code to runs here3"); Debug.WriteLine("more code to runs here4"); Debug.WriteLine("more code to runs here5"); } } Debug.WriteLine("more code to runs here6"); Debug.WriteLine("more code to runs here7"); Debug.WriteLine("more code to runs here8"); }
the return statement will exit from the funtion button1_Click. Srini -
Ennis Ray Lynch, Jr. wrote:
Return is not allowed inside of methods more than once and should not be used by any method that does not have a functional result. Doing so is a poor programming practice that violates the one-in, one-out principle.
Yeah, that's what I thought also until I read Implementation Patterns by Kent Beck: Back in the old days of programming, a commandment was issued: each routine shall have a single entry and a single exit. This was to prevent the confusion possible when jumping into and out of many locations in the same routine. It made good sense when applied to FORTRAN or assembly language programs written with lots of global data where even understanding which statements were executed was hard work. In Java, with small methods and mostly local data, it is needlessly conservative. However, this bit of programming folklore, thoughtlessly obeyed, prevents the use of guard clauses. Guard clauses are particularly useful when there are multiple conditions: [Code example snipped of nested if statements with a single return] Nested conditionals breed defects. The guard clause version of the same code notes the prerequisites to processing a request without complex control structures: [Code example snipped of flat if statements each with a return ] Keep in mind there is more context to his segment on the Guard Clause. If you are interested I highly recommend the book.
All truth passes through three stages. First, it is ridiculed. Second, it is violently opposed. Third, it is accepted as being self-evident.
Arthur Schopenhauer - German philosopher (1788 - 1860)
Unfortunately, the nature of business software development causes me to recommend against this. Using structured exists simplifies debugging and serves as a preventative measure from a junior programmer going haywire with a 10 page method. While I can say a deeply nested conditional does breed defects the case is made to follow Fowler on this one and refactor into more simpler methods.
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway -
the code which i posted can work in both console and windows.. dont confuse with Debug.Writeline satement, it is just used to print in Output Window. ie.
private void button1_Click(object sender, EventArgs e) { int x = 5; if (x == 5) { Debug.WriteLine("more code to runs here1"); Debug.WriteLine("more code to runs here2"); if(done) return; // This will exit the funtion button1_Click else { Debug.WriteLine("more code to runs here3"); Debug.WriteLine("more code to runs here4"); Debug.WriteLine("more code to runs here5"); } } Debug.WriteLine("more code to runs here6"); Debug.WriteLine("more code to runs here7"); Debug.WriteLine("more code to runs here8"); }
the return statement will exit from the funtion button1_Click. Srini -
Ennis Ray Lynch, Jr. wrote:
Return is not allowed
Not allowed, or not recommended? Two different things. I don't know of any language that places a restriction on the number of return statements that can be used in a block of code. However, yes, good design principles dictate that you should have as few exit points as possible. The original question only asked what the equivalent of VB's exit sub was, not how it should be used. Both Mike and I answered that direct question. Saying "Don't listen to anyone else" is a bit over the top.
only two letters away from being an asset
Anyone with the experience and judgment to disregard my statement would do so. Telling a novice not to do it is perfectly inline. A lot of the advice I give is structured to introductory programmers as more experienced developers have the experience to know when it is hogwash. By biasing my response towards less experienced developers I increase the value of the statements. I will repeat my statement with the inferred subtext: "Return is not allowed unless you have the experience and judgment to properly identify cases for its use and understand the consequences both positive and negative"
Need a C# Consultant? I'm available.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway