引言
一开始的想法,将有关的放在一起,应该会看起来比较方便,结果就是主窗口高达五千多行代码!我简直为我曾经的自己感到羞愧,所以特地写出来以示分享,随自己对于代码的整洁进一步了解,也会继续更新
代码乱象
这写的是我以前犯的错:
(1)、函数名有些使用下划线取名法,有些使用驼峰取名法,不统一!
(2)、界面的控件取名有些开头字母大写,有些开头字母小写,不统一!
(3)、一个函数处理所有的按钮事件!这个没啥问题,问题是连具体实现全扔里面去了!代码太多影响理解。
(4)、注释不够多,即使是那时刚毕业的我,也知道注释的重要性,但是屎山太大,有很多没考虑到需要注释,根本不够!
(5)、写死数据在代码里,后期想要修改就要翻阅屎山察看,耗时耗力得不偿失。
(6)、重复的代码四五个函数都在用,就是不知道把重复代码取出来放一个函数里!
代码整洁建议
一、代码权能范围划分
(1)、复杂点的代码应该拆分成一个个互不相关的模块,然后分别去用函数或者类括起来,越细越好,尽量让函数功能显得单调,这样可以后期修改不用那么容易动一牵连全身
void 大象放进冰箱()
{
取得大象();
将大象移到冰箱前();
打开冰箱();
将大象移到冰箱里面();
关闭冰箱();
}
void 取得大象()
{
QVector< 动物类型> animalsVector = 获取草原的动物();
....
}
....
(2)、全局变量,宏,枚举这些如果太多占据了声明类的头文件时,应当单独再创建一个头文件保存以分离权能
(3)、你可听过MVC?不懂没关系,我也没打算讲,但是这里有个理念很不错!那就是界面与数据处理分离,不进行绑定,比如说,我改个QTableWidget的表格根据内容的不同进行排序,我竟然还需要改和内容处理、表格排序两个主要内容不同的部分,如其他的数据,这就是不合格的地方,客气的讲,一团浆糊。
二、命名规范
(1)、函数名等要统一,函数名最好是小写动词+具体名词,比如说
void setCarSpeedValue( int CarSpeedValue);
清晰可见该函数要做什么,也知道设的是什么值,更知道要传的是具体设谁的值,足够单一
(2)、变量名要首字母小写的驼峰命名法,不要去简单相信使用匈牙利命名法好,因为真正的匈牙利命名法是要很多知识的,起码初学者把握不住,现在学到的大多是误会版的匈牙利命名法
{
int returnValueInt = 0;
return returnValueInt;
}
宏的命名要全部大写,由于多个单词放在一起容易看花眼又没有驼峰命名法一样分清单词,所以我建议最好单词间加多个下划线
#define SETTING_SPEED_VALUE QString("")
三、注释的重要性
(1)、嗯…其实我不知道怎么说,大家都知道注释的重要性,只是懒得写而已
但还是提一句,注释不仅仅是给别人看,也是给自己看的,注释可以让你立即明白这个地方的作用,可以辅助效率的提高,毕竟你不能保证你的函数名清楚,有些人就是理解岔了,或者就是没想起来里面做了什么,毕竟写的东西太多了,这时候注释就发挥作用了。
四、预留更改接口
(1)、总有些人知道需求,某些不重要的小细节就直接写死数据在代码里,仿佛甲方需求的信誓旦旦真的不会改一样,结果甲方一提修改需求就傻眼了
rectangle->setBackgroundColor( QColor( 250, 250, 250, 0));
代码写在了这里,然后因为代码很多,自己又不记得这一句写在了哪里,还要拖动滚动条来仔细查看再次更改数据。
#define RECTANGLE_BACKGROUND_COLOR QColor( 66, 66, 66, 66)
像这里直接统一定义的,像要修改,我直接改这里就行,不用特意去翻代码,也方便别人察看修改
(2)、使用成员变量时,尽量不要将成员变量多个函数同时使用,而是要尽量以实参的形式调用,这样如果该成员变量有所更改,也不会改的太多
合格代码个人理解
我觉得一份合格的代码应当是如优美的文章一般,有迹可循,且清晰明了,便于修改,不会我修改A地方,还需要修改Z地方才可以