公司培训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 背景 代码的复杂度是评估一个项目的重要标准之一.较低的复杂度既能减少项目的维护成本,又能避免一 ...
随机推荐
- 【Python】模块学习之matplotlib柱状图、饼状图、动态图及解决中文显示问题
前言 众所周知,通过数据绘图,我们可以将枯燥的数字转换成容易被人们接受的图表,从而让人留下更加深刻的印象.而大多数编程语言都有自己的绘图工具,matplotlib就是基于Python的绘图工具包,使用 ...
- Tensorboard 的使用笔记
参考的教程: https://www.tensorflow.org/guide/summaries_and_tensorboard 遇到的错误: File "/usr/local/lib/p ...
- charles抓取https中出现unknow
http正常抓包,https则出现unknown 1.安装证书 Help->SSL Proxying->Install Charles Root Certificate 但是!!!装完并没 ...
- 114. Flatten Binary Tree to Linked List -- 将二叉树转成链表(in-place单枝树)
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
- python学习笔记(六)---sublime text3 创建python项目
1.创建项目 依次鼠标左键点击Project>Add Folder to Project...,选择test文件夹: 2.保存项目 依次鼠标左键点击Project>Save Project ...
- Bayes' theorem (贝叶斯定理)
前言 AI时代的到来一下子让人感觉到数学知识有些捉襟见肘,为了不被这个时代淘汰,我们需要不断的学习再学习.其中最常见的就是贝叶斯定理,这个定理最早由托马斯·贝叶斯提出. 贝叶斯方法的诞生源于他生前为解 ...
- Centos7 防火墙常用命令 开启 关闭防火墙
如果你的系统上没有安装使用命令安装 #yum install firewalld //安装firewalld 防火墙 开启服务 # systemctl start firewalld.service ...
- OMAP4之DSP核(Tesla)软件开发学习(二)Linux内核驱动支持OMAP4 DSP核
注:必须是Linux/arm 3.0以上内核才支持RPMSG,在此使用的是.config - Linux/arm 3.0.31 Kernel Configuration.(soure code fro ...
- IIS经典模式与集成模式
在IIS7.0中Web应用程序有两种配置形式:经典和集成 经典模式 经典模式是为了与之前的版本兼容,使用ISAPI扩展来调用ASP.NET运行库,原先运行于IIS6.0下的Web应用程序迁移到IIS7 ...
- Try Ubuntu Landscape on Xenial (by quqi99)
版权声明:可以任意转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 (http://blog.csdn.net/quqi99) Landscape is used for mana ...