VC source code encoding
1 project style
1.1 item name
In the VC, the project name is the last executable file name, so the project name is best consistent with the final executable file name.
1.2 Project Directory Settings
In order to ensure the backup of the VC project, all the items related to all the projects are all under the unified directory, and each project is established under the directory, the public part of the project is built in the public directory. Next, the base library required by the project determines different directories according to the number of basic libraries required, and the project-related test procedures are uniformly placed under the TEST directory. The following table shows a directory setting table for a software engineering PSS system:
The PSS system has two modules PSS_MOD1 and PSS_MOD2, and two modules have part of the shared code. Three test programs PSS_TEST1, PSS_TEST2, PSS_TEST3, and PSS system development processes are written in the engineering development process, and the PSS system development process is used. Then the directory of the system is set as follows:
First class catalog
Secondary directory
Three-level catalog
Note
Work
PSS_MOD1
Debug
Debugging version directory generated by VC integrated environment
RELEASE
VC Integrated Environment Generated Release Directory
RES
VC integrated environment generated resource file directory
Include
The header file of the MOD1
Source
The header file of the MOD2
PSS_MOD2
Debug
Debugging version directory generated by VC integrated environment
RELEASE
VC Integrated Environment Generated Release Directory
RES
VC integrated environment generated resource file directory
Include
The header file of the MOD1
Source
The header file of the MOD2
Public
Include
MOD1 and MOD2 common header files
Source
MOD1 and MOD2 common source code files
Lib
MOD1 and MOD2 public library files
Test
PSS_TEST1
Test item one
PSS_TEST2
Test item three
PSS_TEST3
Test item three
Third_MOD
Third-party public module
1.3 Item directory settings in the integrated environment
Each project is equipped with a relative path setting in the VC-compiled environment, which does not use an absolute path to ensure that it is backup to the disc device or when it is restored to the hard disk, it is directly compiled. Also do not have too many directory searches with a #include statement, as shown below:
#include "../../../somehead.h"
Change to:
#include "headfile.h"
Or #incldue "Dir / Headfile.h"
And pay attention to #include "headfile.h" difference with #include
Then add the directory of the header file in the Project Setting.
1.4 Project Modification Record Tracking
Each VC project must exist in changes.log to record all changes since the project produce, which must be as follows:
Date: 2000/4/28
Modify: **
Modify the topic:
Related modified files: hello.cpp
Modify content detailed description:
You can also make full use of the README.TXT file that Visual C automatically generated to record the item related information.
2 file style
2.1 file generation
The semantics of the file name should be able to summarize what functionality is intended to express the functionality of this file. The file name is expressed in lowercase English letters, which is strictly forbidden to use Chinese; for the file name expressed in several words, the words are separated from the _ symbol.
File name suffix definition:
a. VC automatically generated source file and header suffix are: *. CPP and .h. B. Other source files and header suffixes are: *. Cxx and * .hxx. For specification VC derived classes, try to generate file formats with Class Wizard to avoid manual header files / implement files.
// constructors // Construction
// attributes // attribute, quality, feature, plus,
// Operations // operation, operation, implementation, role, business, work, surgery, military action
// Overridables // overloaded
// Implementation // implementation
Every class has at least one // importation, doing different processing in different positions MFC, the best when writing code
The same consistent with MFC.
2.2 Document Head Note
The header of the file is mainly indicating some of the information of the file, its format is as follows:
///// file name: MANGE_FUN.CXX // Version: // Destination and Main Power: Setting // Creating System Parameters: 1999.09.14 // Modify Date: // Author: *** // Modify By :
2.3 File Specification Function Keys
Source files are written, Visual C provides the Alt F8 function key to make file specifications, often use this button to keep the files (Note, the Alt F8 function key to continuous two case statements will handle errors , Cannot be regulated).
3 function style
3.1 Convention of function names.
The semantics of the function name should reflect the functionality of the function.
The naming rules for the API function are: a. The function will begin in API_LM_; LM indicates that this function is a function of the Lonicra-MDA subsystem, and the function name of the PDM module is starting with API_LP_. B. The latter name is based on a function semantic, such as creating a single function full function named API_LM_ceate_point ().
Naming rules for DI functions: a. Function name = LM _ (Semantic Semantics). B. For a function name expressed in several words, each word is separated from the _ symbol.
3.2 Function Notes
ClassWizard automatically generates functions, such as message response functions, do not have to have much notes and explanations;
For functions written by self, if the system key function, the information of the function must be indicated above the function implementation, the format is as follows:
/ / =========================================================================================================================================================================================== ====================== // Function name: InsureHasoutputInfo // function description: Make sure there is an appropriate output information // input parameters: nProductID: the corresponding product ID // Output parameter: Void // Create Date: 00-2-21 // Modify Date: 00-2-21 // Author: *** // Additional instructions: / / ========= ============================================================================================================================================================================================================= =========== 3.3 Code indent
Each nesting function block uses a Tab indent (can be set to 3 spaces), the braces must be placed next to the conditional statements, alone, easy to match the anti-big brackets should be single, In most cases, the reverse enrollment should have an comment. For example, as follows:
IF (condition1) {while (condition2) {... .. ... ..} // end while (condition2)} // endiff (condition1)
or
IF (condition1) {while (condition2) {.... ... // end while (condition2)} // endiff
3.4 other specifications
1. The function of each source file is not more than 20, and each function should not exceed 120 line original code. 2, the input parameter of the function is not more than 5, and the output parameter is not more than 5. 3. For more than 3 sentences, the statement is repeatedly called, and it should be packaged as function calls. 4, try to avoid the three-layer nesting cycle; minimize the IF statement of the program; use a statement that is difficult to understand such as I * = B, A = C D * B . 5, make full use of C ideas, truly use C language to program; the class expansion member function.
4 variable style
The variable is trying to use Hungarian nomenclature, combined with the principle of VC; in general, the variable is named:
Special type name, prefix representation: class, interface
Prefix
Types of
example
Note
LM
Class
LmObject
Indicates that the type itself is not used in combination with the range prefix.
I
Interface interface
Iunknown
Note: The class prefix is changed to LM, and the non-global class is best to represent the module. The instance name of the class is approximately the same, just that the class name semantic represents the generic meaning of the class, and the class name represents the specific semantics of this instance. If the class lmsketpoint represents the class definition of the sketch point, and its two instances _startpoint, _endpoint represent the semantics of the start and end points, respectively. The instance of the class is named on a prefix. Special agreement: a. MouseTool's prefix is _mt. B. The prefix of the dialog class is CDLG. C. The prefix of the eraser is _rb.
Range prefix:
Prefix
Types of
example
Note
g_
Global role domain
g_servers
M_
Member variables
M_PDOC,
l_
Local role domain
L_StrName
use less
Note: Try to use the full variable when programming, and add the following keywords for the full range of variables:
Feature Module: FEA Sketch Module: Sket Assembly Module: ASM Project Module: Lay Surface Module: SURF Interface Module: UI
Type prefix 1 ,:
Commonly used general data type prefix representation (this is only part)
Prefix
Types of
Memory specification description
example
CH
charr
8-bit character
Chgrade
CH
TCHAR
16-bit character if _unicode is defined
Chname
B
Bool
Boolean Value
Benabled
n
int
Integer (Size Dependent On ON Operating System)
NLENGTH
n
Uint
Unsigned value (Size Dependent On ON ON ON ON OPERATING SYSTEM)
NLENGTH
w
Word
16-bit unsigned value
WPOS
l
Long
32-bit signed integer
Loffset
DW
DWORD
32-bit unsigned integer
DwRange
p
*
Ambient Memory Model Pointer
PDOC
LP
Far *
Far Pointer
LPDOC
LPSZ
LPSTR
32-Bit Pointer to Character String
lpszname
LPSZ
LPCSTR
32-Bit Pointer to Constant Character String
lpszname
LPSZ
LPCTSTR
32-Bit Pointer to Constant Character String IF_Unicode is defined
lpszname
hide
Handle
Handle to Windows Object
HWnd
lpfn
(* fn) ()
Callbackfar Pointer to Callback Function
LPFNABORT
Common use of Windows object name abbreviations:
These names are abbreviated in many cases directly, and the names of the variable are directly used.
Windows object
Example variable
MFC class
Example object
HWnd
HWnd;
CWND *
PWND;
HDLG
HDLG;
CDIALOG *
PDLG;
HDC
HDC;
CDC *
PDC;
HgDiobj
HgDiobj;
CGDIObject *
PgDiobj;
HPEN
HPEN
CPEN *
Ppen;
Hbrush
Hbrush;
CBRUSH *
PBRUSH;
Hfont
HFont;
Cfont *
PFont;
Hbitmap
Hbitmap;
CBitmap *
Pbitmap;
HPALETTE
HPALETTE;
CPALETTE *
PPALETTE;
HRGN
HRGN;
CRGN *
PRGN;
Hmenu
HMENU;
Cmenu *
PMenu;
HWnd
HCTL;
CSTATIC *
PSTATIC;
HWnd
HCTL;
CButton *
PBTN;
HWnd
HCTL;
Cedit *
Pedit;
HWnd
HCTL;
Clistbox *
Plistbox;
HWnd
HCTL;
CCOMBOBOX *
PCOMBOBOX;
Other macro definitions
It is recommended to use uppercase letters and separated by underscore. Visual C common macro defined list:
Prefix
Symbol type
Symbolic example
range
IDR_
Logo the type of multiple resource sharing
IDR_MAINFRAME
1 TO 0x6FFF
IDD_
Dialog Box Resources (Dialog)
IDD_SPELL_CHECK
1 TO 0x6FFF
HIDD_
Context Help Based on dialog box
Hidd_spell_check
0x20001 to 0x26FF
IDB_
Bitmap Resources (Bitmap)
IDB_COMPANY_LOGO
1 TO 0x6FFF
IDC_
Cursor Resource (CURSOR)
IDC_PENCIL
1 TO 0x6FFF
IDI_
Icon Resource (icon)
IDI_NOTEPAD
1 TO 0x6FFF
ID_IDM_
Toolbar or menu bar command item
ID_Tools_Spelling
0x8000 to 0xDFFFFFF
HID_
Command Context Help (Command Help Context)
HID_TOOLS_SPELING
0x18000 to 0x1DFFF
IDP_
Message box prompt text resources
IDP_INVALID_PARTNO
8 TO 0xDFFF
HIDP_
Message box context help (Message-Box Help Context)
HIDP_INVALID_PARTNO
0x30008 to 0x3DFFF
IDS_
String resource (String)
IDS_COPYRIGHT
1 TO 0x7FFF
IDC_
Control resource in the dialog
IDC_Recalc
8 TO 0xDFFF
5 comment style
Untrue annotations are annotated with doubles;
Multi-line annotation with / * * /
There is no more annotation left by debugging in the source code of the presented version.
Note Don't be too much, generally 60 characters (guaranteed to ensure the visible area of the VC integration), if there is more than, then the wrap processing.