VC coding specification

zhaozj2021-02-11  169

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 Level 2 Directory Level 3 Directory Note Work PSS_MOD1 Debug VC Integrated Environment Generated Debug Version Directory Release VC Integrated Environment Generated Release Directory RES VC Integrated Environment Generated Resource File Directory The header file Source Source This file Source belongs to MOD2 Document PSS_MOD2 Debug VC Integrated Environment Generated Debug Release Directory Release VC Integrated Environment Generated Release Directory RES VC Integrated Environment Generated Resource File Directory Include The header file of the MOD1 header file Source belongs the header file of the MOD2 header file PUBLIC INCLUDE MOD1 and MOD2 common header file Source MOD1 and MOD2 common source code file lib model and mod2 public library file test pss_test1 test items a PSS_TEST2 test item three pss_test3 test item three trird_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:

. Range prefix _, type prefix _, limit words.

Special type name, prefix representation: class, interface

Prefix Type Example Remarks LM Class Lmobject Indicates that the type itself does not use 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 type example Remarks G_ global scope g_servers m_ member variable m_pdoc, L_ local scope l_strname 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;

HgDiobjhgdiobj;

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.

转载请注明原文地址:https://www.9cbs.com/read-6016.html

New Post(0)