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.
NextStepExplorer – Platform motivates strategic planning for professional and personal growth.
official progressmovesforwardnow – Well-laid-out sections, intuitive flow, and pleasant readability
explore xavro – Smooth user experience, content is easy to digest, and pages are responsive
mavix marketplace – Responsive pages, text easy to follow and overall site experience pleasant.
explore now – Fast-loading pages, minimal clutter, information is presented clearly
cost-saving shopping portal – Prioritizes value, helping shoppers find affordable products.
explorefuturedirections – Inspiring content, learning about future directions feels engaging and useful today.
BrixelPortal – Smooth experience, clear design, and moving between pages was effortless.
product marketplace – Products are clearly displayed, and filtering helped me make quick choices.
Voryx Store – Layout neat, navigation intuitive, and overall experience was seamless.
Pelixo Access – Fast site, content easy to read and checkout steps straightforward.
Growth Through Choices – Offers clear guidance that supports logical decision-making.
NextGenOnlineBuying – Nice experience overall, navigation works smoothly and loads quickly everywhere.
Visit Ulvaro – Pages responsive, layout neat and shopping experience straightforward.
kavion buy – Discovered this store today, prices are reasonable and the checkout was smooth.
Kavion Path Central – Pages responsive, content clear and navigation simple for quick use.
StrategicSkillsNetwork – Focused on providing clear pathways for skill acquisition and forward-thinking learning.
commercialbondsolutions – Professional and safe, designed to help businesses manage bonds effectively.
ExploreQelaro – Clean layout and simple to move around without issues.
visit progressmoveswithfocus – Layout is straightforward and the content is easy to digest
Kavix Lane – Site loads without delay, interface clear and shopping steps easy.
useful link – Quick-loading pages, minimal distractions, first impression is very good
clyra site – Smooth interface with clean design and intuitive navigation
enterprise trust link – The focus on trust could reduce hesitation for new clients.
official brivox – Pages load without delay and the information is easy on the eyes
Yaveron Hub Shop – Pages responsive, content clear and buying process easy to follow.
brand store – Pages respond quickly, site feels secure, and placing orders is simple.
ProfessionalBondSolutions – Great platform overall, information is clear and genuinely helpful today.
Online Smart Buyer – Offers clear strategies for choosing the best products quickly.
My spouse and I stumbled over here from a different website and thought I might check things out. I like what I see so now i’m following you. Look forward to looking over your web page repeatedly.
Korivo Central Store – Smooth browsing, content clear and checkout steps easy to follow.
web shop – Fast site performance, organized sections, and browsing feels seamless.
Vixor Base – Organized site, content easy to digest, and moving between products seamless.
Mavero Lane Shop – Site works fine, content loads quickly and navigation intuitive.
Plivox Market – Browsing simple, content clear and checkout steps quick and intuitive.
EasyRixar – Layout organized, pages quick to open, and content felt useful overall.
navix portal – Pages responded quickly, ordering process was straightforward and reliable.
SolutionFocusHub – Highlights direct, useful approaches designed to achieve practical results.
businesssecuritylink – Well-presented, emphasizes safe and sustainable professional connections.
directionanchorsprogress info – Easy-to-read sections, smooth layout, and user experience is pleasant overall
main hub – Pages open quickly and the layout is simple to follow
Mivaro Link – Smooth browsing, design organized and finding product info was effortless.
enterprise collaboration site – Suggests a space for cross-border business alliances.
check plexin – Simple pages, structured content, and overall smooth experience
Xelivou Express Hub – Fast browsing, product info easy to read and shopping process smooth.
shopping platform – I received my items neatly packed and on time.
Zorivo Hub World Shop – Pages responsive, browsing fast and everything easy to locate.
zylavo store – Interface simple, content readable and product info trustworthy.
Strategic Options Hub – The guides opened my eyes to new growth paths I hadn’t thought about before.
DailyShoppingHub – Very user-friendly, navigating the site feels quick and hassle-free.