Exceptional Descriptions

by in CodeSOD on

"The Colonial" was trawling through some code they inherited, and found this approach to doing exceptions in C#:

public enum ReturnCode : int
{
      Success                                         = 0,

        Enum1                     = 100,
  Enum2          = 110,

   // *snip* - LOTS of enums
     // .
    // .
   
    UnknownError               = 998,
      Exception                  = 999
};

Trimming Up Your Language

by in CodeSOD on

As a native English speaker, I've inherited a very chaotic perspective on language: "correct" language is defined by usage, loan words are less "loaned" and more like the mandolin someone lent me 20 years ago- mine now. New words can be ginned up on the fly, and parts of speech are just a suggestion.

Many other languages don't take this approach. French, for example, is defined by the Académie Française. There is a standard, and officially correct way to use French. In programming terms, we could say that French is C, while English is Perl.


Classic WTF: Wordy Invoice

by in Feature Articles on
It's a holiday weekend in the US, which means we dip back into the archives for a classic story. This one remembers the good old days, of greenbar paper and programs that can't handle large numbers because they don't have the memory for it. Original -- Remy

The daisy wheel stabbing at green-lined sheets could have been Satan’s fanfare, but Andy was long accustomed to tuning out ambient printer noise. It was 1982, and he spent most of his time before his Commodore PET 4032, churning out useful things in 6502 Assembly. Most of the code was for printing invoices, much like customer invoice currently printing and making all of that racket.

A sudden cloud formed over his desk. Once Andy clued in to the shadow overhead, he glanced up to find the new regional sales manager, Rick, accordion-folded printout in hand.


Not Really an Error'd Error'd

by in Error'd on

Scraping the bottom of the barrel this week, we accepted a couple of submissions that aren't, by any means, Errors. But they're undoubtedly amusing to the likes of those who haunt these pages, and as such, bon appetit.

Diner Dave A. wondered "I wasn't sure if you would really accept this as an Error'd, because it only *looks* like an error, which is why it caught my eye, but it isn't! So, on with the snark: You'd think there'd be Null chance that someone would name a restaurant like this, right? But NO! (Or as YAML would say, Norway!) This really exists -- I haven't been there yet but at the very least its website isn't Null. Maybe two Nulls are like a double negative, making it positively exist?" It doesn't look very filling.


A Big Ol' Log

by in CodeSOD on

We've already picked on bad logging code this week, but we haven't picked on PHP in awhile, so let's look at some bad PHP logging code, from Kris.

        $path = self::getPath();

        if (file_exists($path)) {
            $content = file_get_contents($path);
        } else {
            $content = "";
        }
        $content .= "\n" . date('Y-m-d H:i') . " | " . $message;
        file_put_contents($path, $content);

Truly Strung Out

by in CodeSOD on

Strings in C remain hard. They're complicated- they're complicated because of null termination, they're complicated because of memory management, they're complicated because of the behaviors of const. There's a lot going on in C strings.

But Alice had a simple case: convert a true or false value into the string "true" or "false". Let's see how her co-worker solved this:


Reopening the Log

by in CodeSOD on

The list of things never to write yourself contains some obvious stars: don't write your own date handling, your own encryption, your own authentication/authorization. It's not that no one should write these things, it's that these domains all are very complicated, require a great deal of specialized knowledge, and while easy to get almost correct, they're nearly impossible to get actually correct. If you embark on these tasks, it's because you want to create a product that solves these problems, hopefully not because you've got a terminal case of NIH syndrome.

While it's not as big a star on the list, another domain you probably shouldn't try and solve yourself is logging. Today's anonymous submission isn't the worst home-grown logging I can imagine, but it's got enough bad choices in it to merit some analysis.


An Operating Query

by in CodeSOD on

Sami inherited some C# LINQ code. The actual behavior and purpose of this code is fairly simple. The way the code was written, however, well…

foreach (var operatingMode in ahu.CalculationData.OperatingModes) { operatingModesModel.OperatingModeNames.Add
(operatingModeNumber, operatingMode.OperatingModeName); var 
innerOperatingModeNumber = operatingModeNumber; foreach (var 
property in from partData in operatingMode.PartDatas.Where(p 
=> p.PartGuid == partGuid) let finalOperatingModeNumber = 
innerOperatingModeNumber from property in (from resultProperty 
in this.GetProperties(partData).Where(p => 
FilterAcceptNonSoundAndNonImageProperties(p, updateResult.For
(partData)) && (propertyFilterFunction?.Invoke(partData, p) ?? 
true)).ToList() let measurementUnit = resultProperty.Type.
GetPresentationMeasurementUnit(measurementUnits) let 
measurementUnitTranslationId = measurementUnit?.TextId select 
new OperatingModesModel.OperatingModePropertyModel
(finalOperatingModeNumber, this.TranslationService.
GetTranslator(this.Language.Code).Translate(resultProperty.
Type.NameId), this.PrintoutUtil.GetValueString(resultProperty, 
measurementUnit, this.Language), string.IsNullOrEmpty
(measurementUnitTranslationId) ? "-" : this.TranslationService.
GetTranslator(this.Language.Code).Translate
(measurementUnitTranslationId), resultProperty.Key)) select 
property) { operatingModesModel.OperatingModeProperties.Add
(property); } operatingModeNumber++; }

Archives