Ahk-Best-Practices icon indicating copy to clipboard operation
Ahk-Best-Practices copied to clipboard

Should commands use lowercase or CamelCase?

Open Stevoisiak opened this issue 7 years ago • 3 comments

Can there be a section discussing a consistent capitalization style for commands and variables?

^j::
    msgbox, Hello World! ; lowercase
    msgBox, Hello World! ; camelCase
    MsgBox, Hello World! ; CamelCase
    MSGBOX, Hello World! ; UPPERCASE
return

Most coding guides seem to use a mixture of lowercase and CamelCase. Take this example from the AutoHotkey Beginner tutorial.

2 - Hotkeys & Hotstrings

^j::
    MsgBox Wow!                            ; CamelCase
    MsgBox this is                         ; CamelCase
    Run, Notepad.exe                       ; CamelCase
    winactivate, Untitled - Notepad        ; lowercase
    WinWaitActive, Untitled - Notepad      ; CamelCase
    send, 7 lines{!}{enter}                ; lowercase
    sendinput, inside the ctrl{+}j hotkey  ; lowercase
Return                                     ; CamelCase

Even this repository mixes CamelCase and lowercase. (Examples from Flow of Control and Commands)

if var = AHK
    msgbox match  ; lowercase

Stevoisiak avatar Aug 11 '17 15:08 Stevoisiak

Good question. I definitely prefer ProperCase over any other alternatives. Since MsgBox is also a command, it should be ProperCase as well. What do you think?

aviaryan avatar Aug 11 '17 15:08 aviaryan

I like guest3456's suggestion on the AHK forums.

  • lowercase for Control Flow statements: if, else, return, while
  • CamelCase for regular commands/functions: MsgBox, Send, WinActivate

The only downside is that the distinction between the two categories could be confusing for commands like IfWinActive, SetTimer, OnExit.

~~I haven't really put enough thought into the best style for variable names.~~

As for variable names, RaptorX suggests using a mix of lowercase and CamelCase. (strLength, fstLetter, myString)

Stevoisiak avatar Aug 11 '17 16:08 Stevoisiak

@aviaryan After doing some more research, I think it makes more sense to look to jNizM's AHK Syntax Highlighting addon for Notepad++ for guidance. (also on GitHub)

Like guest3456 had suggested, the AutoCompletion addon uses CamelCase for regular commands and functions. However, the implementation of control flow statements is a bit inconsistent.

In the provided screenshot, control flow statements like if, return, loop, and byref are lowercase. However, in my personal testing (image below), I've found that the autocomplete recommends CamelCase for these statements.

(Note: Color differences are due to me using the Default AHK theme, while the official screenshots use the "Lazy" Theme.)

Local screenshot of NotePad++ AHK AutoComplete

Stevoisiak avatar Aug 21 '17 14:08 Stevoisiak