Skip to content
DevMeme
5058 of 7435
The Gospel of Simple Names Lost in Translation
CodeQuality Post #5537, on Sep 29, 2023 in TG

The Gospel of Simple Names Lost in Translation

Why is this CodeQuality meme funny?

Level 1: Just Call Her Cousin

Imagine you have a cousin named Emily. Normally, you might just call her “my cousin Emily”. Now picture if every time you talked about her, you had to say, “Emily is the daughter of my mom’s sister and she’s younger than me” instead of just saying cousin. That’s a ridiculously long way to say something simple, right? It would make people laugh because nobody talks like that in everyday life – we’d just say “cousin.”

This meme is joking about the same idea, but with a name in computer code. The first part shows an old wise man telling everyone, “Use short and simple names.” That’s like a teacher saying “keep it simple.” But then a big group of people end up making a really overcomplicated name anyway – as if everyone added a little extra detail to it. In the final part, the name they come up with is so hugely long it stretches across the whole picture! It’s describing a cousin with a ton of detail (basically saying “younger cousin from my mom’s or dad’s side”) all in one go. The joke is that the group completely ignored the wise man’s advice about simple names. It’s funny (and a little silly) because it’s like calling your cousin by a whole family tree description instead of just calling her cousin. The lesson? Sometimes we make things more complicated than they need to be – and it ends up looking pretty absurd!

Level 2: Naming Things is Hard

This meme is all about naming conventions in programming, shown through a funny cartoon with religious imagery. Let’s unpack it in simpler terms. In software development (and especially in Apple’s Swift language), we often talk about writing “clean code.” One big part of clean code is how we name variables, constants, and functions. Good names should describe what something is or does, but without being too long or confusing. Typically, new programmers are taught: “Use clear names, but keep them reasonably short.” For example, instead of naming a variable x (which is too vague) or thisIsTheCounterForTheNumberOfItemsInTheCart (which might be overkill), you’d use something like itemCount. It’s all about balance.

In the meme’s first panel, the white-bearded elder saying “Do good simple names” represents that classic advice: make your code labels simple and good. This elder and his robed companions resemble a council handing down a rule or best practice (almost like a coding gospel). The funny twist comes as more members of the council appear. Each new cartoon figure has less to say (their speech bubbles shrink to just “...”), implying maybe they all agree – or each is adding just a small thought. But by the final image, their collective input has produced an enormous speech bubble containing a single gigantic name: CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter. This is an actual constant from Apple’s Contacts framework in Swift used to label a relationship in a contact card. Why is it so long? Because it’s specifying a very specific relationship: a younger cousin on your mother’s side (mother’s sibling’s daughter) or on your father’s side (father’s sister’s daughter). In simpler family terms, that basically means “your younger female cousin (whether through an aunt on mom’s side or an aunt on dad’s side).”

Let’s break down that name:

  • CNLabelContactRelation – the prefix CN likely stands for “Contacts” (a common prefix in Apple’s Contacts framework). “LabelContactRelation” suggests this is a label used for a contact’s relation.
  • YoungerCousin – indicates the person is a younger cousin. In some cultures, people distinguish between cousins who are younger versus older than them.
  • MothersSiblingsDaughter – specifies the daughter of your mother’s sibling. That’s a verbose way to say “cousin through your mom’s side of the family.”
  • OrFathersSistersDaughter – adds or father’s sister’s daughter, which is a cousin through your dad’s side (specifically via a paternal aunt).

All together, this constant name spells out an exact definition of the cousin’s relation. Apple included lots of these specific relationship constants in its Contacts API so apps can tag a contact’s relationship very precisely (for example, distinguishing an older brother from a younger brother, or maternal vs. paternal relatives). It’s a thorough approach, but it leads to super long names like this one. A junior developer looking at Apple’s documentation might be surprised (and amused) to find such a mouthful of a name. It feels almost like a joke, because we rarely ever see a variable or constant name that reads like an entire sentence!

The humor here also comes from the disconnect between principle and practice. The principle: keep names simple. The practice (in this case): a name that is anything but simple. Apple is a company known for careful design, yet here is one of their Swift API constants breaking the usual naming guidelines. In programming, “naming things is hard” is a common saying. This meme takes that saying to the extreme. You can imagine a beginner asking, “Is it okay to have a variable name that long?” Normally, the answer is no – it’s typically discouraged because it’s hard to read and work with. But here is an example straight from a major Apple API that does it anyway for the sake of absolute clarity.

For a newer developer, it’s useful to know why this happened: Apple’s API designers weren’t trying to be funny – they were trying to be precise. In a contacts app, when you label someone as your cousin, some regions of the world have more nuanced labels. Apple wanted developers to have an official constant for “younger cousin (female) on mother’s or father’s side” for completeness. Instead of making up a shorter code or using abbreviations, they wrote out the whole description in the constant’s name. It’s very explicit! Naming conventions in Swift (and previously in Objective-C) do encourage descriptiveness, but usually, you’d find a shorter way. This one is an outlier that has become a bit infamous in the Swift community. It shows that even with guidelines, sometimes real-world requirements (like covering all family relationship types) produce some awkward results in code. And that contrast – between the ideal (short names) and reality (this monster name) – is exactly what makes the meme humorous for programmers.

Level 3: Naming by Committee

In the top panel of this meme, a wise, haloed elder (let’s call him the Clean Code Cardinal) proclaims the sacred rule: “Do good simple names.” This echoes a core Clean Code principle – choose clear, concise identifiers for better CodeQuality. But as more robed figures (think of them as the Apple API design team or a naming committee) join the discussion in each subsequent panel, the wisdom gets diluted. By the final frame, the once-simple commandment has morphed into a ridiculously verbose Swift constant: CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter. The speech bubble containing this name spans the entire sky of the comic, humorously illustrating naming conventions gone haywire.

This absurdly long identifier is pulled straight from Apple’s Contacts framework in Swift. To break it down: it’s a label (hence CNLabelContactRelation) intended to specify a very specific familial relationship – essentially “younger cousin (mother’s sibling’s daughter or father’s sister’s daughter)”. Apple’s Swift API naming style tends to be very explicit, often favoring clarity over brevity. In frameworks like Contacts, Apple provides predefined constants for relationship labels (mother, father, friend, etc.). Here, they went to extremes to accommodate very precise kinship terms. It’s the result of what feels like naming by committee: every stakeholder tacked on a qualifier to make the label unambiguous, until it became a behemoth. The meme exaggerates the process: each robed authority adds a bit more to the name (likely saying “...and include this detail too!”), until the final label violates the very commandment they started with.

Why is this funny to developers? It’s highlighting a real-world example where the ideal of simple, clean naming clashes with practical API design in a large organization. Apple, known for strict guidelines and polish, surprisingly has an API constant so long it wraps like an ancient scroll. Seasoned devs recognize this as a classic “do as I say, not as I do” scenario. It pokes fun at the fact that even top-tier companies sometimes break the rules of good naming. There’s a famous saying in programming: “There are only two hard things in Computer Science: cache invalidation and naming things.” This Swift constant is a poster child for the latter. It reads like a family genealogy description shoved into a single identifier. Seeing such a verbose name in code is comically jarring – it’s like the Apple API engineers forgot to heed their own advice about brevity.

From a senior developer’s perspective, there’s also an appreciation of why this happened. Apple supports many locales and cultures, and in some languages or contexts, the distinction between maternal vs paternal cousins or older vs younger might be important. Apple’s ecosystem often emphasizes clarity and localization, so they likely generated exhaustive labels for relationships to avoid ambiguity. However, exposing these raw, concatenated labels in Swift leads to monstrosities like this one. It’s a bit of an API design fail that we can all chuckle at. We know that large teams or committees can over-engineer naming: design-by-committee often produces over-complicated solutions. Here, the committee ensured every possible detail is spelled out in the name – technically correct but practically overkill. The humor lies in the universality of this experience: every developer has seen well-intentioned naming guidelines snowball into something unmanageable. Apple’s ultra-verbose constant exemplifies that even the mighty can overdo it, turning a simple concept (“younger cousin”) into a tongue-twister that no one wants to type out.

To visualize how unwieldy this is, imagine encountering it in code:

// Using Apple's official Contacts constant for a specific cousin relationship
let relationLabel = CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter

if contact.relationship == relationLabel {
    print("This contact is my younger cousin (on mom's or dad's side).")
}

Just seeing CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter in a code editor is enough to make a developer do a double-take (and maybe giggle or groan). It’s so long that auto-complete is practically required – nobody wants to type that out character by character! The Swift bird logo in the meme’s corner cements that we’re talking about Swift code. Swift normally encourages readable APIs, but here it feels like the naming flew off the rails. The meme cleverly contrasts the clean code principle (“good simple names”) with the messy reality of real-world Apple API design. Every experienced coder nods knowingly at this: we strive for elegance, yet end up maintaining something hilariously convoluted like this constant. In short, the meme gets its punch by showing how a pure ideal (short, simple names) can get overwhelmed by real-life requirements and a few too many cooks in the kitchen.

Description

A five-panel comic strip in the 'Telephone Game' or 'Whisper Down the Lane' format, where a message is passed down a long line of clerical and religious figures. In the first panel, a divine, god-like figure whispers the simple instruction, 'Do good simple names,' to a disciple. The message is then passed along the chain in the subsequent panels. By the time it reaches the final person in the last panel, the original message has been corrupted into an absurdly long and specific variable name: 'CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter'. The Swift programming language logo is prominently displayed next to this monstrosity. The comic humorously satirizes how good intentions in software development, like creating clear naming conventions, can lead to overly verbose and unreadable code, a critique often leveled at Apple's older Objective-C and some modern Swift APIs

Comments

12
Anonymous ★ Top Pick This is what happens when the product manager says the code should be 'self-documenting' and the principal engineer is a novelist paid by the character
  1. Anonymous ★ Top Pick

    This is what happens when the product manager says the code should be 'self-documenting' and the principal engineer is a novelist paid by the character

  2. Anonymous

    Apple took “self-documenting code” so seriously that CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter now needs a horizontal scrollbar - and my linter’s telling me the identifier is fine but my lineage is deprecated

  3. Anonymous

    After 20 years in the industry, I've learned that the real miracle isn't walking on water - it's getting a PR approved when you refactor CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter to just 'cousin' and watching the junior devs panic about 'loss of semantic clarity.'

  4. Anonymous

    When Apple's API designers took 'be explicit' to biblical proportions - turns out the divine guidance for 'good simple names' got lost in translation somewhere between Objective-C bridging and Swift's type safety requirements. CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter is what happens when your enum cases need to cover every possible family tree edge case while maintaining backwards compatibility with a framework that predates Swift itself. At least it's self-documenting... if you have time to read the entire Old Testament of class names

  5. Anonymous

    From divine 'do good names' to committee-canonized verbosity: the style guide equivalent of scope creep in scripture

  6. Anonymous

    Swift API review: “prefer clarity.” Release: CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter - naming by committee is O(n^relatives); autocomplete is O(cry)

  7. Anonymous

    In Cupertino, “clarity over brevity” means by the time you finish typing CNLabelContactRelationYoungerCousinMothersSiblingsDaughterOrFathersSistersDaughter, autocomplete has timed out and the replacement constant is already deprecated

  8. @M_Ali_S_S 2y

    Hey fellows

  9. @M_Ali_S_S 2y

    Does anybody know how the hell I can get my monitor size in python ?

    1. @MDSPro 2y

      https://letmegooglethat.com/?q=get+monitor+size+in+python+tkinter

      1. @M_Ali_S_S 2y

        I use winfo_width but it only gives 1

  10. @M_Ali_S_S 2y

    Or a full screen tkinter window height and width

Use J and K for navigation