Types are important for type safety, so you don’t access properties that don’t exist, can use polymorphism etc. However, having worked in both duck-typing and hard typing languages, I believe the most important part of a type is it’s name.
Classes are are arbitrary constructs we create to help us understand and manage code. They are inherently organisational structures.
That may sound like an argument FOR putting the name of the class first. “If I know it’s a ConnectionCredentialsQuery, I don’t need to know it’s name, the use-case is evident!” Classes often get reused though, like a CartesianPoint. You may create several instances of them. Which of the name and type below are more indicative of use?
CartesianPoint PlayerPosition;
Types are, to some extent, implementation detail. The name tells you what the variable is for, which is more important.
Another point: You will always need to name variables well, because after declaration, whenever you see a variable, you will only see its name. You want to be able to fully understand what you are looking at without having to mouse over or go back to the declaration of a variable.
Additionally, many typed languages will allow you to use a syntax to altogether avoid declaring the type of a variable if derived from somewhere else.
var result = a + b;
var customer = new Customer();
Given that the type can be inferred, and therefore specifying it explicitly is optional, why make it the first thing you see? That means you need to move your eye back and forth when looking for the names of things. Which of these two are better for legibility:
var result = a + b;
CartesianCoordinate playerPosition;
const result = a + b;
letplayerPosition: CartesianCoordinate;
Finally, you say that types are more important because they are important to the compiler, but compilers don’t care about the order of these definitions. Compilers exist to allow us to write easier to read code. They exist to convert high level languages to low level byte code. They exist to enable more readable code.
If you’re looking for declarations, some languages use const, let or var followed by the name of said variable. That’s a little easier to find than having a type name at the start, so I don’t think what you’re saying gives the other approach an advantage. The indentation is also more consistent with these keywords, which helps.
I realise some languages (like Python) don’t use these sorts of keywords during declaration. For those languages it could indeed be a disadvantage.
What you’re saying is more consistent, but I don’t think it’s more readable
I’m fine with let or var…if the compiler is going to infer the type thats all well and good. But it’s a replacement for the type - why would you write both? It should be either or
And if the type is being inferred, the next thing I want to know is where it came from. That tells you the type and more, I don’t want to have to see a type name that may or may not be there
As other users have said, we aren’t compilers.
Types are important for type safety, so you don’t access properties that don’t exist, can use polymorphism etc. However, having worked in both duck-typing and hard typing languages, I believe the most important part of a type is it’s name.
Classes are are arbitrary constructs we create to help us understand and manage code. They are inherently organisational structures.
That may sound like an argument FOR putting the name of the class first. “If I know it’s a
ConnectionCredentialsQuery, I don’t need to know it’s name, the use-case is evident!” Classes often get reused though, like aCartesianPoint. You may create several instances of them. Which of the name and type below are more indicative of use?Types are, to some extent, implementation detail. The name tells you what the variable is for, which is more important.
Another point: You will always need to name variables well, because after declaration, whenever you see a variable, you will only see its name. You want to be able to fully understand what you are looking at without having to mouse over or go back to the declaration of a variable.
Additionally, many typed languages will allow you to use a syntax to altogether avoid declaring the type of a variable if derived from somewhere else.
var result = a + b; var customer = new Customer();Given that the type can be inferred, and therefore specifying it explicitly is optional, why make it the first thing you see? That means you need to move your eye back and forth when looking for the names of things. Which of these two are better for legibility:
var result = a + b; CartesianCoordinate playerPosition;const result = a + b; let playerPosition: CartesianCoordinate;Finally, you say that types are more important because they are important to the compiler, but compilers don’t care about the order of these definitions. Compilers exist to allow us to write easier to read code. They exist to convert high level languages to low level byte code. They exist to enable more readable code.
Thank you for coming to my TED talk.
Counter argument - putting the type first makes it easier to see where it is declared. Which is more important than the name or the type
If you’re looking for declarations, some languages use
const,letorvarfollowed by the name of said variable. That’s a little easier to find than having a type name at the start, so I don’t think what you’re saying gives the other approach an advantage. The indentation is also more consistent with these keywords, which helps.I realise some languages (like Python) don’t use these sorts of keywords during declaration. For those languages it could indeed be a disadvantage.
What you’re saying is more consistent, but I don’t think it’s more readable
I’m fine with let or var…if the compiler is going to infer the type thats all well and good. But it’s a replacement for the type - why would you write both? It should be either or
And if the type is being inferred, the next thing I want to know is where it came from. That tells you the type and more, I don’t want to have to see a type name that may or may not be there