Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. Thankfully, This Employee Can't Harm Our Codebase Anymore

Thankfully, This Employee Can't Harm Our Codebase Anymore

Scheduled Pinned Locked Moved The Lounge
questioncomdata-structuresannouncement
17 Posts 13 Posters 2 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • A AspDotNetDev

    I was just going through an ex-coworker's code, and came across a function, "GetList", that goes through the files in a directory and returns a string. What is in the string, you ask? A friggin semicolon-separated list of file names. :| The code that calls that function then splits the string on semicolons and stores that to an array, which it then processes. I can only guess that my coworker wrote this before he felt comfortable working with collection data structures (and I'm guessing it was also upgraded from an older version of VB). Let's hope nobody puts a semicolon in their filenames. :doh: For your viewing pleasure, here is the function (with some things changed to protect the innocent):

    Private Function GetList(ByVal sDir As String) As String
    Dim oFile As System.IO.DirectoryInfo
    oFile = New IO.DirectoryInfo(sDir)
    Dim diar1 As IO.FileInfo() = oFile.GetFiles()
    Dim dra As IO.FileInfo
    Dim sFList As String
    Dim sName As String

    sFList = ""
    
    For Each dra In diar1
        sName = System.Convert.ToString(dra)
        If MeetsCriteria(sName) Then
            sFList = sFList & sName & ";"
        End If
    Next
    
    If Len(sFList) > 0 Then
        sFList = Microsoft.VisualBasic.Left(sFList, (Len(sFList) - 1))
    End If
    
    Return sFList
    

    End Function

    I particularly like the interesting use of System.Convert.ToString. :((

    Thou mewling ill-breeding pignut!

    Sander RosselS Offline
    Sander RosselS Offline
    Sander Rossel
    wrote on last edited by
    #7

    I was thinking this code wasn't THAT bad... Then I realized ; is a semi-colon and not |. Since | is not allowed in a filename on a windows machine that would've made some sense. I sometimes use semi-colons in filenames, actually always to replace the : which is also forbidden (I can only guess why). I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Now there will be some smartasses who will ask how you're going to put that in a Single or if a SingleString is something like a String that must be numeric and has a range from -3.402823e38 to 3.402823e38, but we can safely ignore these people :) Also change the semicolon to | in both the function and calling code. You have just made the code a whole lot better and safer for windows systems. Another idea, which is completely absurd and which you could never do because you can't change (or dare to change) working code and there is also no time to actually do this, but here it goes... Delete the function and write a new one that actually returns an IEnumerable(Of String). I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!? :rolleyes:

    It's an OO world.

    public class Naerling : Lazy<Person>{
    public void DoWork(){ throw new NotImplementedException(); }
    }

    J B P 3 Replies Last reply
    0
    • M M dHatter

      Visual Basic eeeewww thats bad enough.

      K Offline
      K Offline
      Konstardiy from Tbilisi
      wrote on last edited by
      #8

      +9000E9000 I totally agree.

      1 Reply Last reply
      0
      • Sander RosselS Sander Rossel

        I was thinking this code wasn't THAT bad... Then I realized ; is a semi-colon and not |. Since | is not allowed in a filename on a windows machine that would've made some sense. I sometimes use semi-colons in filenames, actually always to replace the : which is also forbidden (I can only guess why). I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Now there will be some smartasses who will ask how you're going to put that in a Single or if a SingleString is something like a String that must be numeric and has a range from -3.402823e38 to 3.402823e38, but we can safely ignore these people :) Also change the semicolon to | in both the function and calling code. You have just made the code a whole lot better and safer for windows systems. Another idea, which is completely absurd and which you could never do because you can't change (or dare to change) working code and there is also no time to actually do this, but here it goes... Delete the function and write a new one that actually returns an IEnumerable(Of String). I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!? :rolleyes:

        It's an OO world.

        public class Naerling : Lazy<Person>{
        public void DoWork(){ throw new NotImplementedException(); }
        }

        J Offline
        J Offline
        jsc42
        wrote on last edited by
        #9

        Naerling wrote:

        sometimes use semi-colons in filenames, actually always to replace the : which is also forbidden (I can only guess why).

        ':' is the separator between device and the file on the device. The device (in standard MS-DOS) can be 1 or 3 chars, most obviously in filenames like C:\AUTOEXEC.BAT, but also in filenames like NUL:*.* .

        1 Reply Last reply
        0
        • A AspDotNetDev

          I was just going through an ex-coworker's code, and came across a function, "GetList", that goes through the files in a directory and returns a string. What is in the string, you ask? A friggin semicolon-separated list of file names. :| The code that calls that function then splits the string on semicolons and stores that to an array, which it then processes. I can only guess that my coworker wrote this before he felt comfortable working with collection data structures (and I'm guessing it was also upgraded from an older version of VB). Let's hope nobody puts a semicolon in their filenames. :doh: For your viewing pleasure, here is the function (with some things changed to protect the innocent):

          Private Function GetList(ByVal sDir As String) As String
          Dim oFile As System.IO.DirectoryInfo
          oFile = New IO.DirectoryInfo(sDir)
          Dim diar1 As IO.FileInfo() = oFile.GetFiles()
          Dim dra As IO.FileInfo
          Dim sFList As String
          Dim sName As String

          sFList = ""
          
          For Each dra In diar1
              sName = System.Convert.ToString(dra)
              If MeetsCriteria(sName) Then
                  sFList = sFList & sName & ";"
              End If
          Next
          
          If Len(sFList) > 0 Then
              sFList = Microsoft.VisualBasic.Left(sFList, (Len(sFList) - 1))
          End If
          
          Return sFList
          

          End Function

          I particularly like the interesting use of System.Convert.ToString. :((

          Thou mewling ill-breeding pignut!

          D Offline
          D Offline
          Daryl Shockey
          wrote on last edited by
          #10

          I like the added touch of trimming the last semicolon with Microsoft.VisualBasic.Left(...). Apparently it didn't occur to them to just precede each name after the first with a semicolon. (If sFList.Length > 0 Then sFList = SFList & ";")

          1 Reply Last reply
          0
          • S Septimus Hedgehog

            Are you suggesting that the use of VB has self-harming potential built-in by default? ;) Something on the lines of Munchausen.Net?

            "I do not have to forgive my enemies, I have had them all shot." — Ramón Maria Narváez (1800-68).

            F Offline
            F Offline
            Fabio Franco
            wrote on last edited by
            #11

            PHS241 wrote:

            VB has self-harming potential built-in by default?

            I couldn't have put it better.

            To alcohol! The cause of, and solution to, all of life's problems - Homer Simpson ---- Our heads are round so our thoughts can change direction - Francis Picabia

            1 Reply Last reply
            0
            • A AspDotNetDev

              I was just going through an ex-coworker's code, and came across a function, "GetList", that goes through the files in a directory and returns a string. What is in the string, you ask? A friggin semicolon-separated list of file names. :| The code that calls that function then splits the string on semicolons and stores that to an array, which it then processes. I can only guess that my coworker wrote this before he felt comfortable working with collection data structures (and I'm guessing it was also upgraded from an older version of VB). Let's hope nobody puts a semicolon in their filenames. :doh: For your viewing pleasure, here is the function (with some things changed to protect the innocent):

              Private Function GetList(ByVal sDir As String) As String
              Dim oFile As System.IO.DirectoryInfo
              oFile = New IO.DirectoryInfo(sDir)
              Dim diar1 As IO.FileInfo() = oFile.GetFiles()
              Dim dra As IO.FileInfo
              Dim sFList As String
              Dim sName As String

              sFList = ""
              
              For Each dra In diar1
                  sName = System.Convert.ToString(dra)
                  If MeetsCriteria(sName) Then
                      sFList = sFList & sName & ";"
                  End If
              Next
              
              If Len(sFList) > 0 Then
                  sFList = Microsoft.VisualBasic.Left(sFList, (Len(sFList) - 1))
              End If
              
              Return sFList
              

              End Function

              I particularly like the interesting use of System.Convert.ToString. :((

              Thou mewling ill-breeding pignut!

              R Offline
              R Offline
              RafagaX
              wrote on last edited by
              #12

              It could have been worse, he migth have returned a thousand positions array of files just to get the name later. Also i understand him to some extent, because i have done similar things when i was younger and unexperienced (in PHP).

              CEO at: - Rafaga Systems - Para Facturas - Modern Components for the moment...

              1 Reply Last reply
              0
              • Sander RosselS Sander Rossel

                I was thinking this code wasn't THAT bad... Then I realized ; is a semi-colon and not |. Since | is not allowed in a filename on a windows machine that would've made some sense. I sometimes use semi-colons in filenames, actually always to replace the : which is also forbidden (I can only guess why). I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Now there will be some smartasses who will ask how you're going to put that in a Single or if a SingleString is something like a String that must be numeric and has a range from -3.402823e38 to 3.402823e38, but we can safely ignore these people :) Also change the semicolon to | in both the function and calling code. You have just made the code a whole lot better and safer for windows systems. Another idea, which is completely absurd and which you could never do because you can't change (or dare to change) working code and there is also no time to actually do this, but here it goes... Delete the function and write a new one that actually returns an IEnumerable(Of String). I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!? :rolleyes:

                It's an OO world.

                public class Naerling : Lazy<Person>{
                public void DoWork(){ throw new NotImplementedException(); }
                }

                B Offline
                B Offline
                Billy T
                wrote on last edited by
                #13

                > I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Then you'd have people laughing at your spelling...

                Sander RosselS 1 Reply Last reply
                0
                • B Billy T

                  > I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Then you'd have people laughing at your spelling...

                  Sander RosselS Offline
                  Sander RosselS Offline
                  Sander Rossel
                  wrote on last edited by
                  #14

                  Nothing wrong with my spelling :)

                  It's an OO world.

                  public class Naerling : Lazy<Person>{
                  public void DoWork(){ throw new NotImplementedException(); }
                  }

                  1 Reply Last reply
                  0
                  • A AspDotNetDev

                    I was just going through an ex-coworker's code, and came across a function, "GetList", that goes through the files in a directory and returns a string. What is in the string, you ask? A friggin semicolon-separated list of file names. :| The code that calls that function then splits the string on semicolons and stores that to an array, which it then processes. I can only guess that my coworker wrote this before he felt comfortable working with collection data structures (and I'm guessing it was also upgraded from an older version of VB). Let's hope nobody puts a semicolon in their filenames. :doh: For your viewing pleasure, here is the function (with some things changed to protect the innocent):

                    Private Function GetList(ByVal sDir As String) As String
                    Dim oFile As System.IO.DirectoryInfo
                    oFile = New IO.DirectoryInfo(sDir)
                    Dim diar1 As IO.FileInfo() = oFile.GetFiles()
                    Dim dra As IO.FileInfo
                    Dim sFList As String
                    Dim sName As String

                    sFList = ""
                    
                    For Each dra In diar1
                        sName = System.Convert.ToString(dra)
                        If MeetsCriteria(sName) Then
                            sFList = sFList & sName & ";"
                        End If
                    Next
                    
                    If Len(sFList) > 0 Then
                        sFList = Microsoft.VisualBasic.Left(sFList, (Len(sFList) - 1))
                    End If
                    
                    Return sFList
                    

                    End Function

                    I particularly like the interesting use of System.Convert.ToString. :((

                    Thou mewling ill-breeding pignut!

                    M Offline
                    M Offline
                    Mark Puddephat
                    wrote on last edited by
                    #15

                    That's what you get for using Microsoft, man. Try Linux for size... getList() {ls -1 2>/dev/null | paste -d\; -s -} myListOfFiles=$(getList) Failing that, let me introduce you to my friend who was eventually fired a decade ago because of the quality of his work. We are still living with the legacy of his bad code!

                    1 Reply Last reply
                    0
                    • Sander RosselS Sander Rossel

                      I was thinking this code wasn't THAT bad... Then I realized ; is a semi-colon and not |. Since | is not allowed in a filename on a windows machine that would've made some sense. I sometimes use semi-colons in filenames, actually always to replace the : which is also forbidden (I can only guess why). I would rename the function to GetFilenamesOfFilesInAFolderInASingleStringSeperatadBySemicolons. Now there will be some smartasses who will ask how you're going to put that in a Single or if a SingleString is something like a String that must be numeric and has a range from -3.402823e38 to 3.402823e38, but we can safely ignore these people :) Also change the semicolon to | in both the function and calling code. You have just made the code a whole lot better and safer for windows systems. Another idea, which is completely absurd and which you could never do because you can't change (or dare to change) working code and there is also no time to actually do this, but here it goes... Delete the function and write a new one that actually returns an IEnumerable(Of String). I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!? :rolleyes:

                      It's an OO world.

                      public class Naerling : Lazy<Person>{
                      public void DoWork(){ throw new NotImplementedException(); }
                      }

                      P Offline
                      P Offline
                      Paulo_JCG
                      wrote on last edited by
                      #16

                      Quote:

                      I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!?

                      <Obsolete("You MUST not use this routine any more. Use my BeautifullOne instead.", True)> does miracles ;P

                      Paulo Gomes Over and Out :D

                      Sander RosselS 1 Reply Last reply
                      0
                      • P Paulo_JCG

                        Quote:

                        I know it's dangerous, very risky. I would comment the original function so you can always go back in case your new function doesn't work. Don't trust on source control with this one, commenting is a lot safer! Also, you should discuss this with your manager. Of course you can't just go and change existing, working code around now, can you!?

                        <Obsolete("You MUST not use this routine any more. Use my BeautifullOne instead.", True)> does miracles ;P

                        Paulo Gomes Over and Out :D

                        Sander RosselS Offline
                        Sander RosselS Offline
                        Sander Rossel
                        wrote on last edited by
                        #17

                        [Obsolete("Don't use this application, it was written by morons!")]
                        static class Program
                        {
                        /// <summary>
                        /// The main entry point for the application.
                        /// </summary>
                        [STAThread]
                        static void Main()
                        {
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        Application.Run(new MainForm());
                        }
                        }

                        ;P

                        It's an OO world.

                        public class Naerling : Lazy<Person>{
                        public void DoWork(){ throw new NotImplementedException(); }
                        }

                        1 Reply Last reply
                        0
                        Reply
                        • Reply as topic
                        Log in to reply
                        • Oldest to Newest
                        • Newest to Oldest
                        • Most Votes


                        • Login

                        • Don't have an account? Register

                        • Login or register to search.
                        • First post
                          Last post
                        0
                        • Categories
                        • Recent
                        • Tags
                        • Popular
                        • World
                        • Users
                        • Groups