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.
SecureBizConnect – Easy to use, corporate networking advice seems trustworthy and relevant.
Strategic Alliance Hub – Offers actionable strategies to enhance collaboration across businesses.
sonabet.pro
company collaboration portal – Seems oriented toward improving communication and collaboration between enterprises.
online shop network – Clean visuals and layout improve overall usability.
online portal – Fast-loading layout, readable pages, overall browsing is pleasant
networkinsight – Offers an organized perspective on developing business connections.
tavro page – Fast-loading site with clear sections and simple navigation
fresh business perspectives – Encourages exploring market ideas from different angles for growth potential.
vyrxo platform – Simple navigation, readable pages, and pleasant overall browsing
framework builder – Very clear explanations, helps apply strategies effectively.
bizconnectionstrategies – Very actionable, long-term business relationships are easy to understand and maintain.
DigitalSmartBuy – Encourages users to approach online purchases thoughtfully and efficiently.
signal turns action web – Well-thought-out layout, makes reading enjoyable and intuitive
FindSmarterBusinessMoves – Found this resource valuable, explanations are concise and easy enough.
strategic alliance portal – Inspiring insights, helps navigate complex global partnerships.
SavvyBuyHub – Encourages smart spending with high-value shopping choices.
handy page – Fast-loading pages, minimal clutter, information is straightforward
GlobalRelationshipGuide – Professional and practical, forming international connections is straightforward.
Fresh Growth Ideas – Reading this makes me want to experiment more in my work routine.
budget-friendly shopping portal – Focused on value, likely helpful for finding cost-effective deals.
greenalliancescenter – Structured guidance for forming environmentally friendly business alliances.
reliable purchase hub – The platform handles checkout in a calm and reassuring way.
fast e-commerce spot – Feels designed for customers who value quick and uncomplicated transactions.
DecisionInsightHub – Guides professionals toward clear, actionable solutions when facing business complexity.
zylor source – Crisp design, clear headings, and browsing is straightforward
LearnFutureFocusedSkills – Solid website with practical tips I can apply immediately today.
focusamplifiesgrowth spot – User-focused design, content is accessible, and navigation is smooth
SafeBuyHere – Everything works perfectly, payment process is worry-free.
thinking strategy portal – Content is approachable, encourages learning and critical reflection.
online access – Fast browsing, clean layout, content is easy to find and understand
visit korixo – Smooth exploration experience with clear structure throughout
basic ecommerce hub – Streamlined and effective, makes online selling easy for small businesses.
globalpartnershipinfrastructure – Very detailed, global partnership infrastructure is explained clearly and practically here.
Collaboration Insights Hub – Clear content that makes understanding partnership strategies easy.
StrategyToolkitPro – Helpful and well-laid-out, planning strategies is straightforward.
careeracceleratorhub – Organized advice and tools for improving career outcomes efficiently.
BondKnowledgeBase – Made understanding commercial bonds much more approachable.
SafeCheckoutHub – Security measures highlighted, creating a trustworthy ecommerce environment.
long-term enterprise guide – Focuses on mapping strategies that ensure business resilience over time.
smart retail space – Clear sections make finding items convenient and stress-free.
visit axivo – Well-organized pages, content is accessible and straightforward
growthflowswithclarity – Quick read but very insightful, design is simple and effective
resource page – Lightweight and organized, content feels well-structured
thrifty shopping hub – Value-oriented design, could help users find smart purchase options.
Professional Bonding Center – Provides actionable guidance to improve corporate networking and collaboration.
store page – Nice experience overall, with smooth payment and helpful shipping updates.
mexto hub – Clear presentation, content is easy to locate and read
DealWizard – Gave me clarity on all my options in no time.
shopping site – Smooth browsing, and product presentation is trustworthy.