新疆大学创新实验室管理细则
为了营造一个安全有效、秩序良好的实验环境,达到“科学、规范、安全、高效”的管理目的,特制订本实验管理规定。
第一章 总则
第一条 新疆大学创新实验室创建的宗旨是为学生进行创新实践提供场所,为学生提供一个技术交流的平台。重点培养学生的创新意识和动手能力,以科学系统的创新能力训练方法培养学生系统开发、技术研究与认知能力、创新意识和创新能力,培养基础扎实、实践创新能力强的应用型人才和理论与实践充分结合的复合型拔尖创新人才。
第二条 新疆大学创新实验室实行教师专业指导,学生自主学习为主的导师制,让学生由被动学习转向主动学习,以项目驱动和专业学科竞赛机制实施创新实践性的训练。
第三条 新疆大学创新实验室向全校学生开放,彻底贯彻“夯实基础、求是创新、注重实用”的指导原则,让更多理工科学生受益。
第四条 新疆大学创新实验室的实验内容属于教学计划外或是课程教学内容的扩展性实验。包括基础实验、创新实验、综合设计实验,覆盖电路设计技术、数字电路、模拟电路、单片机、嵌入式、FPGA、程序设计、网络技术等实用、创新性电子信息类技术。
第五条 新疆大学创新实验室的所有实验、科研成果归新疆大学创新实验室所有,不得外泄新疆大学创新实验室的保密作品内容。
第六条 新疆大学创新实验室开放时间是按照学生作息时间表全天开放(包含节假日)。
第七条 新疆大学创新实验室的所有成员应当听从教师安排,按时按质完成规定的任务。
第八条 退出准则
(1)完成大学学业者于毕业当年7月1日视主动离开;
(2)违反国家法律、校规校纪以及新疆大学创新实验室规定的相关成员,新疆大学创新实验室予以开除,并不再录用;
(3)无正当理由不参加新疆大学创新实验室组织的各种竞赛者,新疆大学创新实验室予以强制开除;
(4)如有特殊原因需要离开新疆大学创新实验室,由成员自己提出申请,由新疆大学创新实验室管理委员会批准后方可退出。
第二章 新疆大学创新实验室招新制度
创新实验室招人的原则:人品为先,好学为耀,技术为基
创新实验室招新分为常规招新和特殊招新(依靠老师推荐或者实验室正式成员推荐)两种。
一、 招新对象
(1)招收的成员为新疆大学全日制在校本科生且成绩优异者或者对创新实验有极大兴趣的学生。
(2)招收的成员必须能吃苦耐劳,有坚强的毅力。
(3)招收情商高或者技术能力强的大一新生,作为新生力量。
(4)招收大二或者大三有一定技术能力或发展潜力的以及适合团队的高年级学生。
(5)根据实验室需要进行特殊招新。(实验室正式成员和教师都可以推荐品学兼优的学生)。
(6)种子班成员(电信实验班)经一年考核后可以成为创新实验室正式成员。
二、 参与人员
招新组组长1名(以实验室分组方向为准),干事1-2名、教师若干。
三、 招新时间安排
每学期的开学第一个月(即3月和10月),即春季和秋季招新。
四、 招收流程
(1)确定招新——网站更新,海报制作,准备笔试试卷
(2)进行各种方式宣传——包括张贴海报,挂横幅,发传单等方式。
(3)接受简历——简历统一发送至创新实验室官方邮箱xjucxlab@163.com
(4)确定笔试考试时间,准备笔试。
(5)笔试成绩在2天后出成绩,准备面试。
(6)面试准备完毕,进行面试。
(7)招新结果通知。
(8)整理新成员档案。——对新成员进行信息存档,以便以后招新时参考;整合招新材料并归档(包括照片、简历、笔试时间以及面试记录等相关文档)。
(9)录取后进行实验室学前思想教育。
第三章 新疆大学创新实验室成员管理制度
第一条 一旦进入新疆大学创新实验室学习后,学员必须听从实验老师、专业导师的安排,按时按质完成规定的实验内容。如有违反者,强制退出创新实验室。
第二条 新疆大学创新实验室各个工作室必须制定卫生值日表,学员必须按卫生值日表严格打扫教室清洁卫生。同时学员要爱护工作室的环境卫生,不得在教室吃零食,不允许将垃圾随地乱扔,不允许将矿泉水瓶、易拉罐瓶、使用后的卫生纸等放于桌上,不能将书本等乱放于课桌上。必须随时保持自己课桌上整洁。
第三条 新疆大学创新实验室在创新实验室管理委员会的组织下,每学期开展至少一次联谊活动。
第四条 每位成员原则上可以按照《实验耗材使用规定》 申请所需器材,并填写《创新实验室元器件申请表》,向器材管理人员提出申请后方可领取。由于申请人不珍惜所申请器材,随意丢弃,器材管理人员、专业指导教师等管理人员可以不批准申请。除此外,器材管理人员、专业指导教师必须根据学员申请器材的用途,科学、合理的批准申请。
第五条 每位成员还应该注意个人卫生,着装整齐、朴素大方,不可穿拖鞋、奇装异服等进入创新实验室。创新实验室是教学和学习的场所,创新实验室成员必须保持安静,严禁大声喧哗、打闹。
第六条 创新实验室成员必须注重行为举止、言语礼貌,遇到领导要主动问好、尊敬师长、团结同学、热爱科学、勤于动手。
第七条 创新实验室不定期举办专题培训,培训前必须提前通知实验室所有成员。参加培训的每位成员无正当理由连续缺席三次者,一律强制退出。
第八条 每学期考核不合格者将强制退出实验室,如果能重新认真完成之前所有实验项目,并由专业教师考核合格后,可给予一次重新进入创新实验室学习的机会。
第九条 参与科学研究、技术开发、学科竞赛、及各类社会实践,取得学术研究成果、具有一定创新意义的智力劳动成果或其他形式的优秀成果后,按照《奖励措施》进行奖励。
第四章 日常行为准则
以下日常行为,新疆大学创新实验室成员必须严格遵守。
1. 实验室禁止嬉戏打闹,禁止抽烟、喝酒,禁止看电影,玩游戏。
2. 加强防盗,离开实验室必须锁门,贵重物品要妥善保管,闲杂人员不得进入实验室。
3. 注意安全用电、节约用水;不得私自拉电线;发现漏电、漏水,及时上报,严禁私自处理。
4. 礼貌待人,尊敬师长,互帮互助,加强交流,增进友谊,严禁冲突。
5. 实验室电脑和仪器设备严禁拆卸,如有问题,上报管理员处理;自行拆卸,将严肃处理。
6. 实验室工具及书籍使用完后立即归位,不得乱摆乱放。
7. 不得随意外借实验室设备,更不允许私自带出实验室。所有设备外借,必须经管理人员许可并登记后,方可借出。
8. 刻板机不得私自使用,必须由专人操作。
9. 保持室内清洁,按时做值日,及时倒垃圾。
10. 晚上离开实验室时,必须关掉总电源、关断水源,关好门窗。
11. 发现陌生人或可疑人,上前询问,并及时上报。
12. 禁止出现在无人的情况下不锁门;贵重物品自己保管,若丢失自行负责。
注:本日常规范适合于所有创新实验室成员
第五章 资产管理
第一条 新疆大学创新实验室的仪器、设备、以及各种器件等,由专人负责,并做好出入库登记,实行管理责任制,做到帐物相符,每个元器件以及仪器设备的出入都要严格登记。严禁随意搬动、拆卸、改装实验设备。仪器设备报废时,及时报告指导老师。
第二条 新疆大学创新实验室仪器设备的存放,必须符合放置要求,整洁有序,便于检查使用;必须注意防尘、防潮、防震、防冻、防晒、防压、防磁等。
第三条 实验室不准存放任何与实验无关的物品,更不能存放私人物品。
第四条 各种仪器、工具规范摆放,使用完后归还原处,不许乱丢乱放。
第五条 实验仪器设备(包括主机、附件、说明书)以及工具不得外借;实验室之间相互调剂借用,必须经管理负责人同意,同时负责用完后及时归还。外单位借用须经指导老师同意。
第六条 新疆大学创新实验室的人员,要落实岗位责任制,对仪器设备做到定期检查、维护、保养,出现故障及时排除,确保仪器设备处于正常状态。
第七条 严格实验室钥匙的管理,钥匙的配发应由有关负责人统一管理,不得私自借给他人使用或擅自配置钥匙。
第八条 已成熟的作品做成文档的形式存入资料库,以备他人学习使用。有条件将整理成论文形式发表,形成的实体作品存入展览室。实验室一切文档、资料每半年整理归类一次,指定专人负责。
第九条 新疆大学创新实验室设计的作所有品不得私自带出实验室使用,实验室的资料不能私自提供给实验室以外的成员。
第十条 新疆大学创新实验室人员不得把实验室的设备、器材、器件、物品等据为己有,违者严肃处理。
第十一条 权属新疆大学创新实验室的书籍使用完毕要归还,更不能占为己有。
第六章 安全管理
第一条 加强防盗,离开实验室要锁门,贵重物品要妥善保管,闲杂人员禁止进入实验室。
第二条 凡违反操作规程或擅自动用其它仪器设备,致使损坏者,根据情节要给予批评或处分,并要按规定赔偿损失。
第三条 电器设备的线路必须按规定装设,禁止超负荷用电。
第四条 用电设备必须做好接地接零工作,所有开关和用电设备均要符合绝缘规范。电器设备除经常检查外,应当定期进行绝缘测定,发现可引发打火、短路、发热和绝缘不良等情况,须及时修理或更换。
第五条 实验室内严禁存放私人物品,持钥匙者都要对该实验室的安全和财产负责。
第六条 非实验室人员禁止进入实验室。
第七条 实验室不得住宿或作他用。
第八条 实验室的电源、火源要设专人负责管理,定期进行安全检查,发现隐患应及时处理,不得违章设置。
第九条 实验室水电设施要安全、完好,室内要清洁卫生,仪器设备摆放整齐。实验室门禁止堆物封闭,以保证紧急情况下的人员疏散。
第十条 新疆大学创新实验室的仪器设备应按操作规程正确使用,出现事故要立即查明原因,同时上报处理。由于责任事故造成仪器设备的损坏,要追究使用人的责任。
第十一条 实验室内不准私拉电线,要经常检查开关、插座、保险等电气设施,不得任意加大保险,不得超负荷用电,要按有关安全规程操作。
第十二条 新疆大学创新实验室所有成员应注意用电、用水安全, 因人为原因造成实验室事故的,按有关规定对当事人进行纪律处分,并根据情节轻重追究有关人员的经济和法律责任。
第十三条 实验工作结束后,必须关好电源、仪器开关,工具放回原处,实验台收拾整洁。离开前,创新活动中心人员要认真检查门、窗、水、电以及室内存放的大功率设备等,杜绝不安全的隐患,确保实验室安全,清扫易燃的纸屑等杂物,消灭火灾隐患。
第十四条 个人物品由自己保管,如有遗失及损坏均由本人负责。
第十五条 有毒、易燃、易爆、易腐蚀性物品,使用时要严格遵守操作规程。
第十六条 实验室根据实际情况,配备一定数量的消防器材,消防器材要摆放在明显、易于取用的位置,并定期检查,确保有效,严禁将消防器材移作别用。实验室人员必须熟悉常用灭火器材的使用。
第十七条 新疆大学创新实验室的成员因操作不当造成的人员伤亡,由自己负责,学校、学院以及新疆大学创新实验室概不负责。
第七章 实验耗材使用规定
1、 购回的器件先交由管理员进行分类、登记、入库,以方便使用及器件管理。
2、 器件使用时应填写领用申请清单,并交由管理员登记备份,严格根据清单请领、使用器件。
3、 器件出现损坏的情况下,不能随意丢弃损坏器件,应该先向管理员或指导老师说明情况,经确认后再将损坏器件放置于专门存放废旧器件的地方。
4、 元器件盒与元器件统一由管理员管理,不允许乱堆、乱放,器件固定存放位置后一般不随便移动。
5、 非本活动中心人员不允许使用本实验室器件、仪器,如有特殊情况须经指导老师批准。
6、 对于器件的创新应用,要及时向实验室成员讲解并讨论。
7、 对于废弃电路板板子上的可用元器件,要回收利用,做到节约、不浪费。
8、 使用者必须掌握所用器件的工作原理、技术性能、操作规程、维护保养等技能。
9、 为了避免元器件的滥用,实验室成员使用元器件时实行限量使用,超出的费用自行受理。
10、 如果实验室没有实验所需的器件,应该提前3天以上向管理员提出购买申请,待确认后统一由管理员报请采购。
第八章 电路设计操作规程
第一条 电路板制作本应以服务实验室成员做实验为目的。实验室外成员须在实验室制作电路板,必须经实验室管理人员同意后,方可由专人制作电路板。
第二条 电路设计前必须有可行、可靠的方案,经过理论验证和讨论后方可执行。
第三条 原理图的设计必须选择电路仿真软件multisim、protues或者其它仿真工具进行仿真,当仿真成功后方可绘制原理图。
第四条 根据所设计的原理图电路,采用实际的元器件在面包板上面进行电路连接,并采用专业的仪器仪表测量电路的各种参数。
第五条 一旦实际电路测试成功后,方可绘制PCB电路图。否则,重新设计电路原理图。
第六条 PCB电路绘制中,统一接口,电源接头为大插座。定义插座正负极时,以面对插座为准,左边为正极,右边为负极(特殊情况除外)。
第七条 PCB电路的绘制过程中,必须将所有器件的名称按照国际标准进行标注。
第八条 PCB电路的绘制过程中所有接口需在接口封装处标明,如电源需标明“+12V”、“GND”等字样。
第九条 PCB电路绘制过程中,要认真核对PCB图上元器件的封装与实际元器件的管脚序号和大小是否完全相符,做到严谨、细致,防止出现返工。
第十条 电路原理图绘制完毕后须经由至少两人的审查,方能画出PCB图,再经过检查后方可制板。
第十一条 信号线统一用排插,同样功能信号使用同样颜色的线。
第十二条 电源线统一标准,正极为红色,负极为黑色。
第十三条 电路板在测试时应确保电路板焊盘面绝缘,无虚焊、短路、断路现象。
第十四条 选择器件时应该先由理论计算得出结果。
第十五条 打印时候应尽量一次性成功,避免浪费热转印纸。
第十六条 切割铜板时应尽量与实际设计电路板大小相符,不要铺张浪费。
第十七条 腐蚀铜板的时候应避免浪费腐蚀剂。
第九章 实验操作规程
第一条 设计方案前需阅读大量文献及其它资料。
第二条 设计方案形成后必须经过讨论方可进行设计。
第三条 按照原理图进行电路连接,连接完毕后必须再次检查连线是否有短路、断路、接触不良等情况,检查无误后方可接通电源进行实验。
第四条 如果测试结果与理论结果不相符,应对电路逐级、逐项、逐元器件进行检查。
第五条 每做完一个项目实验,必须写出实验报告,经过老师验收合格后,将所有与该实验相关的资料(包括论文、设计资料、电路原理图、PC图、实物照片、制作过程照片等)进行分类后装入一个文件夹并按照项目名称命名,统一发送到新疆大学创新实验室官方邮箱:xjucxlab@163.com。报告的格式要求按照新疆大学本科毕业论文的格式要求进行。
第六条 项目尽可能做到稳定、可靠并具有创新性。
第十章 程序编写规范(以C语言为例)
10.1 排版
(1) 程序块要采用缩进风格书写。
(2) 相对独立的程序块之间,变量说明之后必须加空行。
示例:
if (!valid_ni(ni))
{
... // program code
}
repssn_ind = ssn_data[index].repssn_index;
repssn_ni = ssn_data[index].ni;
(3) 较长的语句(大于80字符)要分成多行书写,划分出的新行要进行适当的缩进,使排版整齐,语句可读。
示例:
perm_count_msg.head.len = NO7_TO_STAT_PERM_COUNT_LEN
+STAT_SIZE_PER_FRAM*sizeof( _UL );
(4) 不允许把多个短语句写在一行中,即一行只写一条语句。
示例:
rect.length = 0;
rect.width = 0;
(5) if、for、do、while、case、switch、default等语句自占一行,且if、for、do、while等语句的执行语句部分无论多少都要加括号{}。
示例:
if (pUserCR == NULL)
{
return;
}
10.2 注释
(1) 一般情况下,源程序有效注释量必须在20%以上。
(2) 说明性文件(如头文件.h文件、.inc文件、.def文件、编译说明文件.cfg等)头部应进行注释,注释必须列出:版权说明、版本号、生成日期、作者、内容、功能、与其它文件的关系、修改日志等,头文件的注释中还应有函数功能简要说明。
(3) 源文件头部应进行注释,列出:版权说明、版本号、生成日期、作者、模块目的/功能、主要函数及其功能、修改日志等。
(4) 函数头部应进行注释,列出:函数的目的/功能、输入参数、输出参数、返回值、调用关系(函数、表)等。
(5) 边写代码边注释,修改代码同时修改相应的注释,以保证注释与代码的一致性。不再有用的注释要删除。
(6) 注释的内容要清楚、明了,含义准确,防止注释二义性。
(7) 避免在注释中使用缩写,特别是非常用缩写。
(8) 对于所有有物理含义的变量、常量,如果其命名不是充分自注释的,在声明时都必须加以注释,说明其物理含义。变量、常量、宏的注释应放在其上方相邻位置或右方。
示例:
/* active statistic task number */
#define MAX_ACT_TASK_NUMBER 1000
(9) 全局变量要有较详细的注释,包括对其功能、取值范围、哪些函数或过程存取它以及存取时注意事项等的说明。
(10)对变量的定义和分支语句(条件分支、循环语句等)必须编写注释。
(11)在代码的功能、意图层次上进行注释,提供有用、额外的信息。
示例:如下注释意义不大。
/* if receive_flag is TRUE */
if (receive_flag)
而如下的注释则给出了额外有用的信息。
/* if mtp receive a message from links */
if (receive_flag)
10.3 标识符命名
(1) 标识符的命名要清晰、明了,有明确含义,同时使用完整的单词或大家基本可以理解的缩写,避免使人产生误解。
(2) 命名中若使用特殊约定或缩写,则要有注释说明。
(3) 对于变量命名,禁止取单个字符(如i、j、k...),建议除了要有具体含义外,还能表明其变量类型、数据类型等,但i、j、k作局部循环变量是允许的。
示例:下面所示的局部变量名的定义方法可以借鉴。
int liv_Width
其变量名解释如下:
l 局部变量(Local) (其它:g 全局变量(Global)...)
i 数据类型(Interger)
v 变量(Variable) (其它:c 常量(Const)...)
Width 变量含义
10.4 可读性
(1) 注意运算符的优先级,并用括号明确表达式的操作顺序,避免使用默认优先级。
(2) 避免使用不易理解的数字,用有意义的标识来替代。涉及物理状态或者含有物理意义的常量,不应直接使用数字,必须用有意义的枚举或宏来代替。
(3) 源程序中关系较为紧密的代码应尽可能相邻。
(4) 不要使用难懂的技巧性很高的语句。
示例:如下表达式,考虑不周就可能出问题,也较难理解。
* stat_poi ++ += 1;
10.5 变量、结构
(1) 去掉没必要的公共变量。
(2) 细定义并明确公共变量的含义、作用、取值范围及公共变量间的关系。
说明:在对变量声明的同时,应对其含义、作用及取值范围进行注释说明,同时若有必要还应说明与其它变量的关系。
(3) 当向公共变量传递数据时,要十分小心,防止赋与不合理的值或越界等现象发生。
(4) 防止局部变量与公共变量同名。
(5) 严禁使用未经初始化的变量作为右值。
说明:特别是在C/C++中引用未经赋值的指针,经常会引起系统崩溃。
(6) 使用严格形式定义的、可移植的数据类型,尽量不要使用与具体硬件或软件环境关系密切的变量。
说明:使用标准的数据类型,有利于程序的移植。
(7) 结构的功能要单一,是针对一种事务的抽象。
说明:设计结构时应力争使结构代表一种现实事务的抽象,而不是同时代表多种。结构中的各元素应代表同一事务的不同侧面,而不应把描述没有关系或关系很弱的不同事务的元素放到同一结构中。
(8) 仔细设计结构中元素的布局与排列顺序,使结构容易理解、节省占用空间,并减少引起误用现象。
(9) 编程时,要注意数据类型的强制转换。
说明:当进行数据类型强制转换时,其数据的意义、转换后的取值等都有可能发生变化,而这些细节若考虑不周,就很有可能留下隐患。
(10)当声明用于分布式环境或不同CPU间通信环境的数据结构时, 必须考虑机器的字节顺序、使用的位域及字节对齐等问题 。
10.6 函数、过程
(1) 对所调用函数的错误返回码要仔细、全面地处理。
(2) 明确函数功能,精确(而不是近似)地实现函数设计。
(3) 编写可重入函数时,应注意局部变量的使用(如编写C/C++语言的可重入函数时,应使用auto即缺省态局部变量或寄存器变量)。
说明:编写C/C++语言的可重入函数时,不应使用static局部变量,否则必须经过特殊处理,才能使函数具有可重入性。
(4) 编写可重入函数时,若使用全局变量,则应通过关中断、信号量(即P、V操作)等手段对其加以保护。
(5) 在同一项目组应明确规定对接口函数参数的合法性检查应由函数的调用者负责还是由接口函数本身负责,缺省是由函数调用者负责。
说明:对于模块间接口函数的参数的合法性检查这一问题,往往有两个极端现象,即:要么是调用者和被调用者对参数均不作合法性检查,结果就遗漏了合法性检查这一必要的处理过程,造成问题隐患;要么就是调用者和被调用者均对参数进行合法性检查,这种情况虽不会造成问题,但产生了冗余代码,降低了效率。
(6) 防止将函数的参数作为工作变量。
说明:将函数的参数作为工作变量,有可能错误地改变参数内容,所以很危险。对必须改变的参数,最好先用局部变量代之,最后再将该局部变量的内容赋给该参数。
(7) 函数的规模尽量限制在200行以内。
(8) 一个函数仅完成一件功能。
(9) 为简单功能编写函数。
说明:虽然为仅用一两行就可完成的功能去编函数好象没有必要,但用函数可使功能明确化,增加程序可读性,亦可方便维护、测试。
(10)不要设计多用途面面俱到的函数。
说明:多功能集于一身的函数,很可能使函数的理解、测试、维护等变得困难
(11)函数的功能应该是可以预测的,也就是只要输入数据相同就应产生同样的输出。
说明:带有内部“存储器”的函数的功能可能是不可预测的,因为它的输出可能取决于内部存储器(如某标记)的状态。这样的函数既不易于理解又不利于测试和维护。在C/C++语言中,函数的static局部变量是函数的内部存储器,有可能使函数的功能不可预测,然而,当某函数的返回值为指针类型时,则必须是STATIC的局部变量的地址作为返回值,若为AUTO类,则返回为错针。
(12)尽量不要编写依赖于其他函数内部实现的函数,即函数的独立性要求。
(13)避免设计多参数函数,不使用的参数从接口中去掉。
说明:目的减少函数间接口的复杂度。
(14)检查函数所有参数输入的有效性。
(15)检查函数所有非参数输入的有效性,如数据文件、公共变量等。
说明:函数的输入主要有两种:一种是参数输入;另一种是全局变量、数据文件的输入,即非参数输入。函数在使用输入之前,应进行必要的检查。
(16)函数名应准确描述函数的功能。
(17)避免使用无意义或含义不清的动词为函数命名。
说明:避免用含义不清的动词如process、handle等为函数命名,因为这些动词并没有说明要具体做什么。
(18)函数的返回值要清楚、明了,让使用者不容易忽视错误情况。
(19)在调用函数填写参数时,应尽量减少没有必要的默认数据类型转换或强制数据类型转换。
说明:因为数据类型转换或多或少存在危险。
(20)避免函数中不必要语句,防止程序中的垃圾代码。
说明:程序中的垃圾代码不仅占用额外的空间,而且还常常影响程序的功能与性能,很可能给程序的测试、维护等造成不必要的麻烦。
(21)如果多段代码重复做同一件事情,那么在函数的划分上可能存在问题。
(22)功能不明确较小的函数,特别是仅有一个上级函数调用它时,应考虑把它合并到上级函数中,而不必单独存在。
(23)减少函数本身或函数间的递归调用。仔细分析模块的功能及性能需求,并进一步细分,同时若有必要画出有关数据流图,据此来进行模块的函数划分与组织。
说明: 函数的划分与组织是模块的实现过程中很关键的步骤, 如何划分出合理的函数结构,关系到模块的最终效率和可维护性、可测性等。根据模块的功能图或/及数据流图映射出函数结构是常用方法之一。
(24)在多任务操作系统的环境下编程,要注意函数可重入性的构造。
说明:可重入性是指函数可以被多个任务进程调用。在多任务操作系统中,函数是否具有可重入性是非常重要的,因为这是多个进程可以共用此函数的必要条件。另外,编译器是否提供可重入函数库,与它所服务的操作系统有关,只有操作系统是多任务时,编译器才有可能提供可重入函数库。如DOS下BC和MSC等就不具备可重入函数库,因为DOS是单用户单任务操作系统。
(25)避免使用BOOL参数。
说明:原因有二,其一是BOOL参数值无意义,TURE/FALSE的含义是非常模糊的,在调用时很难知道该参数到底传达的是什么意思;其二是BOOL参数值不利于扩充。还有NULL也是一个无意义的单词。
(26)对于提供了返回值的函数,在引用时最好使用其返回值。
(27)当一个过程(函数)中对较长变量(一般是结构的成员)有较多引用时,可以用一个意义相当的宏代替。
说明:这样可以增加编程效率和程序的可读性。
示例:在某过程中较多引用TheReceiveBuffer[FirstSocket].byDataPtr,
则可以通过以下宏定义来代替:
# define pSOCKDATA TheReceiveBuffer[FirstScoket].byDataPtr
10.7 效率性
(1) 编程时要经常注意代码的效率。
说明:代码效率分为全局效率、局部效率、时间效率及空间效率。全局效率是站在整个系统的角度上的系统效率;局部效率是站在模块或函数角度上的效率;时间效率是程序处理输入任务所需的时间长短;空间效率是程序所需内存空间,如机器代码空间大小、数据空间大小、栈空间大小等。
(2) 在保证软件系统的正确性、稳定性、可读性及可测性的前提下,提高代码效率。
说明:不能一味地追求代码效率,而对软件的正确性、稳定性、可读性及可测性造成影响。
(3) 局部效率应为全局效率服务,不能因为提高局部效率而对全局效率造成影响。
(4) 过对系统数据结构的划分与组织的改进,以及对程序算法的优化来提高空间效率。
(5) 循环体内工作量最小化
说明:应仔细考虑循环体内的语句是否可以放在循环体之外,使循环体内工作量最小,从而提高程序的时间效率。
(6) 仔细分析有关算法,并进行优化。
(7) 仔细考查、分析系统及模块处理输入(如事务、消息等)的方式,并加以改进。
(8) 对模块中函数的划分及组织方式进行分析、优化,改进模块中函数的组织结构,提高程序效率。
(9) 不应花过多的时间拼命地提高调用不很频繁的函数代码效率。
(10)要仔细地构造或直接用汇编编写调用频繁或性能要求极高的函数。
说明:只有对编译系统产生机器码的方式以及硬件系统较为熟悉时,才可使用汇编嵌入方式。嵌入汇编可提高时间及空间效率,但也存在一定风险。
(11)在多重循环中,应将最忙的循环放在最内层。
说明:减少CPU切入循环层的次数。
(12)尽量减少循环嵌套层次。
(13)避免循环体内含判断语句,应将循环语句置于判断语句的代码块之中。
说明:目的是减少判断次数。循环体中的判断语句是否可以移到循环体外,要视程序的具体情况而言,一般情况,与循环变量无关的判断语句可以移到循环体外,而有关的则不可以。
(14)尽量用乘法或其它方法代替除法,特别是浮点运算中的除法。
说明:浮点运算除法要占用较多CPU资源。
10.8 质量保证
(1) 代码质量保证优先原则:
a) 正确性,指程序要实现设计要求的功能。
b) 稳定性、安全性,指程序稳定、可靠、安全。
c) 可测试性,指程序要具有良好的可测试性。
d) 规范/可读性,指程序书写风格、命名规则等要符合规范。
e) 全局效率,指软件系统的整体效率。
f) 局部效率,指某个模块/子模块/函数的本身效率。
g) 个人表达方式/个人方便性,指个人编程习惯。
(2) 只引用属于自己的存贮空间。
说明:若模块封装的较好,那么一般不会发生非法引用他人的空间。
(3) 防止引用已经释放的内存空间。
说明:在实际编程过程中,稍不留心就会出现在一个模块中释放了某个内存块(如C语言指针),而另一模块在随后的某个时刻又使用了它。要防止这种情况发生。
(4) 过程/函数中分配的内存,在过程/函数退出之前要释放。
(5) 过程/函数中申请的(为打开文件而使用的)文件句柄,在过程/函数退出之前要关闭。
说明:分配的内存不释放以及文件句柄不关闭,是较常见的错误,而且稍不注意就有可能发生。这类错误往往会引起很严重后果,且难以定位。 示例:下函数在退出之前,没有把分配的内存释放。
(6) 防止内存操作越界。
说明:内存操作主要是指对数组、指针、内存地址等的操作。内存操作越界是软件系统主要错误之一,后果往往非常严重,所以当我们进行这些操作时一定要仔细小心。
(7) 系统运行之初,要初始化有关变量及运行环境,防止未经初始化的变量被引用。
(8) 系统运行之初,要对加载到系统中的数据进行一致性检查。
说明:使用不一致的数据,容易使系统进入混乱状态和不可知状态。
(9) 严禁随意更改其它模块或系统的有关设置和配置。
说明:编程时,不能随心所欲地更改不属于自己模块的有关设置如常量、数组的大小等
(10)充分了解系统的接口之后,再使用系统提供的功能。
(11)编程时,要防止差1错误。
说明:此类错误一般是由于把“<=”误写成“<”或“>=”误写成“>”等造成的,由此引起的后果,很多情况下是很严重的,所以编程时,一定要在这些地方小心。当编完程序后,应对这些操作符进行彻底检查。
(12)要时刻注意易混淆的操作符。当编完程序后,应从头至尾检查一遍这些操作符,以防止拼写错误。
说明:形式相近的操作符最容易引起误用,如C/C++中的“=”与“==”、“|”与“||”、“&”与“&&”等,若拼写错了,编译器不一定能够检查出来。
(13)有可能的话, if语句尽量加上else分支, 对没有else分支的语句要小心对待; switch语句必须有default分支。
(14)要滥用goto语句。
说明:goto语句会破坏程序的结构性,所以除非确实需要,最好不使用goto语句。
(15)不使用与硬件或操作系统关系很大的语句,而使用建议的标准语句,以提高软件的可移植性和可重用性。
(16)除非为了满足特殊需求,避免使用嵌入式汇编。
(17)时刻注意表达式是否会上溢、下溢。
示例:如下程序将造成变量下溢。
unsigned char size ;
while (size-- >= 0) // 将出现下溢
{
... // program code
}
当size等于0时,再减1不会小于0,而是0xFF,故程序是一个死循环。应如下修改。
char size; // 从unsigned char 改为char
while (size-- >= 0)
{
... // program code
}
10.9 代码测试与维护
(1) 单元测试要求至少达到语句覆盖。
(2) 单元测试开始要跟踪每一条语句,并观察数据流及变量的变化。
(3) 清理、整理或优化后的代码要经过审查及测试。
(4) 发现错误立即修改,并且要记录下来。
(5) 仔细设计并分析测试用例,使测试用例覆盖尽可能多的情况,以提高测试用例的效率。
(6) 尽可能模拟出程序的各种出错情况,对出错处理代码进行充分的测试。
(7) 仔细测试代码处理数据、变量的边界情况。
(8) 留测试信息,以便分析、总结经验及进行更充分的测试。
(9) 不应通过“试”来解决问题,应寻找问题的根本原因。
(10)对自动消失的错误进行分析,搞清楚错误是如何消失的。
(11)除代码运行的随机性(如去掉无用的数据、代码及尽可能防止并注意函数中的“内部寄存器”等),让函数运行的结果可预测,并使出现的错误可再现。
10.10 宏定义
(1) 用宏定义表达式时,要使用完备的括号。
示例:如下定义的宏都存在一定的风险。
#define RECTANGLE_AREA( a, b ) a * b
正确的定义应为:
#define RECTANGLE_AREA( a, b ) ((a) * (b))
(2) 将宏所定义的多条表达式放在大括号中。
(3) 使用宏时,不允许参数发生变化。
示例:如下用法可能导致错误。
#define SQUARE( a ) ((a) * (a))
int a = 5;
int b;
b = SQUARE( a++ ); // 结果:a = 7,即执行了两次增1。
第十一章 电脑使用规定
第一条 实验室成员如果没有电脑,可以向实验室提出申请。
第二条 实验室电脑实行个人负责制度,如有出现问题由电脑申请人直接负责。
第三条 电脑里面建立文件尽量规范,使得见其名就知其意。
第四条 严禁擅自移动、修改或删除其他人员的文件、资料,否则后果自负。
第五条 禁止在资料机上删除文件、修改文件、安装其他软件。
第六条 资料机由专人管理,每半年对实验室的资料实行归类整理,并建立相应的文件夹,其他人员只能查阅、检索资料机。
第十二章 实验室的活动安排
1、 每逢重要节假日时,新疆大学创新实验室可根据情况,适当安排活动。
2、 新疆大学创新实验室根据需要,会适当安排优秀人员去其他兄弟院校参观见学。
3、 新疆大学创新实验室根据需要定期组织讨论会,交流学习心得,分享学习体会,并由专人负责记录并存档。
4、 安排适当体育活动,以增强体质。
5、 安排实验班之间举行英语比赛。
6、 每年举行年终总结大会。
第十三章 创新实验室奖励方案
为了提高创新实验室的整体学术水平,增强队员的积极性,表彰队员的原创性成果,并树立良好的学术环境。创新实验室特制定以下奖励措施,具体奖励金额见附录。
一、 学术论文
要求:
1. 所有与实验室成果有关的拟投论文需送实验室负责老师处审查修改后方可投出。严禁在老师不知情的情况下投稿。收到审稿意见,需对论文进行修改,需要经过老师审核。
2. 稿件的内容严禁抄袭他人成果,凡引用他人的成果,需按论文要求详细说明其出处。
3. 文章的署名应与老师商定,并由老师最终确定。
4. 论文发表和录用等通知,应该及时向导师汇报。
5. 鼓励发表SCI或者EI水平的论文。
6. 对于高水平的论文,所有的审稿费以及版面费均由创新实验室来支出。所获得的稿酬由第一作者进行全面支配。
二、 荣誉奖励
若以创新实验室名义或者创新实验室组织参加的竞赛或者成果申请,所获奖金将全交由创新实验室作为发展基金,奖金根据创新实验室奖励规则进行统一分配。
三、 其他奖励
1.对于在创新实验室里设计的作品在年终进行评比,根据所获奖励等级将获得一定的物质奖励。
2.实验室优秀人员经过实验室教师的一致同意后,可以获得1个创新学分。
附录:
类型 |
级别 |
金额(元) |
论文 |
A级别(SCI) |
5000 |
B级别(EI) |
3000 |
重要核心期刊 |
1000 |
国际会议以及其他期刊 |
300 |
荣誉 |
国家级特等奖 |
1500 |
国家级一等奖 |
1000 |
国家级二等奖 |
800 |
国家级三等奖 |
600 |
自治区级特等奖 |
600 |
自治区级一等奖 |
400 |
自治区级二等奖 |
300 |
自治区级三等奖 |
200 |
校级一等奖 |
200 |
校级二等奖 |
150 |
校级三等奖 |
100 |
注:论文的核心期刊分类参照《新疆大学论文分类办法》
第十四章 创新实验室惩罚措施
1、 凡是无故缺勤两次以上者,视为主动退出实验室,永不录用。
2、 凡是违背实验室规则的人员,经提醒后仍不改正或造成事故,情节严重的,立即开除出实验室,并永久不能进入实验室,并上报学院及学校按有关规定对当事人进行纪律处分。
3、 对于在实验室看电影、打游戏以及上网聊天的同学第一次发现进行口头警告,第二次直接开除实验室。
4、 对未及时做好清洁的同学,第一次发现处罚连续扫两次实验室,第二次发现处罚扫一个星期实验室,第三次发现未扫实验室,逐出实验室。
5、 损坏公物照价赔偿,如是故意损坏,按正常价格的双倍赔偿。
第十五章 标志和文化
实验室标志
新疆大学创新实验室的标志以“创新”的首字母“CX”为原型进行创作的,中间的“X”其实又是人形,突出新疆大学创新实验室以人为本,创新实践的基本理念,同时,寓意创新实践活动是以人为主体。人头又是一只眼睛,表明创新实验室的成员充满了智慧,对知识的渴望。新疆大学创新实验室倡导先做人后做事。
实验室文化
创新实验室将“明德至善,智圆行方”作为实验室发展的基本理念,前者在于育人,后者注重实践创新。
“明德至善”意思是,大学的宗旨在于弘扬光明正大的品德,在于使人弃旧图新,在于使人达到最完善的境界。知道应达到的境界才能够志向坚定;志向坚定才能够镇静不躁;镇静不躁才能够心安理得;心安理得才能够思虑周祥;思虑周祥才能够有所收获。古代那些要想在天下弘扬光明正大品德的人,先要治理好自己的国家;要想治理好自己的国家,先要管理好自己的家庭和家族;要想管理好自己的家庭和家族,先要修养自身的品性;要想修养自身的品性,先要端正自己的心思;要想端正自己的心思,先要使自己的意念真诚;要想使自己的意念真诚,先要使自己获得知识;获得知识的途径在于认识、研究万事万物。通过对万事万物的认识、研究后才能获得知识;获得知识后意念才能真诚;意念真诚后心思才能端正;心思端正后才能修养品性;品性修养后才能管理好家庭和家族;管理好家庭和家族后才能治理好国家;治理好国家后天下才能太平。
“智圆行方”要的是科学诚实的态度,而不是耍小聪明。事物的发展,都是要遵循一定的客观规律的,违背客观规律,就得付出代价。“智圆行方”是人生的理想追求,它是完美的。我们知道,它是在中国各种思想流派基础上取其精华,舍其糟粕,兼收并蓄,不断创新的结果,因此,它的价值取向是积极的而不是消极的。所以,即便人们知道这种至高至上的目标可望而不可即,但是并不排除人们推崇它,追求它,并以它为理想。但是,要切记,它有排它性。一件完美的事物容不得龌龊的行为来玷污它。
其次,“智圆行方”的基本原则是诚信自律,而不是圆滑世故。中国是个历史悠久的文明古国,诚信一向是中国人引以为自豪的美德,更是中华民族的优良传统。
再次,“智圆行方”的价值取向是追求进步,不断创新,而不是循规蹈矩,墨守成规。“智圆行方”不是要把每个人变成循规蹈矩的机器人,而是坚持以人为本的理念,重视人的因素,围绕着提高素质,加强培训这个前提做好管理等工作。
附则
1、 本制度由新疆大学创新实验室负责起草、修订和解释。
2、 本制度自2010年09月01日起开始执行。
3、 本制度修改于2012年12月。