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.
ConsumerBuyingHub – Very practical advice for navigating online shopping successfully.
innovation strategies portal – Encourages trying new solutions rather than relying on old habits.
GlobalOnlineBuyingHub – Found this resource valuable, explanations are concise and easy enough.
safetraderhub – Marketplace feels safe and structured, encouraging buyers to make confident purchases.
ConnectWiseBiz – Smooth navigation, resources appear professional and credible.
ecopartners – Very clear, platform presents sustainable partnership guidance in an understandable way.
ActionPlanIdeas – Practical guidance that made taking action simple and straightforward.
easyretailportal – User-friendly platform, making daily purchases quick and convenient.
securebondguide – Well-organized content for navigating strategic bonds confidently.
enterprise link network – Clean design and structured content make finding networking opportunities easy.
intentional growth – Motivating guidance, makes planning growth feel structured and realistic.
InsightMarketPro – Easy-to-follow guidance, market strategies feel practical and approachable.
interactive e-commerce site – Browsing products is smooth, modern, and appealing.
Sustained Business Alliances – Clear insights that guide ongoing partnership development effectively.
business strategy insights – Encourages applying fresh strategic thinking to current challenges.
PlanSmartPortal – Focused on helping users organize their strategic goals in a structured way.
BizFrameworkInsights – Informative content, provides practical steps for enterprise planning.
ClickToPlanBetter – Provided clarity and actionable advice for planning effectively.
BondLearningCenter – Informative and practical, strategic bonds are explained in simple terms.
alliances knowledge base – Structured insights, helps make sense of market partnership dynamics.
StrategicBusinessAlliances – Solid website with practical tips I can apply immediately today.
click for growth alliances – Informative and motivating, explains partnership ideas with clarity.
Fresh Ideas Hub – Organized pages make exploring new opportunities simple and engaging
SmartDealsHub – Offers a platform for shoppers seeking the best value purchases.
BizLearningHub – Really clear insights that helped me apply new business strategies today.
purchaseportal – User-friendly and efficient, shopping online is fast and stress-free.
TopShopNow – Easy to use, clear product listings make shopping simple and fast.
shopassureclick – Strong focus on shopper confidence, appealing for cautious online buyers.
partnership development portal – Highlights ways to grow enterprises through strong alliances.
internationalretailinsights – Very clear, insights into global commerce are actionable and well-structured.
ClickRetailVision – Engaging content that makes retail strategy clear and actionable.
global bargains center – Easy-to-use interface and straightforward buying process simplify shopping.
Future Pathways Portal – Structured pages help users identify strategic moves and opportunities easily
informative site – Balanced content that keeps curiosity alive.
ImpactSignal – Offers steps that convert effort into meaningful outcomes efficiently.
CorporateCollabPortal – Focus on collaborative efforts enhances networking opportunities for professionals.
BetterDecisionsClick – Easy-to-use platform, makes decision-making faster and more reliable.
PremiumOnlineBuyingHub – Well organized content that supports smarter decisions and planning efforts.
Retail Commerce Hub – Provides detailed and timely information that keeps me informed about market shifts.
top resource – Well-organized sections, readable content, interface is smooth
business bonding insights – Helpful resources, building professional trust is simple.
CorporateInsightClick – Professional resources presented in a clear and reliable manner.
AllianceExpertHub – Informative and reliable, professional collaboration is easy to understand.
smart retail platform – Platform feels intuitive, catering to modern consumer needs.
relationshipinsights – Helpful and reliable, strategies for connecting with business peers are easy to apply.
GrowthPathStrategies – Actionable tips make digital expansion feel manageable and practical.
start exploring – Fast pages, smooth interface, content is easy to digest
worldwide business connections – Branding encourages connecting with diverse markets and global opportunities.
WorkplaceInsightClick – Very clear explanations that provided practical strategies for professional growth.
careerpathresources – Very intuitive, professional growth advice is clear and easy to implement.