|
You're doing web development, aren't you?
cheers
Chris Maunder
|
|
|
|
|
Chris Maunder wrote: You're doing web development, aren't you?
I burst out laughing when I read that. You are so right on the mark there!
I tried my article on divs and tables in Edge. What crap. I'm working on a simple pure Javascript HTML with Preview "page", and it looks beautiful in Chrome. Edge, well, let's just say it's like a rusty knife with a really dull edge. Rather useless and you might get some disease from it.
|
|
|
|
|
The everlasting struggle of developers and naming stuff...
I'm not quite happy with my current project names (they're a bit longish, Company.Domain.Project.Data, for example), but what's bothering me even more at the moment is my own naming convention in Azure.
I prefer PascalCased, like ThisIsMyWebApp, which is fine, except for other resources, like a SQL Server, which only allows lower characters.
Long story short, I now have:
MyWebApp
my-sql-server
mystorageaccount
I'm now leaning more towards my-sql-server style for everything unless -'s are not possible, like with storage accounts.
If this is what I'm worrying about everything must go pretty well, and it does, but this kind of stuff bothers me more than it should
|
|
|
|
|
Just add an X at the end comment it with something like "add modern experiences for Windows 10 users"
I'd rather be phishing!
|
|
|
|
|
Maximilien wrote: add modern e Xperiences for Windows 10 users
|
|
|
|
|
I usually use swear words for naming things. It makes coding so much more amusing.
|
|
|
|
|
So would it be B****A**M************WebApp or b****-a**-m************-web-app?
|
|
|
|
|
Pretty much like that!
Of course the member functions of 'MassiveWhore' are very amusing!
|
|
|
|
|
var yoMomma = new MassiveWhore();
|
|
|
|
|
I'll take an F.
I'd like to buy a vowel Pat, U!
I'd like to solve that Puzzle Pat...
Sorry, could NOT resist.
On the topic, I often throw a little slang around when I get bored with naming. An example would be a module I wrote to get domain whois data. I named the function "WhoIsDis" and another "WhoIsDat" for the string data received.
|
|
|
|
|
I've done that so many times unintentionally.
I also get function names like ExpandRights, which sounds quite libertarian as code goes. That one gave me a chuckle. Also Explode, which totally makes sense once you understand it.
I've used the local decl "sex" more often than i care to admit, usually in exception handlers
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I've always preferred the underscore and all lowercase like my_web_app and my_sql_server...kind of a pain with the added shift, but eventually muscle memory kicks in. I know this is against sql server best practices, but I don't follow stupid rules.
Sander Rossel wrote: like a SQL Server, which only allows lower characters.
This can be enforced?..or is it a policy thing?
"Go forth into the source" - Neal Morse
|
|
|
|
|
I don't like underscores, they're kind of a throwback to the pre-2000's last resort
PascalCasing for classes, methods and properties in C# and SQL, camelCasing for variables and Java(Script), this-type-of-casing in HTML and CSS (and now Azure too I guess), this_kind_of_casing only when I have no other option or if that seems to be the standard in the project I'm working on and thiskindofcasing only for Azure storage accounts because that only allows lower case characters for some reason.
I also never use THIS_SORT_OF_CASING, constants just get regular PascalCasing.
And fields aren't prefixed with an _underscore.
Azure simply doesn't allow upper case characters in a SQL Server name (I'm talking about the SQL Server resource, not the actual database).
Only lower case characters, numbers and -'s, so sqlserver1 and sql-server1 are alright, but SqlServer is not
|
|
|
|
|
I typically use underscores as lead ins for private members in .NET classes and structs.
such as
bool _foo;
int _bar;
The reason being is because .NET/C# will not let you declare two members of the same name at different protection levels. Leading with an underscore prevents naming conflicts with protected, public or internal members used in derived classes.
Other than that, I feel the same way you do about them.
The other exception is when i'm working in an environment where everything is named like that. When in Rome...
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
I used to do that until Visual Studio stopped generating fields with underscores.
So now I just use this if I have the same name for a field and a local variable.
|
|
|
|
|
i didn't think it even let you declare them. maybe i'm wrong. i'm just going by how they're implemented in the IL. The actual fieldnames are what are present in the metadata along with a simple flag that gives you the protection level, so there is no space for two items with the same name. I don't know if I've ever tried it in C#, but *if* it works, it would have to munge the name in IL, which can create a few problems regarding reflection and such but only in narrow circumstances.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Works fine in both C# and IL.
public class Whatever
private readonly string someValue;
public Whatever(string someValue)
{
this.someValue = someValue;
}
} ILDASM gives the following members (or whatever they are):
.class public auto ansi beforefieldinit
someValue : private initonly string
.ctor : void(string)
IL of ctor:
.method public hidebysig specialname rtspecialname
instance void .ctor(string someValue) cil managed
{
// Code size 16 (0x10)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [System.Runtime]System.Object::.ctor()
IL_0006: nop
IL_0007: nop
IL_0008: ldarg.0
IL_0009: ldarg.1
IL_000a: stfld string ConsoleApp1.Whatever::someValue
IL_000f: ret
} // end of method Whatever::.ctor this.someValue is just different from someValue and by using the full namespace or whatever they can easily be kept apart
Just like you can have the same class name in multiple namespaces
|
|
|
|
|
dude, that's for a local variable. Local variables don't have names in IL!
what i said applies to class and struct *members*
like
class Base {
int foo;
}
class Derived :Base {
public int foo { get { return base.foo; } }
}
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
But why would anyone ever do that anyway?
|
|
|
|
|
If someone was using a class from a 3rd party library they wouldn't know what private fields are used.
So if I name my private field "foo" that means another person's class that uses my library can't use the field "foo" - even a private field in their own derived class.
This is why i prefix my private members with underscore - to make it less likely this will happen.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
Interesting.
With private fields it's no a problem at all.
The base field simply isn't accessible from the derived class.
The two fields are simply "BaseClass.someField" and "DerivedClass.someField".
Things get different when you make the base class field public.
class Program
{
static void Main(string[] args)
{
Console.WriteLine(new Derived().SomeValue);
Console.WriteLine(new Derived().BaseSomeValue);
}
}
public class Whatever
{
public string someValue;
}
public class Derived : Whatever
{
private string someValue;
public Derived()
{
base.someValue = "Base someValue.";
someValue = "Witch someValue?";
}
public string SomeValue => someValue;
public string BaseSomeValue => base.someValue;
} This prints "Witch someValue?" and "Base someValue.", pretty much as you'd expect.
Visual Studio only gives me a warning that someValue hides an inherited base member and that I should use the new keyword if hiding was intended.
Basically, both are treated as separate variables, and settings someValue will not set someValue in the base class, neither will setting base.someValue do anything for someValue.
Adding the new keyword gets rid of the warning, but doesn't seem to change anything.
To get back to your specific example, same thing.
new Derived().foo will point to the property, new Base().foo will point to the field (assuming you meant it to be public).
And you get a warning that foo hides an inherited member so you should add the new keyword.
All in all it's pretty confusing and best avoided
|
|
|
|
|
Yep, that's my preference too. my_web_app just seems easier to read than MyWebApp.
|
|
|
|
|
long ago i learned that naming conventions cannot be universal.
So what I've done is I've created a pattern.
I use camel case where appropriate, .NET casing where appropriate, "sql server casing" where appropriate, etc
The thing I try to do is make them such that they can be algorithmically transformed between the different styles.
And i've written code to do it (often in code generators and sql script generators etc)
It works, and it's consistent enough that at least to the human eye, it's not confusing.
When I was growin' up, I was the smartest kid I knew. Maybe that was just because I didn't know that many kids. All I know is now I feel the opposite.
|
|
|
|
|
For project names, I go with proper titles. NotEvenPascalCase, I use my spacebar. Which a Cygwin-wielding co-worker of mine seriously dislikes as spaces are apparently impossible to process with bash scripts. Well, sucks for him, sucks for bash, my PSH-scripts work with that stuff just fine. I dare to say that I don't shy away from non-ASCII characters either. We're in Germany here (so non-ASCII characters are a thing), we don't outsource work to other sites. Meaning that I keep all my stuff in Uuncode and don't bother about keeping it ASCII which again brings the blood of some co-workers to boil. Especially those who learned their craft half a century ago and couldn't be bothered keeping up to the field during all those years.
|
|
|
|
|
Wow, that seems very impractical...
I've also never seen it before.
The person who is going to have to maintain this after you will curse you.
And if your co-workers can't work with it either you should probably change your style.
Programming is a team sport and you can't just make up your own rules.
Even for me (a Dutch neighbor) typing öüï etc. takes two extra key strokes, and I can't do a ß at all.
Just because you can doesn't mean you should.
So I can't say I disagree with your coworkers and I learned programming this decade
|
|
|
|