# Code Smell 277 - UPPERCASE Acronyms

> TL;DR: Treat acronyms like normal words to improve human readability.

# Problems

- Reduced readability
- Breaking naming style
- Words confusion
- Harder to pronounce 

# Solutions

1. Treat acronyms as *Capitalized* words
2. Use *[camelCase](https://en.wikipedia.org/wiki/Camel_case)* or *[snake_case](https://en.wikipedia.org/wiki/Snake_case)*
 
# Context

Acronyms in uppercase (like *JSON, XML, REST*) in [camel case](https://maximilianocontieri.com/code-smell-159-mixedcase) break the natural reading flow.

You may think *sendJSONRequestOnHTTPREST* is a clear name, but it makes your code harder to read, especially when you string multiple acronyms together. 

Treating acronyms like normal words in camelCase (*sendJsonRequest*) keeps your code more readable and easier to understand.

# Sample Code

## Wrong

[Gist Url]: # (https://gist.github.com/mcsee/3fb92baefac7fb65577e03e196472f67)

```swift
class NetworkConnector {
    func validateXMLFile() { /*...*/ }
    func sendJSONRequest() { /*...*/ }
    func parseURLResponse() { /*...*/ }
    func setRESTAPIURL() { /*...*/ }
    func retrieveHTTPStatusCode() { /*...*/ }
    func updateDBConnection() { /*...*/ }
    func configureSSLCertificate() { /*...*/ }
    func setHTMLTemplate() { /*...*/ }
    func generateUUID() { /*...*/ }
    func connectViaFTP() { /*...*/ }
}
```

## Right

[Gist Url]: # (https://gist.github.com/mcsee/280cb3e2dd681b0039b9604aac32330a)

```swift
class NetworkConnector {
    func validateXmlFile() { /*...*/ }
    func sendJsonRequest() { /*...*/ }
    func parseUrlResponse() { /*...*/ }
    func setRestApiUrl() { /*...*/ }
    func retrieveHttpStatusCode() { /*...*/ }
    func updateDbConnection() { /*...*/ }
    func configureSslCertificate() { /*...*/ }
    func setHtmlTemplate() { /*...*/ }
    func generateUuid() { /*...*/ }
    func connectViaFtp() { /*...*/ }
}
```

# Detection

[X] Semi-Automatic 

It would help if you had a smart thesaurus.

To detect this smell, look for methods or variable names with uppercase acronyms that disrupt readability. 

Code reviewers or linters can also flag camelCase inconsistencies.

# Tags

- Code Standards

# Level

[X] Beginner 

# AI Generation

Modern AI code generators may produce inconsistent acronym casing. 

Always review and adjust their output to match your conventions.

# AI Detection

With prompts, AI can fix these naming issues and suggest improvements based on *[camelCase](https://maximilianocontieri.com/code-smell-159-mixedcase)* style.

## Try Them!

*Remember: AI Assistants make lots of mistakes*

| Without Proper Instructions    | With Specific Instructions |
| -------- | ------- |
| [ChatGPT](https://chat.openai.com/?q=Correct+and+explain+this+code%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | [ChatGPT](https://chat.openai.com/?q=Correct+the+case+to+CamelCase%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) |
| [Claude](https://claude.ai/new?q=Correct+and+explain+this+code%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | [Claude](https://claude.ai/new?q=Correct+the+case+to+CamelCase%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) |
| [Perplexity](https://perplexity.ai/?q=Correct+and+explain+this+code%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | [Perplexity](https://perplexity.ai/?q=Correct+the+case+to+CamelCase%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) |
| [Copilot](https://www.bing.com/chat?showconv=1&sendquery=1&q=Correct+and+explain+this+code%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | [Copilot](https://www.bing.com/chat?showconv=1&sendquery=1&q=Correct+the+case+to+CamelCase%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) |
| [Gemini](https://gemini.google.com/?q=Correct+and+explain+this+code%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | [Gemini](https://gemini.google.com/?q=Correct+the+case+to+CamelCase%3A+%60%60%60swift%0D%0Aclass+NetworkConnector+%7B%0D%0A++++func+validateXMLFile%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+sendJSONRequest%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+parseURLResponse%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setRESTAPIURL%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+retrieveHTTPStatusCode%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+updateDBConnection%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+configureSSLCertificate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+setHTMLTemplate%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+generateUUID%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A++++func+connectViaFTP%28%29+%7B+%2F%2A...%2A%2F+%7D%0D%0A%7D%0D%0A%60%60%60) | 

# Conclusion

Naming conventions are key to readable code. 

Treat acronyms like normal words, and avoid uppercase blocks to keep your code easy to understand.

# Relations

%[https://maximilianocontieri.com/code-smell-159-mixedcase]

%[https://maximilianocontieri.com/code-smell-48-code-without-standards]

# More Info

%[https://www.linkedin.com/posts/danielmoka_clean-code-tip-name-acronyms-as-normal-words-activity-7251472396438687744-C4kx/]

# Disclaimer

Code Smells are my [opinion](https://maximilianocontieri.com/i-wrote-more-than-90-articles-on-2021-here-is-what-i-learned).

# Credits

Photo by [Csabi Elter](https://unsplash.com/@bulgakovmihaly) on [Unsplash](https://unsplash.com/photos/assorted-color-chip-piled-IIDxzNru2GY)

Thank you @Daniel Moka for this tip.
    
* * *

> Simple can be harder than complex

_Steve Jobs_
  
%[https://maximilianocontieri.com/software-engineering-great-quotes]

* * *

This article is part of the CodeSmell Series.

%[https://maximilianocontieri.com/how-to-find-the-stinky-parts-of-your-code]
