Coding Conventions
HWAT Coding Conventions and Function Headers
- All lines should be terminated with a semi-colon ";", C-Style.
- Namespaces are all lowercase and begin with "::".
- Function names use Hungarian notation and start with an uppercase letter.
- Variable names use Hungarian notation and start with lowercase letter.
- Variable names use following prefixes: For Widgets
- Option <Parameter>
- Description
- button
- "btn_"
- canvas
- "cnv_"
- textbox
- "txt_"
- combobox
- "cmb_"
- frame
- "frm_"
- radiobutton
- "rad_"
- checkbox
- "chk_"
- collector
- "col_"
- label
- "lbl_"
- entry
- "ent_"
- scrollbar
- "scr_"
For Data Types- Option <Parameter>
- Description
- integer
- "n_"
- float/double
- "d_"
- string
- "str_"
- bool
- "b_"
- array
- "arr_", since it may contain more than one data type
For list variables: Append "List" to the variable name (
n_myIDList
).For return variables: Use "retval" as the variable name regardless of data type.
- All functions will return 1 or any meaningful value for success or partial success, "null" for a program failure (this means the function is writing an error message) i.e. return {}. The function can also return {}. If an API function it calls returns {}, in this case, it does not need to write an error message.
- All functions within namespaces must conform to style A, and not style
B:
a. Namespace eval ::hwat::util {}; proc ::hwat::utils::MyProc {n_intArg d_floatArg} { puts "hello world"; return 1; } b. Namespace eval ::hwat::util { proc ::hwat::utils::MyProc {n_intArg d_floatArg} { puts "hello world"; return 1; } # end namespace }
- The function ::hwat::utils::WriteErrorMessage will be used to post error messages to the message box.
- If the hwat::globals::DEBUG variable is set to 1, the function ::hwat::utils::WriteDebugMessage will be used to post debug messages to the message box. Use ::hwat::utils::SetDebugOnOff to set the debug variable.
- The function ::hwat::utils::PostToMessageBox will post messages to the message box in HyperWorks or post messages in a Tk message box in HyperMesh.
The following function header must be used with the following rules:
- One argument per line.
- The LAST person to modify should be first in the Author list.
- Everything that begins with "##" and keyword "proc" will be parsed, so begin all other comments with a single "#".
- If needed, have a more detailed description for developers after the headers and starting with "#".
- If a change is made to the procedure just overwrite the info in the header instead of appending to it.
#######################################################################
## Procedure name:
## ::vcl::utils::GetXYZFromTag
##
## Description:
## Returns the coordinates of the node with the given tag.
##
## Arguments:
## Tag = Keyword "TAG:" followed by the tag name (ex. "TAG: J_Node").
## Poo = some other argument, just to make my point.
##
## Returns:
## A Tcl list containing the x, y and z coordinates of the node if successful,
## {} if unsuccessful.
##
## Comments:
## Where's the beef?
##
## Author:
## Girish Deshmukh, Shawn Freeman
##
## Last updated:
## 02/28/2003
##
#######################################################################
##
## UAT
## Test Procedure:
## 1. Create Tag on a node in HM
## 2. Verify Tagged nodes X/Y/Z location using HM
## 3. Call this function with the Tag name as the argument
##
## Success:
## Returns the X/Y/Z location of the node which you tagged
##
## Failure:
## Case 1 – passing in a Tag name that contains a space or other special character
## Result 1 – function cannot find Tagged node and should return {} gracefully
## Case 2 – Tag does not exist in session
## Result 2 - function cannot find Tagged node and should return {} gracefully
##
#######################################################################