• This is just arguing about whether the surname goes before or after the given name.

    If you think int x makes the most sense, you might be Chinese. Or Hungarian. Or English speaking if you grew up with characters like Fireman Sam or Postman Pat… erm…

  • Hard disagree. Is that a joke? Type is far More important than name. Just ask the compiler.

    • 2 hours

      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 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;
      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

        • 19 minutes

          If that’s what you’re looking for, you can look for const, let or var followed by the name of said variable. The indentation is more even than with type names, and seeing the type makes it harder to find, not easier.

          I realise some languages don’t use these sorts of keywords, and that can make things harder.

    • 5 hours

      Maybe this comes from a non-typed language perspective… As someone who learned in Java, I do not like it because yeah, type is way more important. If someone was coming from Python, I can see why they might think this…

      • I only use python and I don’t understand why someone might think that. The order in python’s type hints is wrong too.

      • I learned C++ first, have been using python for the last decade almost daily for various one off tasks. I like python, but if I had to build something that will be used even hundred of thousand times, I wouldn’t do it in python.

        Anyway point being, despite me using for decades, I still yearn for C++.

      • 5 hours

        I learned Java first. I think type should come second as well, like in TypeScript et al.

        If you’re ever looking for the variable manually for some reason, by searching with your eyes, it’s easier to find it by searching in the first character column.

        Otherwise, if you ever need to see the type of something, which… should be obvious from the context in quality code, your LSP should just be able to tell you directly, by some mechanism (hover with mouse, or some keyboard action).

      • Script languages are quick and dirty (but slow), I hate it when they try to shoehorn every high level concept into them.

      • Maybe, but i speak English that follows adjective - noun pattern. So I’m already conditioned to type - name

        • 4 hours

          My language does that, as well as English in which I am fluent. I still find type-first to be impractical.

          Also when you write the code, you are usually looking to create a variable, so maybe you type “var” or “const”, right, then you have a contextual name in mind, maybe salary. Then you can make a decision, which type it should be. Maybe “whole dollars”? “Dollars in a decimal number”? Or it could be a complex type in other contexts.

          That’s how I prefer to write code. 👍

          Maybe it makes more sense to someone who knows more than one language as well, e.g. languages that use a noun-adjective structure, like French, or Farsi. I don’t know. But for me it’s not about language, it’s about practicality. Findability and writability, if those can be considered words, lol.

          • My main language is french, and yet i prefer the type-name order. Maybe its because i first learned C, but i guess its also because it goes from general to particular, whereas name-type feels like going backward (being detailed with name, then vague with type, then more detailed with value assignment). Anyway, i guess you’re right, it’s probably not a lot about language.

            • 3 hours

              Exactly, first language (spoken or programming) doesn’t seem to play a role. It’s more about the mental model. 👍

    • 5 hours

      a lot of modern languages explicitly disagree, eg Kotlin and Rust

      • I think that’s so type inference can work by just omitting the type, instead of having to use “var” or “auto” in front of the variable name

  • Was about to write a post asking what the beverage dispenser in the authors workspace provided.

    Then my brain snapped out of vacation mode and remembered that I mainly use var (mainly C# backend dev) which is effectively the same, and I’ve never had an issue with it.

    Now I’m left torn and confused, and in work mode on vacation… What a day, and it’s not even 08:30.