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.
SuccessFocus – Easy-to-follow layout and motivating guidance support users in reaching targets.
move with intention – Friendly, natural language illustrating how deliberate focus energizes results.
velocity driver – Encouraging concept, proper direction drives velocity forward in every project.
Forward Flow – Organized content allows visitors to follow ideas logically.
focused rhythm – Insightful phrasing, maintaining focus creates a rhythm that defines momentum.
momentum spark – Clear, motivating phrasing, action generates energy that propels forward momentum.
Action Flow – Clean design with concise advice helps visitors understand and apply ideas efficiently.
Pathway Insights – Organized layout helps visitors understand ideas quickly.
SimpleCart – Everyday shopping made easier, faster, and more comfortable.
speedybutcalm – Helpful idea, staying relaxed and thinking less helps you move with precision and pace.
DreamRidgeTreasures – Fun, friendly design and products presented in a straightforward way.
move ahead with focus – Natural, encouraging tone that makes consistent progress feel easy.
signal motion insight – Clear wording makes this easy to follow.
energy in ideas – Encouraging thought, released ideas energize progress and make tasks more achievable.
ActionStrategy – Clear navigation paired with professional, action-focused guidance.
SkillBoost – Helps users advance knowledge efficiently and achieve results faster.
forward power unlocked – Clear, motivating phrasing illustrating that freed energy drives success.
Clarity Hub – Engaging layout and interactive design make learning new ideas enjoyable.
clarified growth – Encouraging phrasing, clarified plans help growth move forward naturally.
power channels – Clear and actionable, directing energy efficiently creates steady progress.
Step Forward – Clean design with actionable tips ensures visitors can move from concepts to results easily.
ThinkAhead – Inspires smarter choices while navigating daily shopping with ease.
>valuebuyshop – Great option, saving money is simple when deals are clear and accessible.
ideas take shape – Natural, encouraging language demonstrating the benefits of orderly thinking.
clarity alignment – Helpful message, alignment through clarity ensures progress is steady and predictable.
clarity leads the way – Concise and encouraging, showing that understanding simplifies advancement.
task energy guide – Practical and motivating, directing focus strengthens the quality of execution.
priority setter – Strong concept, taking small steps naturally clarifies what matters most.
ReliableCart – Secure platform for fast, trustworthy online purchases.
uncovernewpaths – Helpful note, uncovering new paths helps explore options you might not notice otherwise.
inspired plans – Motivating insight, inspired ideas drive forward progress naturally.
attention shapes outcomes – Practical wording connecting mindfulness and effective growth.
clarity in action – Natural tone, clarity helps simplify decision-making for smooth results.
clarity opens doors – Motivating phrasing, clear thinking opens doors and simplifies the path ahead.
strategy meets action – Encouraging wording that makes strategic thinking feel practical and achievable.
ProgressNavigator – Offers a clear path for achieving daily and long-term growth.
modernbuycenter – Strong design, shopping is clear, fast, and hassle-free for all users.
SmartCartHub – Browse and buy securely, giving you confidence in every purchase.
mindful ideas – Concise idea, being deliberate helps ideas develop clearly and logically.
organized growth – Simple message, aligning strategy and focus ensures growth moves cleanly every time.
focus shapes growth – Short and effective, highlighting the power of intentional direction.
clarity catalyst – Motivating point, clear understanding acts as a catalyst for forward movement.
navigate with signals – Concise and encouraging, emphasizing that small cues lead to effective decision-making.
velocity unleashed – Friendly and clear, performing actions releases energy that sustains forward movement.
EasyBuyNow – Your go-to place for stress-free, quick shopping.
discoverpathsnow – Strong suggestion, finding the right paths leads to smoother and more satisfying shopping.
progress engine – Strong concept, continuous progress acts as an engine for momentum over time.
progress starts with ideas – Smooth, natural language emphasizing the value of inspiration.
clarity in motion – Practical idea, clarity through direction ensures motion is consistent and purposeful.
strategic ideas flow – Clear and motivating, shows how a thoughtful approach makes ideas move effortlessly.