




已阅读5页,还剩38页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第五章安全编码 5 1什么是软件编码5 2编码方法5 3代码审核 5 1什么是软件编码 正确理解软件编码 1 什么是软件编码 2 程序员应具备的能力 3 软件编码过程 5 1 1什么是软件编码 1 2 5 1 1什么是软件编码 2 2 理解软件编码 复杂地讲 软件编码是一个系统工程 是一个复杂而动态的过程 包括程序设计和程序实现 即如何正确的理解用户需求和软件设计的思想 如何正确的根据软件设计进行程序设计 如何正确而高效的进行代码编写和测试 软件编码是设计的继续 会影响软件质量和可维护性 程序员就是软件工程师 兼顾设计和编码 国内对好程序员的要求是比较高的 不光要掌握一门编程语言 熟悉软件编码 还要全方位地了解软件设计 这样才能成为一个合格的程序员 真正的软件从业人员 5 1 2程序员应具备的能力 1 3 必备能力 英语阅读功底 数学功底 算法 做事的条理性 认识事务的能力 抽象 模型 结构 层次 计算机软 硬件基础知识 SQL编程 拿来主义和拿来的能力 基本功 基本原理和实践 欲速则不达 5 1 2程序员应具备的能力 2 3 热情和勇气 热情乐天 摈弃绝望 软件行业千变万化 技术日新月异 随时有面对无知的勇气 随时有承认错误的勇气 随时准备加班精通一门编程语言 了解一点主流桌面应用程序程序开发语言 了解一点主流网络应用程序开发技术 了解一点主流关系型数据库管理系统 不同的程序设计语言只代表其编程元素和规则不同 但基本的编程 方法都是相通的 掌握了一门即可掌握其它 5 1 2程序员应具备的能力 3 3 如何使自己迅速成为一个程序员 抓住一切机会 勇于实践 克服恐惧心理 敢于写程序 尽快写程序 从最简单的程序写起 如果有工程机会 无偿也值 不要避重就轻 知难而上 5 1 3软件编码过程 5 2编码方法 5 2 1编码规范5 2 2若干建议 5 2 1编码规范 编码规范的必要性 有助于程序的维护 降低软件生命周期成本 符合项目管理的规律 使团队中相关人员的流动对项目的影响尽可能小 有利于项目的控制与管理 提高程序的可读性 有利于相关设计人员交流 提高软件质量 容易发现代码的问题 调试时比较容易 体现公司形象 5 2 1编码规范 1 文件命名与组织 2 缩进 空格与换行 3 命名规则 4 声明 5 语句 6 注释 命名方法 Pascal 每个单词首字母大写 Camel 第一个单词首字母小写 余下的单词首字母大写 缩写 两个字母的缩写 Pascal命名法两个字母都大写 Camel命名法 如果两个缩写字母是首单词 两个字母都小写 否则按照常规来处理 两个以上字母的缩写都按照常规处理 文件命名与组织 文件的命名一般采用Pascal命名规则 无特殊情况 文件的扩展名小写 文件的扩展名使用统一而且通用的扩展名 如 cs java cpp尽量避免超过2000行的文件 尽量避免一行的长度超过80个字符 缩进 空格与换行 空格 空行不做严格的固定 以使代码清晰为基本原则 空行不影响程序的运行 但可以使代码看起来清晰 增加可读性 因此可以适当的多用 代码的缩进建议使用tab键进行控制 tab键的大小设置为4个空格 每个层次都要进行缩进 如 if isOverFlow returnfalse 缩进 空格与换行 换行 掌握的原则是不要使一行代码特别的长 另外 换行的原则是 在逗号后 操作符前换行 换行与首行要保持缩进 if while do try catch finally等语句后必须有 即使里面只有一条语句或为空 缩进 空格与换行 缩进 空格与换行 Exercise Exercise 命名规则 标识符的名字应当直观且可以拼读 可望文知义 不必进行 解码 例如 CurrentValue与NowValue 变量的名字应当使用 名词 或 形容词 名词 的格式命名 例如 floatvalue floatoldValue 全局函数的名字应当使用 动词 或者 动词 名词 动宾词组 类的成员函数应当只使用 动词 被省略掉的名词就对象本身 例如 DrawBox 全局函数box Draw 类的成员函数 静态变量加前缀s 表示static 例如 staticints initValue 如果不得已使用全局变量 全局变量加前缀g 表示global 例如 intg howManyPeople 类的成员变量加m 表示member 从而避免数据成员与成员函数的参数重名 例如 voidObject SetValue intwidth intheight m width width m height height 声明 每行只定义一个声明 多个声明要分多行来定义 如 intintAge intWeight 不推荐应使用如下的定义形式 intintAge intintWeight 声明的位置 变量要在块的开始的地方集中进行声明 不要何时用到何时临时定义 语句 一行一条语句 注释 要养成良好的代码注释习惯 通常 注释要占实际代码总行数的1 3 同时 要在编写代码前或编写代码的同时进行代码的注释 不要事后补写注释 注释分为多行注释和单行注释 我们的原则是 在类和方法的前面 要写多行注释 在定义类的全局变量 常量 以及方法的内部 使用单行注释 注释的前面与代码之间要有空行即使是单行注释 我们鼓励都要单独一行 不鼓励在语句的后面使用注释 当然 在变量定义的后面使用注释也是允许的 但不建议这么做 另外 在编写注释的时候 建议使用编程语言自己的注释风格 注释 特别注意 如果是在已经发行版本的基础上添加 修改 删除代码 则需要将原先的代码注释掉 而不是直接删除掉 然后添加自己的代码 如 添加新代码的注释 addby 姓名 yyyyMMdd xxx addby 姓名 yyyyMMdd修改代码的注释 updateby 姓名 yyyyMMdd xxxyyy updateby 姓名 yyyyMMdd删除代码的注释 deleteby 姓名 yyyyMMdd xxx deleteby 姓名 yyyyMMdd 命名空间 类名 功能描述 处理流程 算法 姓名 日期 修改 日期 错误编号 备注 版本 程序注释的原则 注释应当浅显 明白 注释不是程序员指南 注释不是标准库函数参考手册 注释的主要任务是答疑解惑而不是增加程序的行数 好的注释是对设计思想的精确表述和清晰展现 5 2 2若干建议 某些 自由的 语言更容易引发内存错误 如C C 要避免产品中出现内存错误 好的编码规范 所选的语言和工具 有效的测试等工作都是有意义的 内存分配方式 从静态存储区域分配 内存在编译时已分配好 在程序的整个运行期间都存在 例如 全局变量 静态变量等 在堆栈上创建 在函数执行期间 函数内的局部变量 包括形参 的存储单元都创建在堆栈上 函数结束时这些存储单元自动释放 堆栈清退 从堆 heap 上分配 也称动态内存分配 程序运行期间用malloc或new申请任意数量的内存 程序员自己掌握释放内存的恰当时机 使用free或delete 5 2 2若干建议 断言 assert 的用法是受限制的 其根本原因在于断言内部的语句在软件的发布版本 Release版 中将变成空语句 不起任何作用 宏定义的优点和缺点同样明显 这种情况下 程序员需要趋利弊害 择善而从 改进算法可以显著提高速度将代码和数据保存在更快的介质上同样可以显著提高速度编译优化选项并不总能提高速度 5 3代码审核 常见的软件编码漏洞源码审查 5 3 1常见的软件编码漏洞 输入检测机制例外处理机制缓冲区溢出SQL注入竞争条件 输入检测机制 输入参数的合法性检查使用白名单 例外处理机制 处理意料之外的事件使用条件判断 缓冲区溢出 防止写缓冲区越界添加检测机制 SQL注入 防止执行非法SQL语句从用户访问接口中删除SQL语句执行机制 竞争条件 避免因未处理死循环 死锁 资源冲突或处理不当造成软件漏洞信号量互斥关键段 5 3 2源码审查 静态代码分析工具计量分析代码分析过程图 静态代码分析工具 PVS StudioCheckstyleFindBugsPMDJtestPC LINT http en wikipedia org wiki List of tools for static code analysis 该网址收录
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 科技素养考试题及答案
- 铸管退火工技能操作考核试卷及答案
- 军事护理考试题及答案
- 救援常识考试题及答案
- 野生植物采集工协作考核试卷及答案
- 有机宝石检验员理念考核试卷及答案
- 铸管退火工设备维护与保养考核试卷及答案
- 课件文案打磨
- 课件文案句子摘抄
- 印花版修复工职业考核试卷及答案
- 高校新生开学动员大会教师代表发言稿范文
- 2025年心内科重症病房CCU临床带教资选拔理论试题(附答案)
- 甬温线特大铁路事故
- 用户运营基础知识培训课件
- 边境电子围栏2025年行业应用前景报告中小企业安全市场拓展
- 【英语】江苏省苏锡常镇2025届高三下学期二模试题(解析版)
- 2024年德州禹城市事业单位引进青年人才真题
- DBJT15-110-2015 广东省建筑防火及消防设施检测技术规程
- 2025年环境保护法知识竞赛题库(附含答案)
- 2025至2030年中国海岛文化旅游行业市场运营现状及投资规划研究建议报告
- 四川信达饰品科技有限公司年产1亿包家居水晶饰品项目环评报告
评论
0/150
提交评论