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.
Xeviro Zone – Navigation clear, content easy to read, and buying process works without issues.
Digital core portal – Professional appearance, fast page response, and content is easy to follow.
Testimonials – Feedback is showcased neatly, adding trust and credibility.
zylavo holdings resource – Fast navigation and professional design help users find content easily.
VexaroUnity Website – Concept is solid, messaging communicates values clearly without overpromises.
Partners – Partner details are displayed logically and easy to navigate.
Testimonials – Feedback is displayed clearly, helping visitors trust the content.
Events – Event information is clearly structured, pages load fast, and content is easy to follow.
capital project homepage – Well-structured layout ensures that information is accessible quickly.
Official hub – Smooth design, organized pages, and information is easy to digest.
TopDealsCenter – Easy-to-use platform, finding deals online is simple and stress-free.
xelivo trust group platform – Clean structure helps make browsing straightforward.
enterprise collaboration site – Clear structure supports understanding of partnership frameworks.
check xenvo – Well-organized sections, smooth navigation, very straightforward
trust group platform – Clear layout, smooth browsing, and organized content make navigation effortless.
Official bond site – Navigation is straightforward, speed is solid, and details are well presented.
Support – Quick-access guides and helpful resources are displayed clearly for visitors.
Visit Kryvox Line – Pages are organized, browsing feels natural, and details are simple to access.
visit vexla – Pleasant experience with well-presented content and fast site performance
VexaroUnity Site – Interesting approach, site conveys ideas clearly without making unrealistic claims.
Updates – Latest news and updates are presented in a clear, readable format.
Holdings site access – The layout feels intuitive, guiding you through the offerings.
zaviro group platform – Consistent branding and helpful content enhance credibility and user experience.
Events – Event details are presented clearly, making schedules easy to follow.
Visit Morixoline – Simple layout, user-friendly interface, and content is presented clearly.
Downloads – Clear structure, simple menus, and files are easy to find and read.
main brixel bond page – Clear structure and organized content provide a satisfying and informative browsing experience.
rixon page – Clean structure, intuitive flow, and text is easy to follow
this bonding website – Fast loading makes the site feel well maintained.
explore here – Fast response times, clear layout, initial impression feels professional
SmartCartHub – Fast and clear, buying products online is safe and convenient.
Official Kavion site – Feels stable overall, with structured pages and readable content.
Gallery – Images are arranged in a clear and visually appealing format.
idea growth center – Learning here feels engaging and useful rather than abstract.
zaviro trustline network – Navigation feels natural, and the website is easy to use overall.
Official Morixo Trust site – Neat design, responsive menus, and information is simple to locate.
Features – Key information is highlighted and structured logically for easy understanding.
review brixel core – Pages load quickly, moving between sections is effortless, and information seems credible.
Portfolio – Visuals are displayed cleanly, ensuring visitors can explore content easily.
Tutorials – Simple navigation, clear layout, and guides are concise and readable.
Trust site access – The explanations feel clear and the content flows naturally.
xeviro capital link – Pages are arranged in a way that simplifies research.
kavlo hub – Fresh interface that makes moving around the site easy
explore now – Smooth navigation, minimal distractions, great for casual browsing
News – Updates are presented clearly, making it simple to keep up with new content.
Corporate site – Clean interface, smooth navigation, and details are easy to read.
this line website – Simple navigation, polished layout, and informative pages make it research-friendly.
learn about zexaro bonding – Content is easy to read, and the fast-loading pages enhance credibility.
kavioncore.bond – Nice experience, everything loads quickly and information is concise and understandable.
SafePurchaseCenter – Fast and dependable, checkout process is smooth and secure.