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.
City Deals Platform – Well-organized items with clear and useful information
DealHub Online – Informative listings allow users to browse and compare deals easily
SmartOutcomes – Provides guidance to turn intentions into tangible results.
Centra Info Portal – User-friendly design simplifies discovering useful information
ClickToInnovate – Inspiring insights help users explore ideas and expand possibilities
Shop Click Hub – Layout adapts perfectly, making online shopping effortless
Trusted Picks Hub – Professional design, shopping is straightforward and secure for everyone
Simple Shopping Spot – Navigation feels effortless and items are easy to find
Online Learning Hub – Helpful content, learning processes feel smooth and practical
Fast Online Outlet – Easy to navigate, making the buying process simple and fast
Hot Bargains Online – Organized site layout makes deal-hunting simple and enjoyable
Metro Buy Now – Easy-to-use layout, locating products online is convenient and simple
Smart Trustix Hub – Simple layout, finding relevant financial information is quick and straightforward
useful unity resource – The content looks credible and well-written.
pathclick.click – Smooth browsing experience invites users to discover new directions online
Growth Explorer – Easy-to-use layout makes learning new skills and strategies enjoyable
BondAllied Access – Streamlined navigation keeps everything easy to reach
Growth Path Insights – Encouraging layout, makes exploring personal and professional growth easy for visitors
Натяжные потолки отлично сочетаются с современным светом и точечными светильниками в городе Москва полотно с микротекстурой выглядит современно и не перегружает интерьер; в процессе учитываются вентиляция дымоходы и особенности перекрытий https://potolki-decarat.ru/
Value Buying Hub – Well-organized listings help users locate deals quickly and easily
Smarter Living Hub – Supports good choices with a calm and clear tone
Quick Buy Hub – Pages load instantly, perfect for speedy online shopping sessions
BondFirm Resources – Professional appearance and intuitive design make browsing easy
Reliable Alliance Platform – Organized layout, guides users through business partnerships smoothly
Bond Prime Portal – Organized design allows visitors to locate details easily
International Deals Online – Large variety, ensures users can find exactly what they need globally
Urban Picks – Clean design, makes online shopping straightforward and simple
Future Deals Hub – Smooth layout, exploring items and deals online is quick and stress-free
Daily Finds Marketplace – Clean interface, navigating products is effortless and enjoyable
Shopping Depot Click – Product guidance is clear, site feels logical and simple
Team Collaboration Network – User-friendly layout, enables professionals to share ideas and collaborate effectively
Value Deals Store – Intuitive navigation and helpful hints make browsing stress-free
Bond Investment Center – Organized content, understanding financial products and opportunities is easy and accessible
BondStrength Insights – Strong structure that keeps information clear and usable
ClickSource Insights – Engaging design motivates visitors to create and explore
Guided Opportunities Hub – Well-organized pages help visitors find actionable paths quickly
Digital Commerce Solutions – Clear and intuitive design, browsing is stress-free and straightforward
DealFinder Online – Organized deals and clean interface support fast, efficient shopping
check this website – Moving through the pages was easy thanks to fast speeds and minimal clutter.
Urban Shop Hub – Simple interface, makes finding items quick and hassle-free today
NewPathFinder – Helps explore fresh opportunities and find new ways to progress online.
Helpful Buy Hub – Smooth navigation and useful tips enhance overall usability
Shopping Helper Online – Everything feels structured for easy side-by-side checks
StyleScout Shop – User-friendly interface and organized sections make shopping easy
Bond Navigator – Sleek design, browsing content is straightforward and efficient for all users
Long-Term Success Network – Intuitive pages, guides users in creating and maintaining trustworthy business relationships
Verified Purchase Store – Clean interface, shopping and payment feel trustworthy overall
Step Forward Ideas – Inspiring pages guide readers to small yet impactful changes
Simple Deals Online – Effortless layout makes discovering and buying items easy for all visitors
BondCoreX Network – Content provides confidence and clarity for users exploring opportunities