|
How would you refactor this?
object.we.did.not.design.but.must.use.PropertyA = "String" Sadly, not every component that goes into our apps are ones that we have created ourselves.
Not every solution can be perfect, but we can at least strive to make it as elegant as possible.
Granted that this is still a simplification, but here is a real world object hierarchy that is this complex (the JulMar.ATAPI namespace for .NET TAPI development):
TapiManager.Lines(0).Addresses(0).Calls(0).Features(0).CanPark
No one ever said that the "With" keyword was added to make it easy. In fact, the "With" keyword can cause problems if misused (But so can c/c++). Yes, you can write code that does the exact same thing without using the "With" keyword. You can also perform multiplication using only the addition operator. Should we get rid of the multiplication operator?
I have not bothered to learn C#. The only reason is that I have yet to find anything I could not do using VB.NET that I could do in C#. Why buy a red handled screwdriver when I already own a blue one?
Back in the days before .NET, using a With block was very handy when working with databases as you could have code that was easy to read like this:
With rsEmployee
.AddNew
![Name] = "John Doe"
![Title] = "Peon"
![Extension] = "123"
.Update
End With This comprised 99.9% of all With blocks I've used.
I don't claim to be a know it all, for I know that I am not...
I usually have an answer though.
modified on Wednesday, October 8, 2008 4:38 PM
|
|
|
|
|
It has been a long time since I have used VB but is
with TapiManager.Lines(0).Addresses(0).Calls(0).Features(0)
.CanPark
end with
Even valid? And what happens when the lines collection is empty, a known condition that should have been checked. What we have here is trying to justify adding with to C# and providing no other scenario for its use than.the.one.argument.of.some.developer.creating.a.ridiculous.namespace whereas the arguments against adding the keyword, readability, reuse, value of code design just scream don't add the feature.
The bottom line, and I said this earlier, if you want to use VB.NET use VB.NET. There is a reason they are two different languages.
Need software developed? Offering C# development all over the United States, ERL GLOBAL, Inc is the only call you will have to make.
Happiness in intelligent people is the rarest thing I know. -- Ernest Hemingway
Most of this sig is for Google, not ego.
|
|
|
|
|
Ennis Ray Lynch, Jr. wrote: if saving typing concern is the primary concern of a Software Developer
I always wondered just what that primary concern had to be
But on a serious note, I suspect that Pascal language fame was so short and C spread so fast mainly because BEGIN/END was replaced with {}
|
|
|
|
|
If you want to save on typing use resharper.
VB style keywords belong in VB. Why bastatrdize C# , it make no sense. If you are a C# developer that wants to use the with keyword to save some typing then then switch to VB. Just remember that the time that you save by using the with keyword will be lost by having to type those ridiculous if... then... end if statements.
modified on Wednesday, October 8, 2008 5:16 AM
|
|
|
|
|
sucram wrote: Just remember that the time that you save by using the with keyword will be lost by having to type those ridiculous if... then... end if statements.
So by adding WITH to C# you get the time-saving and avoid the IF THEN END statements...
(By the way, I voted NO too. I just don't think your reasoning is fully thought through.)
|
|
|
|
|
Your right I went into a blinding range when I saw the survey and my primeval instincts took over. Hence my grammar and logical sentence construction ability was reduced to grunts.
modified on Wednesday, October 8, 2008 11:05 AM
|
|
|
|
|
I voted you a 5, just because I was in the mood. Yeah, that's right, feel thy wrath! Muwahahahaha!
|
|
|
|
|
Sorry, I couldn't resist.
/ravi
|
|
|
|
|
yeah and while we're on the topic, what's that got to do with musical notes?
|
|
|
|
|
Though it (VB) can not stand to compete against other languages, for a significant percentage of software professionals it is an essential breadwinner.
Vasudevan Deepak Kumar
Personal Homepage Tech Gossips
All the world's a stage,
And all the men and women merely players.
They have their exits and their entrances;
And one man in his time plays many parts... --William Shakespeare
|
|
|
|
|
I was only kidding. I don't have religious opinions on programming languages, code editors or religion.
/ravi
|
|
|
|
|
Ravi Bhavnani wrote: What's VB?
VB = C# - curly braces - semicolons + Dim
|
|
|
|
|
+ My namespace.
/ravi
|
|
|
|
|
Nemanja Trifunovic wrote: VB = C# - curly braces - semicolons + Dim
+ Me keyword and everything totally messed up due to a backward compability with a extremely inefficient and over-keyworded language.
Greetings - Gajatko
Portable.NET is part of DotGNU, a project to build a complete Free Software replacement for .NET - a system that truly belongs to the developers.
|
|
|
|
|
gajatko wrote: over-keyworded language
Proof? Examples?
|
|
|
|
|
I mean: a lot of redutant and hilarious keywords, which can be replaced by intuitive symbols. Do you really need a proof for this obvious thing? Here are examples:
Then, End If, End While, End X, Dim, As, Implements, Handles, Until, & operator, ReadOnly, OverLoads, CDate, CChar, CStr, CSng etc. (and 11 more), ReDim, Preserve, WriteOnly , etc. etc.. There are much more redutancies in this ankward sandbox programming language, but I think that's enough for now. Cheers.
Greetings - Gajatko
Portable.NET is part of DotGNU, a project to build a complete Free Software replacement for .NET - a system that truly belongs to the developers.
|
|
|
|
|
Yeah I see what you mean. I'm still thinking in a classic VB way since I don't use .NET much. But, I see how some of those (not all, some are just verbose) could overlap the BCL functionality.
|
|
|
|
|
Nemanja Trifunovic wrote: VB = C# - curly braces - semicolons + Dim
I'm still happy to be a dinosaur too. Rawr!!
|
|
|
|
|
VB also supports an 'Optional' keyword. C#, for some reason supports only overloading and does not support the optional keyword.
Vasudevan Deepak Kumar
Personal Homepage Tech Gossips
All the world's a stage,
And all the men and women merely players.
They have their exits and their entrances;
And one man in his time plays many parts... --William Shakespeare
|
|
|
|
|
Yeah, that's a tough one to swallow coming from C++ as well. Although with a bit of prep work, you can kinda fake it by passing in an object and using initializers. IMHO, C# should build this into the compiler and just give us named parameters with default values...
---- You're right.
These facts that you've laid out totally contradict the wild ramblings that I pulled off the back of cornflakes packets .
|
|
|
|
|
That's pushing the envelope a bit far! "Optional" is really only useful in VB to simulate polymorphism, which C# already supports.
Public Sub MyExample(intLength As Integer, Optional intWidth As Integer)
' Some code
End Sub
-- C#
public void MyExample(Length as int)
{
}
public void MyExample(Length as int, Width as int)
{
}
http://mytechworld.officeacuity.com
|
|
|
|
|
I disagree:
public void MyExample( int length, optional int height = 0, optional int width = 0 )
{
}
is better (and clearer) than
public void MyExample( int length )
{
MyExample( length, 0 );
}
public void MyExample( int length, int height)
{
MyExample( length, height, 0 );
}
public void MyExample( int length, int width )
{
MyExample( length, 0, width );
}
public void MyExample( int length, int height, int width )
{
}
|
|
|
|
|
Why bother with a keyword? The compiler should be able to handle
public void MyExample( int length, int height = 0, int width = 0 ){
cheers,
Chris Maunder
CodeProject.com : C++ MVP
|
|
|
|
|
You are right. 'Optional' is just syntatic sugar that would make it more visible.
|
|
|
|
|
No - VB.NET has polymorhism too
Optional is mainly used for dealing with OLE Automation (particularily of Office apps) which have optional parameters....
But doesn't C# have a var keyword for that?
|
|
|
|