|
Hi @BillWoodruff, Funny you'd mention immutability. I've been reading about immutable properties and started using them in my project. These are the properties with only getters and no setters, that can only be set from the constructor. It turns out that many of my objects are like that because I tend to use a lot of classes just to hold data rather than having to make additional database calls, especially inside a loop. I hope this is the correct usage. If not, I've got a lot of searching and replacing to do.
The lack of surety in programming is part of the reason software is fragile.
|
|
|
|
|
Except for method chaining, why would pass the same object back to the caller? Since the object is passed by reference, the caller's reference is updated. So, in your example:
SomeObj myobj = new SomeObj ( someparam = "Some Value" );
myobj = DoSomething( myobj );
the assignment is unnecessary and potentially confusing -- the reader of the code might wonder if myobj is not the same instance that is returned from the call DoSomething in which you passed in myobj
Of course, if SomeObj is struct, then it's passed by value, and yeah, you have to return the "value" for the caller to see the change.
I must say, I'm amused by all this because your question hit the bullseye of how messy method calling can be.
As a digression, think of higher level method as a workflow:
var stuffWorkflowNeedsToKnow = InitializeStuff();
DoStep1(stuffWorkflowNeedsToKnow);
DoStep2(stuffWorkflowNeedsToKnow);
DoStep3(stuffWorkflowNeedsToKnow);
And a further digression: Class-less Coding - Minimalist C# and Why F# and Function Programming Has Some Advantages
Latest Article - Code Review - What You Can Learn From a Single Line of Code
Learning to code with python is like learning to swim with those little arm floaties. It gives you undeserved confidence and will eventually drown you. - DangerBunny
Artificial intelligence is the only remedy for natural stupidity. - CDP1802
|
|
|
|
|
Are there any C# programmer forums that are more forgiving towards people who are fairly new to the language?
Where it's ok to ask questions that haven't been thoroughly researched?
Where you don't get downvoted because a question has been asked before (because every question has)?
A resource where one might even get assistance with asking the question itself?
Often times, questions are difficult to articulate due to the learner's lack of experience and unfamiliarity with the vocabulary.
I can continue doing this on my own, but the learning curve could really improve if I could ask a few questions that might seem ridiculously easy to an experienced programmer. Entire technologies has been deprecated since C# was invented, yet it's all still online as recommended best practices.
|
|
|
|
|
I would say that you can ask every question in this Forum.
Of course you often would get a Link which could answer your question.
My experience with this forum is : as better you specify your issue as better the answer would be - independant if it's posted elsewhere
What you should avoid is any question which could understood as "please write the code for me" or "I don't want to use the debugger" or "what the hell is Google" or could be interpreted as homework from school ...
|
|
|
|
|
|
If only I knew someone who'd written such an article[^]. It's over 10 years old and not a lot has changed in the intervening years.
This space for rent
|
|
|
|
|
Not the one I was thinking of, I don't think - but it's a damn good 'un!
Someone had a link in their sig, IIRC - but for the life of me I can't recall who...
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
It was Dave Kreskowiak who had the links. First should have lead to this[^] article. The second one leads to this[^].
This space for rent
|
|
|
|
|
Dats de bunny!
He removed the link, which is why I got confused, probably ... that or the inevitable rise of senility.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
One of the links went dead so it was removed. Actually, I think it was either you or Pete that told me of it!
I'll gladly put them back... after I wake up.
System.ItDidntWorkException: Something didn't work as expected.
-- said no compiler, ever.
C# - How to debug code[ ^].
Seriously, go read this article.
Dave Kreskowiak
|
|
|
|
|
I think I mentioned the plural, but not the original dead link.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I put the links back in, with only 4 characters to spare. We need a bigger signature space.
|
|
|
|
|
I've got 360 spare at the mo, you can have 150 if you need them?
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Awsome! Thank you! I'll just ask Chris to increase my credit limit.
|
|
|
|
|
Sorry, it's 1:30am here and I've been working all day, so I may have missed something in that article that discusses alternatives to CodeProject. I'll look again though.
|
|
|
|
|
It's not discussing alternatives to CodeProject; what it's showing is how to write a question that will get answered here on CodeProject. To be fair, the same guidelines apply to pretty much any programming forum - in general the people answering will all have the same expectations.
This space for rent
|
|
|
|
|
Oh yeah, for sure. I posted at least one question that I thought was going to lead to a simple yes or no response, but since I didn't explain why I was asking such a basic question, it looked like I hadn't put forth any effort at all.
|
|
|
|
|
You've been a member since 2008 and have been an MVP for all but two of those years. So I'm guessing you didn't start learning C# at a time when there's an ENORMOUS volume of outdated information that looks just as current Online today as it did 15 years ago when it was published. A lot of it doesn't have dates either, because the web site owner whats it to appear fresh to the user.
It's a different ballgame today.
I was hoping for a different resource where conversation more closely resembles a discussion with a colleague.
Also, everyone has a different definition of "thoroughly" and so I think my rule will be to ask whatever questions I have, brush off any negativity I experience if someone else thinks my question is stupid, and just remember the struggle when I get really good, so I can encourage others to continue learning the language. Without that, it's just ColdFusion.
I was about as good as one could get in classic ASP back in 2000... a lot of good that's doing me now.
|
|
|
|
|
Surprisingly perhaps, C# was released in 2002, and I started learning it in ... 2008, when I joined this site. Before that, I was mostly embedded C / assembler with some Windows C++ and VB experience.
So much of the resources I had then were (relatively) just as outdated as the ones you have now!
There is a lot more bollocks and misinformation now, because anyone who can use google and cobble together an app from SO fragments (Stack Overflow Patchwork | CommitStrip[^]) thinks they know it all and can produce a YouTube video on C# ... but there was a good amount of that back then as well.
Rick_Bishop wrote: I was hoping for a different resource where conversation more closely resembles a discussion with a colleague.
That's called "mentoring", or "tutoring" and it's a considerable amount of work for the mentor / tutor - time that often just isn't available because everyone here is a volunteer, and most of 'em have paying jobs which - understandably - have priority. And how many people can you mentor / tutor on a one-to-one basis at a time? Very few, if you are going to do it properly, and fewer still if you are doing it for free! That said, any question where the asker is showing interest can easily turn into a discussion, and does regardless of where it is posted.
Rick_Bishop wrote: I think my rule will be to ask whatever questions I have, brush off any negativity I experience
Negative feedback in the most important and valuable feedback you can get! But only if you act on it and understand why it's there: is it something you did (asked a stupid question or asked it very badly) or is it the respondent who the problem? Or is it that the question you asked relies on context that you haven't supplied because you know all about that (but the reader doesn't have any access to)? As the article(s) Pete linked to say "asking questions is a skill" and if you don't develop the skill, you will get negative comments. Just brushing it off doesn't help, it hides any problems from the only person who can fix them: you. Don't ignore negative comments - they can help you seriously improve the way you think.
Basically remember this: a lazy question gets a lazy answer. If you think about what you are asking, and how you ask it, that shows. It produces a good question which encourages a good answer. And very often it gives you the solution yourself, which is why I sometimes tell people to "explain that as if you were explaining it to your mother on the phone". The effort you have to do to explain what you code does (or should do, or doesn't do) to a non technical mother without the benefit of diagrams is substantial - but it forces you to think about your presumptions about what you have been trying to do.
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
Thank you. That was well said. I hope others read this too.
The lack of surety in programming is part of the reason software is fragile.
|
|
|
|
|
I know about Pete's article, but a vague memory suggests that @Marc-Clifton wrote something similar.
|
|
|
|
|
One of the articles that Griff mentioned in his reply is this[^] one. In general, if you show that you've made at least some effort, you will find that people are more willing to help you. If, however, we feel that someone keeps posting questions that shows that they have put no effort into finding something out for themselves, they will quickly be labelled a Help Vampire, and will be ignored or, in some cases, removed from the site altogether. Really, that's all we ask; that you have at least tried to find something out for yourself.
This space for rent
|
|
|
|
|
I agree. We're splitting hairs now. I'm looking at Experts Exchange, as a possible resource. It never hurts to have several.
|
|
|
|
|
Not sure I agree. I find that the forum that works best is the one you feel most comfortable in. Many people swear by SO, and many by CodeProject, and many by others that I have not used. But as others have already said, think about what you are asking, and whether you could actually find the answer by using Google, reading a good study guide etc. I was late coming to C# (about 5 years ago) and there is still lots I don't know, but the articles here that cover the subject can answer most of my queries.
|
|
|
|
|
I'm on SO every day, however, I would not recommend that for absolute beginners. You'll be calling it quits after that experience if you don't really have a desire to continue, because answers were given in the context of the time when the question was posted. So I've been really discouraged after spending a great deal of time going down rabbit holes and spending money buying books on topics that have since become outdated.
The lack of surety in programming is part of the reason software is fragile.
|
|
|
|