公司培训lesson 1-代码质量
课堂讲义
- 代码质量五大原则
- 编码规范
- 命名规范。学会合理科学的命名类名、方法名、变量名。命名宗旨:简洁明了,见名只意;了解常用单词缩写
- 注释。是否写根据所处工作环境的需要而决定。将以源代码写成以“注释”的说明类文档为目标
- 缩进。团队应该统一缩进格式。注意Windows平台与Linux平台的编码差异,最好以空格来代替Tab
- 页宽。代码最好的呈现方式是以“块”状呈现。编码规范里往往会要求设置IDE页宽,一行内的代码量不要超过所设置的页宽,超出部分换行切向右对齐
- 不同修饰符,常、静态变量,普通变量的排序方式
- 代码重复
- 实际开发中应避免为了图方便,简单而对某些代码进行粗暴的CTRL C + CTRL V
- 当项目庞大时如何避免对重复代码遗漏,可借助IDE所提供的一些自动检查来规避
- 当出现重复代码时,多想想面向对象原则(抽象,封装,多态)的特性,通过 这些特性去修改重复代码
- 做好团队沟通,避免个团队成员重复的“造轮子”
- 测试代码覆盖率
- 测试代码覆盖率的作用往往是生成某种形式上的报告类文件提供给某种特定人员的产物
- 在项目进度紧张的情况下,快速有效的对有"隐患"代码进行检查,活用main方法做到增量开发
- 后期需对测试报告类进行补全验证
- 了解TDD测试驱动开发
- 依赖项分析
- 代码复杂度
- 不管多复杂的业务,多复杂的算法都应尽最大努力使他们简洁化
- 逻辑逆推,减少逻辑判断嵌套
- 复杂的逻辑条件主动抽象
- 掌握switch与if else的差异化
- 减少循环嵌套,主动将嵌套循环抽象
- 掌握各种循环while,while do , do while ,for , for each,stream等的差异化
- 避免出现大量无营养含量代码,如各种get/set,通过设计模式,反射等手段来解决此类问题
- 编码规范
- 如何提高代码质量
- 结对编程
- 如何有效的结对编程
- 在项目组中尝试与另一团队成员开展结对编程的工作方式
- coding review
- 能够做到代码在“脱手(如提交至版本库)”之前进行自我的codeing review
- 如何有效的在团队中进行coding review
- 在项目组中尝试对每日的有效代码进行coding review
- 开源代码
- 代码质量最好的学习途径,如jdk,spring源代码
- 临摹,模拟源代码的编写方式
- 不断审视,解读这类源代码的编写思维
- 工具运用
- 了解代码检查工具类,如findbug,QAplug,PMD等
- 定期通过这类辅助工具对代码进行检查
- 最大程度的独立解决辅助工具标记出的问题源
- 责任
- 代码质量从侧面意义反应出该开发人员是否对公司,同事,自己称职、负责
- 以上均为方法论,而最根本的核心在于开发人员的工作态度,工作责任心
- 培养自己的工作责任心,势必会在代码质量这块进步
- 结对编程
我的笔记:
代码质量影响因素
- 编码规范
命名、注释(代码就是最好的注释,注意命名和复杂度)、缩进(统一Tab或四个空格)、页宽(成块的整洁的代码)。
代码重复
测试
测试覆盖率、增量开发(在main方法中测试不确定的代码)、TDD(优:bug少,缺:时间消耗多)。
- 代码依赖项
- 代码复杂度
面向过程 -> 抽象重构、if/for不能嵌套超过两层、逻辑太多的地方抽象成方法、减少方法参数、逆推(比如先写false部分)、封装不变,抽象变量。
- 效率
先功能后重构、结合业务场景考虑效率。不要怕暴露问题(结对编程)、项目进度(十分钟以上求助他人)。
如何提高代码质量
- 结对编程
- 代码review
- 开源代码(JDK、Spring)
- 工具运用(findBug等)
- 责任心(你写的代码是给别人看的)
课后作业
需求:某公司人力资源部需对已有薪资体系进行改造。现急需一份员工薪资计算程序导入“员工出勤报表”后生成“员工薪资报表”,具体已知项如下:
- 某公司工种分为干部员工,基层员工两种;
- 干部员工薪资基数为1.68 , 基层员工薪资基数为1.1;
- 薪资计算公式:基本工资/22 × 实际到岗工作日 × 薪资基数 - 社保金额;(忽略个人所得税)
- 社保金额计算公式 :基本工资 × 8% + 基本工资×1% + 基本工资×2%
- 员工签约薪资表
|
工号 |
员工姓名 |
基本薪资 |
工种 |
|
1 |
马云 |
8888 |
干部 |
|
2 |
马化腾 |
8888 |
干部 |
|
3 |
任正非 |
8600 |
干部 |
|
4 |
刘亦菲 |
3500 |
基层 |
|
5 |
沈腾 |
5800 |
基层 |
|
6 |
刘谋 |
6000 |
基层 |
|
7 |
陈意涵 |
4000 |
基层 |
|
8 |
林志玲 |
7000 |
干部 |
|
9 |
孙红雷 |
7500 |
基层 |
- 员工1月出勤报表
|
工号 |
出勤天数 |
|
1 |
10.5 |
|
2 |
12 |
|
3 |
20 |
|
4 |
22 |
|
5 |
21 |
|
6 |
18 |
|
7 |
22 |
|
8 |
20 |
|
9 |
21.5 |
- 员工薪资报表格式
|
工号 |
姓名 |
实际出勤天数 |
当月薪资 |
社保扣款 |
其他扣款 |
实际薪资 |
附上作业代码,欢迎指正:
公司培训lesson 1-代码质量的更多相关文章
- (转)提高代码质量---one
1. 摘要 这是烂代码系列的第二篇,在文章中我会跟大家讨论一下如何尽可能高效和客观的评价代码的优劣. 在发布了关于烂代码的那些事(上)之后,发现这篇文章竟然意外的很受欢迎,很多人也描(tu)述(cao ...
- CODING DevOps 线下沙龙回顾一:DevOps 代码质量实战
11 月 22 日,由 CODING 主办的 DevOps 技术沙龙系列「质量」专场在上海圆满结束.在活动现场,四位来自腾讯等知名企业的技术大咖们分享了研发质量与效能的实战经验,与观众们共同探讨如何采 ...
- ESLint 检查代码质量
利用 ESLint 检查代码质量 其实很早的时候就想尝试 ESLint 了,但是很多次都是玩了一下就觉得这东西巨复杂,一执行检查就是满屏的error,简直是不堪入目,遂放弃.直到某天终于下定决心深入看 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用详解
提高Java代码质量的Eclipse插件之Checkstyle的使用详解 CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发人员遵守某些编码规范的工具.它能够自动化代 ...
- 提高Java代码质量的Eclipse插件之Checkstyle的使用具体解释
CheckStyle是SourceForge下的一个项目,提供了一个帮助JAVA开发者遵守某些编码规范的工具.它可以自己主动化代码规范检查过程.从而使得开发者从这项重要可是枯燥的任务中解脱出来. Ch ...
- 如何保障Go语言基础代码质量?
为什么要谈这个topic? 实践中,质量保障体系的建设,主要针对两个目标: 一是不断提高目标业务测试覆盖率,保障面向客户的产品质量:二就是尽可能的提高人效,增强迭代效率.而构建全链路质量卡点就是整个体 ...
- 为公司架构一套高质量的 Vue UI 组件库
有没有曾遇过,产品要我们实现一个功能,但是 iview 或者 elementui 不支持,我们然后义正言辞的说,不好意思,组件库不支持,没法做到. 有没有曾和设计师争论得面红耳赤,其实也是因为组件库暂 ...
- 还不会用FindBugs?你的代码质量很可能令人堪忧
前言 项目中代码质量,往往需要比较有经验的程序员的审查来保证.但是随着项目越来越大,代码审查会变得越来越复杂,需要耗费越来越多的人力.而且程序员的经验和精力都是有限的,能审查出问题必定有限.而在对代码 ...
- [代码质量] 代码质量管控 -- 复杂度检测 (JavaScript)
转载自: https://juejin.im/post/59bb8b546fb9a00a4247532e 背景 代码的复杂度是评估一个项目的重要标准之一.较低的复杂度既能减少项目的维护成本,又能避免一 ...
随机推荐
- 如何修改SQL Server 2008数据库服务器名称
在做数据库发布订阅的时候我们经常要碰到要使用服务器名称来进行. 那么我们经常会碰到的问题是,现在开始大量的使用云服,我们只需要一台服务器搭建好环境,做一个备份镜像,还原到其他的服务器上就可以了,但是问 ...
- <<网络是怎样连接的>>笔记第2章用电信号传输Tcp/ip数据
创建套接字: 协议栈的内部结构.套接字的实体,以及创建套接字的操作过程 连接服务器: “连接”具体是进行怎样的操作,在这个过程中协议栈到底是如何工作的, 以及客户端和服务器是如何进行交互的. 收发数据 ...
- org.springframework.beans.factory.BeanCreationException: sqlSessionFactory
sqlSessionFactory实例化错误 pom默认导入的jar包中存在低版本,导致实例化sqlSessionFactory错误,删除此jar包即可
- bzoj2594
题解: lct维护最小生成树 首先,先对于每一条边,生成一个点,这个点连接这一条边的两个端点 点的值为边的权值 其他点的权值都是0 那么每一次查找i-j路径上面最小值,就变成查找树上路径点权最小值 按 ...
- CentOS7 Could not retrieve mirrorlist http://mirrorlist.centos.org/?...
在执行命令 sudo yum clean expire-cache 清理完过期的缓存后,再执行yum install 或 update命令都失败了.原因是清理过期缓存结果不该被清理的也删掉了,可能是y ...
- Terminal shortcuts
<backspace> 删除 <ctrl+l> 清空屏幕, 相当于clear <ctrl+e> 光标跳至命令结尾 <ctrl+a> 光标跳至命令开始 & ...
- antd中form自定义rules
1.使用getFieldDecorator <FormItem label="手机号" > {getFieldDecorator('phone', { initialV ...
- rabbitmq学习(一):AMQP协议,AMQP与rabbitmq的关系
前言 当学习完AMQP的基本概念后,可以到http://tryrabbitmq.com/中利用rabbitmq模拟器进行消息的模拟发送和接收 一.什么是AMQP,AMQP与rabbitmq的关系 AM ...
- 《DSP using MATLAB》Problem 2.7
1.代码: function [xe,xo,m] = evenodd_cv(x,n) % % Complex signal decomposition into even and odd parts ...
- Linux下软件安装方法
1.交叉编译: ./configure --prefix=/usr/local/XXX ...... --host=armeg:./configure --prefix=/media/ubuntu/w ...