A command line interface that allows you to create, open or modify 'generic' tables, i.e., you choose which and how many columns you want in a table. In the table, you have the options to:
- Display whole table. (in tabular form, nice features could be adjustable column width, word wrapping within columns)
- Add a row (must fill all columns).
- Edit a cell in a row (to edit whole row, type column-name '.').
- Find a cell using a field (column) name.
- Delete table.
- Default Field Values: When user is adding/modifying record, and leaves a field blank, then a default value for the field could be used (and setting the default field value could be done by showing an option for this in menu).
- Menu Options (added)
- Templates: (Named) A set of column titles, that can be selected in one go using template name
- Configurable settings: Ability to manipulate settings such as user prompt, table boundary characters, etc. (Convert macros in settings.hpp to variables that can be manipulated in menu.)
- Try to avoid macros, pointers,
goto.
(If you must use pointers, don't use raw pointers, use smart pointers instead.) - Use
int main() {... return 0; }pattern. - Use four spaces (NOT tab) for indentation.
- Always use header guards in header files.
Example:/* Module documentation */ #ifndef MODULENAME_INC #define MODULENAME_INC ... #endif //MODULENAME_INC
- Use
coutfor normal output,cerrfor error messages. - Error messages should be of the form 'ERROR: Error message'
- When a function pointer needs to be stored or passed to a function, then always use
typedef.
Example://avoid this void do_something(void (*func)(int)); //do this instead typedef void (*Callback)(int); void do_something(Callback func);
- Function/Class/Variable names must be descriptive, yet not too long.
eg.getName(),setName()//accessor functions
isRunning()//boolean state functions
toString()//conversion functions
Note: If a short form is used in a name, then do NOT use all caps.
eg.validateHtml()notvalidateHTML()
- MACRO_WORDS - Completely upper-case, use underscore between words.
- ClassName - Upper camel case (First letter in upper-case, first word of each word capital).
- classMemberFunctions - Lower camel case (First letter in lower case, first word of each word capital).
- variable_name - Underscore case (Completely lower-case, underscore between words).
- Describe a module (header file) in its first line using multi-line comment form
/* ... */ - Describe a class or function before its definition using single-line comment form
// ....
Example:/* Example module * Documentation * Provides some functionality */ //Example class //represents something class SomeClass { ... }; //Example function //does something void some_function() { ... }
- Add single-line comments wherever appropriate.