• @[email protected]
    link
    fedilink
    12
    edit-2
    10 months ago

    Except i right? Something like counter or index seems unconventional and unnecessarily verbose

    • @[email protected]
      link
      fedilink
      710 months ago

      Yeah, but it’s easy to overuse it. If your for loop is much longer. For a few lines I’d agree, don’t bother using something longer.

      Code should scream out it’s intent for the reader to see. It’s why you are doing something that needs to be communicated, not what you are doing. “i”, “counter” or “index” all scream out what you are doing, not why. This is more important than the name being short (but for equal explanations of intent, go with the shorter name). The for loop does that already.

      If you can’t do that, be more precise. At the least make it “cardIndex”, or “searchIndex”. It makes it easier to connect the dots.

    • @hellishharlot
      link
      510 months ago

      Index can be useful but start looking for mapping and sorting functions. Or foreach. If you really must index, sure go use index or I if it’s conventionally understood. But reading something like for I in e where p == r.status is really taxing to make sense of

      • @[email protected]
        link
        fedilink
        2
        edit-2
        10 months ago

        Oh yeah, I map, filter and reduce pretty much everywhere I can. But sometimes you need the index and i is so commonly understood to be that, I’d say it could even be less legible to deviate from that convention

        • @hellishharlot
          link
          2
          edit-2
          10 months ago

          In what world is

          for (int index = 0; index < objectToIterate; index++)
          {
              // DO YO THANG
          }
          

          less coherent than

          for (int i; i < objectToIterate; i++)
          {
              // DO YO THANG
          }
          
            • @hellishharlot
              link
              110 months ago

              What’s incoherent about the first one? Why is index bad beyond standards

              • @[email protected]
                link
                fedilink
                110 months ago

                It’s not incoherent, it just takes a tiny bit more effort to mentally parse as it’s not a stereotypical for loop. Maybe it’s just me, but let me try and explain

                With the i example if you’re familiar enough with a language, your brain will gloss over the unimportant syntax, you go straight to the comparison and then whether it’s incrementing or decrementing.

                With the other example, the first my brain did was notice it’s not following convention, which then pushes me to read the line carefully as there is probably a reason it doesn’t.

                I’m not saying it’s a huge difference or anything, but following code conventions like this makes things like code reviews much easier cumulatively.

      • @[email protected]
        link
        fedilink
        210 months ago

        Honest question: is there a mapping function that handles the case where you need to loop through an iterable, and conditionally reference an item one or two steps ahead in the iterable?

        • @[email protected]
          link
          fedilink
          210 months ago

          In js there’s reduce. Something like

          arr.reduce((result, currentValue, currentIndex, original) => {
          if(currentIndex < original.length - 2
              && original[currentIndendex + 2] % 2 === 0 ) {
              result.push(currentValue / 2) 
          } else { 
              result.push(currentValue);
          }
          return result;
          }, []) 
          

          This would map arr and return halved values for elements for which the element two steps ahead is even. This should be available in languages where map is present. And sorry for possible typos, writing this on mobile.

        • @hellishharlot
          link
          210 months ago

          Not that I’m aware of but that’s a condition where you’re thinking with an index. What’s the difference you’re looking for?

          • @[email protected]
            link
            fedilink
            110 months ago

            Something like parsing a string that could have command codes in it of varying length. So I guess the difference is, is this a 1-, 2-, or 3-character code?

            I have something like this in a barcode generator and I keep trying to find a way to make it more elegant, but I keep coming back to index and offset as the simplest and most understandable approach.

            • @hellishharlot
              link
              110 months ago

              So you could generate lists of 1, 2, and 3 character code items rather than looking at index +1 or something.

        • xigoi
          link
          fedilink
          2
          edit-2
          10 months ago

          In Haskell, you could do something like map (\(thisItem, nextItem) -> …) (zip list (tail list))

    • UnfortunateShort
      link
      fedilink
      410 months ago

      I’d say except indices in general. Just bloats every line where you need to use them. Imagine writing CUDA C++ where you regularly add and multiply stuff and every number is referenced via (usually) 1-3 indices. Horrible.