• my name (unregistered)

    it may be June but does it say this year?

  • Registered (unregistered)

    Nuke the code base reverse engineer specifications and rewrite by June!

  • (nodebb)

    In any case, I especially like that it doesn't return a value, but directly mutates the text box, ensuring minimal reusability of the function.

    Not minimum. It doesn't have to be a text box, just any object with a property called text.

    Addendum 2024-02-22 07:06: *minimal

  • TheCPUWizard (unregistered)

    "obj is defined as Object, but is in fact a TextBox" -- no it is something that inherits from obj [aka anything] that has a .Text string property (there may be another I did not see].. This means that other non-UI types could be passed. One can think of it as "implicit dependency injection" of a sort. By doing this stinge like Unit Tests can be built...

    NOTE: The above statements do not imply an endorsement of the practice, simply that such is true.

  • TheCPUWizard (unregistered)

    "obj is defined as Object, but is in fact a TextBox" -- no it is something that inherits from obj [aka anything] that has a .Text string property (there may be another I did not see].. This means that other non-UI types could be passed. One can think of it as "implicit dependency injection" of a sort. By doing this stinge like Unit Tests can be built...

    NOTE: The above statements do not imply an endorsement of the practice, simply that such is true.

  • Hanzito (unregistered)

    What's with the unholy indentation? I can only imagine that someone set tab width to 1 and then mixed tabs and spaces.

  • (nodebb) in reply to Hanzito

    More likely a procession of subsubsubcontractor types who didn't give a rat's arse about consistent indentation. Or maybe just indentation in general.

  • Mike5 (unregistered)

    What do you mean "Then we use a global calendar object to do absolutely nothing in our if statement." ?

    At first I thought that to, but since lEffTaxYear is never initialized, it might use goCalendar.effTaxYearByTaxYear(iMPTaxYear, lEffTaxYear) to initialize it by reference...

  • (nodebb)

    We want every bidder to bid lower than everyone else. ( paraphrasing Deep Purple / Made in Japan.)

  • Sauron (unregistered)

    Said consulting company then subcontracted the work out to the lowest bidder, who also subcontracted out to an even lower bidder.

    How come that companies/organisations lack the money to properly pay proper devs, but still find the money to pay an entire food chain of consultants, subcontractors and subsubcontractors? Are lowest bidders bidding that low?

  • (nodebb)

    It's cheaper subsubcontractors all the way to the bottom, which is in Hell.

  • (nodebb)

    one of the worst choices Microsoft ever made

    One of Remy's subtle attempts at sparking a debate and increasing traffic. I for one will not get drawn into it, especially since the "worst" is obvious.

  • Argle (unregistered)

    Ah, I wish that I had the deep pockets of those who can afford the cheapest bidder.

  • (nodebb)

    BASIC was my first programming language, back in the 70's. I still can't get over the fact that "modern" dialects repurposed DIM as the type declaration statement. It's short for "dimension", it's for specifying the dimensions of an array.

  • (nodebb)

    one of the worst choices Microsoft ever made

    To be fair, Microsoft was super clear from the start that VB.net is only meant to be a language for managers not developers. There was never feature parity between VB.net and C# for that reason, because as a developer you should not use VB.net.

    So they basically tried to isolate bad code from properly developed code on a language level, a trend they continued till today:

    • C# is the language on the .net framework for proper general purpose development.

    • F# is the language for highly functional purposes, like implementing complex mathematical problems efficiently.

    • VB.net was a language for non-developers, so you could expect obviously worst code quality and it enabled isolated code to exist until it was replace by proper implementations (or you know, always stay in the smelly corner).

    • J# was basically for Java developers what VB.net was for managers. Didn't take off, turns out the only thing more horrible than VB.net code from manager was what Java developers produced (which is no surprise, Java was an interpreted language after all, that's something completely different to a natively compiled language and obviously it resulted in an anti-pattern collection of awful).

    So yeah, I wouldn't call Microsoft's strategy for VB.net awful, it's a good idea to separate different groups of skill level by language. It actually allows for easier quality control because as soon as you see VB you know it's not some SOLID code that was designed following best practices, but something someone just throw against the wall and it kinda stuck.

    Addendum 2024-02-22 10:48: Small fun fact: If you ever wondered why Workflow Foundation was only available for VB.net, well, it's the same strategy. This feature was basically intended to give "tech-interested" managers an easy to use workflow engine which required no deep knowledge on one hand while on the other hand the limited reflection based puzzle design is not something a developer want to fall into.

  • Tim (unregistered)

    I'm not so sure about "...trying to pretend that VB6 could easily transition into VB .Net. " From my memory, MS were pretty straight about saying "it's basically C# using VB keywords"; I think the ideas of easy conversion from VB6 were more down to wishful thinking on behalf of the users.

  • markm (unregistered) in reply to Barry Margolin

    In the early forms of BASIC, array dimensions were the only variable declarations. (And all statements began with a reserved word for the type of statement, even assignment statements such as: "LET X = Y") The very first compiler, Dartmouth BASIC, was like the oldest FORTRAN dialects. Except for arrays, variables were defined just by using them, with the name giving the type: names beginning with I - N were integers and all others were floating.

    Then string variables were added to the language and distinguished by putting $ at the end of the name. It continued from there until Microsoft BASIC (in ROM with the tape cassette operating system on the early PC's), used a % suffix for integers, # for double-precision floating point, and ! for single precision (rarely used because single precision was the default). And you still could not pre-define any variables except arrays.

    When they finally decided to allow pre-defined scalar variables, they didn't want to create another reserved word. So they used the one that was already reserved for declarations: DIM.

  • (nodebb) in reply to Sauron

    Are lowest bidders bidding that low?

    It's not so much how low the bids are as who is doing the bidding.

    A Serious Company(tm) will, of course, only try to hire Serious Contractors. People with reputations, and security clearances, and reasonably high price tags. But, being idiots, they will still hire the Serious Contractor with the lowest bid.

    The Serious Contractor can't possibly do the job themselves, so they bring in an external contractor and offer them half the money to do all of the work. One whose reputation could easily be mistaken for a May Day parade and who is so far off-shore that they can legally be claimed as salvage under international law.

    Of course, they don't tell Serious Company(tm) about this because it would probably be illegal for them to even talk to the external contractor, but as long as nobody brings it up they can honestly say that nobody knew there was a problem.

    At this point, the external contractor realizes that they aren't able to do the work either, since they are just made up of one guy holding a telephone while sitting on a cardboard box, so they turn around and hire some high school students off of Two-er or Three-er (having been priced out of Four-er and up long ago). Technically these students are working for lower wages than prison labour, and reside in a country which is under economic sanctions which prevent Serious Company(tm) from even knowing that they exist, but as long as there are a few extra layers of indirection nobody has to know that for sure.

  • (author) in reply to Tim

    Microsoft also had a "conversion tool" that would let you feed it in a VB6 program and it would spit out a VB .Net program. Well, that's what it claimed, anyway. It mostly didn't work, but managers definitely believed it worked.

  • Duke of New York (unregistered) in reply to Hanzito
    Comment held for moderation.
  • TheCPUWizard (unregistered)

    @MaxiTB - "real" .NET developers use MSIL and https://www.nuget.org/packages/Microsoft.DotNet.ILCompiler

  • mihi (unregistered)
    Comment held for moderation.
  • (nodebb)

    So we need to realize that EffTaxYear is a long ... Are they that much confident in the longevity of their application that they need a long to represent their "effective tax" year? In comparison, the simple "tax year" variable is an int.

  • ichbinkeinroboter (unregistered)
    Comment held for moderation.
  • MaxiTB (unregistered) in reply to TheCPUWizard
    Comment held for moderation.
  • DanB (unregistered)
    Comment held for moderation.
  • Viz Travels (unregistered)
    Comment held for moderation.
  • BestBBWPorn (unregistered)

    https://bestbbwporn.com

  • Mr Tech (unregistered)
    Comment held for moderation.
  • (nodebb)

    I'm not too worried about the fact that they just blindly take the first record from the control table. It's very possible that the application design is such that there is only ever one record in the control table, which contains the current values of all the things that they need values for.

    I've worked with an ETL tool that does something similar, with a global parameter table that is populated on every run with a single row containing things like the current ETL process number.

Leave a comment on “The Default Path”

Log In or post as a guest

Replying to comment #:

« Return to Article