BCB编程规范

    xiaoxiao2025-10-29  7

    单元

       每个单元只包含一个类的声明。类中不永许写类的实现,类成员函数不超过20个,需要被外界调用的成员函数放在Public外,其余的全部放在Proteced,明确的不想让继承者修改的话放在Private中。

       包含的头文件 也就是#include 在头文件应该包含该类所需要的类型的。如果cpp也包含了,那么头文件就不要在包含,使用Class vcl; 告诉头文件有些需要的已经在CPP文件中包含啦!另外对不再使用的包含文件要及时的清除出去,否则可能碰到连接出错的问题,bcb的连接提示少的可怜啊!就有苦头吃拉!还有要记得给自己加进的包含写注解啊!!

     

    实现文件中

      千万不要定义全局变量和全局函数,至于会发什么问题啦,只有碰到了几十万的代码,五六个项目集合,一两百个单元所可能发生的问题。 那该怎么办了简单把它归到所在单元的类声明中去。函数的实现代码行不要超过200 包括之间的空格.因为人的暂时记忆能力不强啊为什么文章要分段落啊就是人暂存上下文的关联的内存是有限的呀

     

    组件的属性设置和数据库的字段表名:

      一般下都会在对象检查器中的设置。当调试过不去而你又忘记了设置的属性时的哭相,是多么地可气啊!而且BCB没有组件之间的比较,否则的话可以拖个同样的新组件来比一比到底哪里设置的不同! 所以没有办法只好麻烦些直接在代码中设置吧虽然很麻烦 却可以节省比较可观的时间呀要不就像 kateboy (老公)由于设置了ADOConnection Attrib里中的自动事务处理。每当退出程序时就报错!从早上跑到各大BCBQQ群中求人帮助,只到最后吃晚饭才惊奇发现了毛病所在! 还有一次不知那各BCB老大自报家丑 说自己吸了5包烟抓改BUG直到凌晨时分,方发现了它,原来是书写错误。

      再者就是数据库的表名和字段名。在写数据库中,一般会这样写

    ADOQuery->SQL->Text=”Select * From TabName Where Name=’wowo’ and sex=’b’”;

    ADOQuery->FieldByName(“Sex”)->AsBoolean=true;

    程序中到处都是这样写,数据库中的字段名一当改变。你得到处去修改,当然用BCB的查找功能帮一大忙,可是总有漏网之鱼吧! 而且BCB的语法检查不会到字苻串中,每当运行到该处时,虽然程序很明确的告诉你字段不存在,你也很清楚知道如何去修改。但找到它,再一次运行调试。可这段时间以及这时的心情就没有那么好了!每次放同样的错误,每次浪费同样的时间,虽然说少。可每天就8个小时的工作时间。这样频繁的浪费,心情一次比一次不好了,工作效率就越低,只好晚上加班继续干!若次次因为它要去加班,则那有时间去炮轰美媚啦!更不用说挤出点时间学习啦!身体也每况俞下!

    解决办法就是使用个单元名为:DBStruct 。在该单元中用结构体来存放数据库的表名和字段。列如:typedef struct{ stirng Name; string sex;String TabName} MyTab;

    MyTab m_dogTab;

    ADOQuery->FieldByName(m_dogTab.Sex)->AsBoolean=true;

    单元之间的引用

    可以说单元其实就是类,虽然我们写类的时间较少。但TFORM就是个已经声明好的类,我们就给它添加功能就行了!类之间最好时少耦合,多内聚。最好不要在单元之间使用回调的功能和数据成员。直接使用函数和属性。

     

    5命名

    一般下的组件的命名是 Form1 è Frm_Main   Edit1è Edt_Name 等 你也可以不缩写!

    常用变量命名

    全局变量

    g_

    常量

    c_

    c++类成员变量

    m_

    静态变量

    s_

    Int

    _I

    Long

    _l

    Float

    _f

    Doubl

    _d

    Strng

    _s

    Char

    _c

    Point

    _p

    Enum

    _e

    Struct

    _t

    Array

    _a

    Word

    _w

    Bool

    _b

    Hwnd

    _h

     

    转载请注明原文地址: https://ju.6miu.com/read-1303638.html
    最新回复(0)