I’m getting rather hacked off seeing boolean properties typed as strings. Stringly typed is a phrase I learnt off a post from the excellent Coding Horror blog and it describes a phenomena whereby properties that are of a specific type, e.g. Boolean, Date, int, are stored needlessly as strings.
I’m working on a website that communicates with a money laundering service to check whether an individual is “bad” or not. Individuals can pass the test, but importantly it is possible to pass the test with some warning flags raised. If any of the warning flags are raised then an email should be sent off to compliance for them to do…whatever it is they do. Fair enough right?
The warning flags are obviously booleans. There was either a warning raised or there wasn’t – there are no two ways about it (no pun intended). In the serialized response, the warning flags are encoded as “Yes” or “No”…which is understandable. Now, upon receiving the response, it is parsed and turned into an internal representation. This is where things get really weird. The programmer that coded the object that stores the response from the service has decided to encode the warnings as strings, initialised to “”. Which is totally fucking bonkers.
Why?
Well, now our boolean warnings aren’t really booleans – they have WAY more than two possible values and the meaning of these values is subjective. One may consider “”, null, “No” as false, but could conceivably also consider “false” or “0″. We get the same sort of problem with true – “Yes”, “1″, “true” and then we get a whole load of unknown values which is every other possible string in the world. Which might be considered to be true.
So how the hell can any number of programmers work on this piece of code without introducing errors because of differing definitions of truthy and falsey values? Well, they can’t. To illustrate the problem further, even loosely typed languages differ in their boolean coercion, for example JavaScript and PHP:
<script>
if("0") alert('Opposite day!');
</script>
<?php
if("0") echo 'Opposite day!';
?>
JavaScript considers “0″ true but PHP considers it false. Personally I think JavaScript is “right” here, but as I said before, it is totally subjective.
The icing on the cake is of course the extra code you have to write to check the truthy or falsey string values. Something along the lines of “if x is not null and not empty and not the word No then it is probably true…probably”, which would otherwise have been coded as “if x then true” if x was a boolean – which is orders of magnitude shorter.
Of course, there are some bat shit crazy strongly typed languages that allow you to assign null to a Boolean, but that is a different story altogether.
Shop Travel Trolley – Nicely organized pages that support simple travel prep.
shopping destination – Loved the selection and ordering was fast and effortless.
web layout marketplace – I enjoyed a smooth experience without any complicated steps.
FixItFactory Express – Intuitive navigation with clear product info makes browsing simple.
premium supply hub – Everything arrived fast and appears to be very solid.
Explore the thrilling world of online gaming where endless fun awaits. Bovada Cashout offers top poker and high-roller perks for all players. With Bovada enjoy amazing wins and secure reliable entertainment every day
Chic Checkout Home – I experienced a fast and clear checkout from cart to confirmation.
designer-inspired microbrands – Unique designs paired with sensible prices keep me impressed.
Chair Chase Deals – Browsing was seamless and moving through the site felt natural and pleasant.
I was skeptical, but after recently of providing liquidity, the clear transparency convinced me.
Trend Tally Showcase – The selection pops and browsing feels easy.
official buying hub – Organized layout and detailed product info simplified my purchase.
FontFoundry World – Intuitive categories and attractive previews make picking fonts enjoyable.
boutique home styling – Such tasteful pieces, I’m looking forward to another visit.
Explore Leash Lane – I appreciated how straightforward the navigation felt from start to finish.
efficient code resources – I’ll definitely come back to explore more snippets.
soothing spa outlet – Wide range of products and checkout was very easy.
Power Plug Shop premium collection – Found top-quality chargers and ordering was quick and easy.
Movie Vault classic catalog – The platform brings together iconic films in a user-friendly way.
FormulaFoundry Select Hub – Intuitive layout and helpful descriptions make finding items fast and easy.
digital shopfront – Top-quality fitness items and clear, concise delivery details.
Trip Tides Center – Easy-to-navigate and eye-catching travel suggestions.
Charge Charm Online Store – Looks promising and I’ll be coming back for a closer look.
creative mosaic marketplace – Diverse options and easy-to-use pages make visiting worthwhile.
Official Toast Trek – The layout was intuitive and information about items was easy to understand.
digital growth store – These tools are genuinely helpful and save a lot of time managing my business.
Present Parlor must-haves – Gift choices are fantastic and the packaging was neat and stylish.
Mystery Muse signature collection – Each piece is imaginative and encourages creative exploration.
FreightFriendly Central – Smooth navigation and informative product info make shopping enjoyable.
secure order link – Item tracking and price checking is easy and reliable.
Truvella Corner – Polished appearance and content that seems carefully crafted.
Momentum Mall online shop – Navigation is intuitive and products are easy to discover.
Mythic Mint curated collection – Each item feels thoughtfully crafted and visually striking.
prompt shipping boutique – Tracking was straightforward and the order arrived on time.
browse Print Press Shop – Prints look fantastic and checkout was effortless.
FunnelFoundry Online Hub – Well-laid-out pages with easy navigation make checking items simple.
Big Bass Bonanza strategy: aim for scatters They Big Bass Bonanza bonus buy unlock the real money-making feature.
click to browse – Clean, natural look and well-structured product pages made shopping simple.
Lunavique Store – Fresh visuals and a welcoming layout make exploring the site pleasant.
Myth Market premium collection – The shopping experience is smooth and the variety impressive.
Monarch Motive car parts online – Excellent products and friendly help keep me coming back.
browse Privacy Parlor – Practical tips and privacy-focused tools that are easy to follow.
mockup resources shop – High-quality templates and the download process was flawless.
browse Nautical Nook finds – Coastal-inspired design elements give the site a calm and cohesive feel.
check it out here – Prices feel right and the site loads fast across all sections.
Propeller Plaza essentials – Excellent propeller choices with quick and helpful customer support.
premium timber boutique – Fine craftsmanship and impressive quality make these products special.
Nearby Needs Store – Convenient layout with easy-to-use pages makes shopping stress-free.
Moss Mingle Online Store – Randomly discovered this site and I’m happy I explored it.
I personally find that fees are easy onboarding, and the execution is always smooth. The dashboard gives a complete view of my holdings.